Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

WJDataDecode.js 3.5KB

1
  1. "use strict";var iPackageLen,_WJUtils=require("./WJUtils.js"),_WJUtils2=_interopRequireDefault(_WJUtils);function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}var bleCount,rxCount=0,strTemData="",strRxBuffer="",isPagFinish=!0;function decode_GB(t){var e=0,a={},t=_WJUtils2.default.byteArray2hexStr(t),r=(_WJUtils2.default.showLog("WJ当前接受包的数据:",t),_WJUtils2.default.hexStr2byteArray(t));if(1<r.byteLength&&80==r[0]&&1==isPagFinish?(isPagFinish=!1,iPackageLen=r[3],strTemData=t):strTemData+=t,strTemData.length/2>=iPackageLen+5){rxCount+=1,isPagFinish=!0;var s=_WJUtils2.default.hexStr2byteArray(strTemData);_WJUtils2.default.showLog("接受完第",rxCount,"包数据,内容 ",strTemData);for(var i=0;i<iPackageLen+4;i++)e^=s[i];if(s[strTemData.length/2-1]!=e)return _WJUtils2.default.showError("WJ第",rxCount," 包校验bcc:Error!"),a.serviceCode=-1,a.serviceInfo="校验错误。。。",a;128==(128&s[1])&&(bleCount=((127&s[1])<<8)+s[2],_WJUtils2.default.showLog("总共:",bleCount,"大包")),_WJUtils2.default.showLog("WJ第",rxCount," 包校验bcc:ok!"),strRxBuffer+=strTemData.substring(8,strTemData.length-2)}return bleCount<=rxCount?(a.serviceCode=0,a.serviceInfo="数据接收完成!",a.serviceData={},a.serviceData.strData=strRxBuffer):(a.serviceCode=1,a.serviceInfo="数据接收中。。。"),a}function decode_WX(t){var e=0,a={},t=_WJUtils2.default.byteArray2hexStr(t),r=(_WJUtils2.default.showLog("WJ当前接受包的数据:",t),_WJUtils2.default.hexStr2byteArray(t));if(1<r.byteLength&&254==r[0]&&1==r[1]&&1==isPagFinish?(isPagFinish=!1,iPackageLen=(255&r[2])<<8,iPackageLen+=255&r[3],strTemData=t):strTemData+=t,strTemData.length/2>=iPackageLen){_WJUtils2.default.showLog("大包长度:",iPackageLen,strTemData.length),isPagFinish=!0,rxCount+=1;var s=_WJUtils2.default.hexStr2byteArray(strTemData),r={},i=0,o=0,u=0;for(r.FixHead={},r.FixHead.MagicNumber=strTemData.substr(2*i,2),r.FixHead.Ver=strTemData.substring(2*++i,2),r.FixHead.Len=(s[++i]<<8)+s[i+1],r.FixHead.CmdId=(s[i+=2]<<8)+s[i+1],r.FixHead.Seq=(s[i+=2]<<8)+s[i+1],i+=2,r.ProtoBuf={},r.ProtoBuf.BaseRequest={},r.ProtoBuf.BaseRequest.Mark=strTemData.substr(2*i,2),i++,u=o=0;128==(128&s[i]);)o+=(127&s[i])<<7*u,i++,u++;for(o+=(127&s[i])<<7*u,r.ProtoBuf.BaseRequest.Data=strTemData.substr(2*++i,2*o),i+=o,r.ProtoBuf.Data={},r.ProtoBuf.Data.Mark=strTemData.substr(2*i,2),i++,u=o=0;128==(128&s[i]);)o+=(127&s[i])<<7*u,i++,u++;for(o+=(127&s[i])<<7*u,r.ProtoBuf.Data.Data=strTemData.substr(2*++i,2*o),i+=o,r.ProtoBuf.DataType={},r.ProtoBuf.DataType.Mark=strTemData.substr(2*i,2),i++,u=o=0;128==(128&s[i]);)o+=(127&s[i])<<7*u,i++,u++;o+=(127&s[i])<<7*u,i++,r.ProtoBuf.DataType.Varint=o;for(var n=_WJUtils2.default.hexStr2byteArray(r.ProtoBuf.Data.Data),f=1;f<n.byteLength-1;f++)e^=n[f];if(n[n.byteLength-1]!=e)return _WJUtils2.default.showError("WJ第",rxCount," 包校验bcc:Error!"),a.serviceCode=-1,a.serviceInfo="校验错误。。。",a;128==(128&n[2])&&(bleCount=1+(127&n[2]),_WJUtils2.default.showLog("总共:",bleCount,"大包")),strRxBuffer+=r.ProtoBuf.Data.Data.substr(8,2*n[3]),_WJUtils2.default.showLog("WJ第",rxCount," 包校验bcc:ok!"),_WJUtils2.default.showLog("接受完第",rxCount,"大包数据,内容 ",strTemData)}return bleCount<=rxCount?(a.serviceCode=0,a.serviceInfo="数据接收完成!",a.serviceData={},a.serviceData.strData=strRxBuffer):(a.serviceCode=1,a.serviceInfo="数据接收中。。。"),a}function init(){rxCount=iPackageLen=0,isPagFinish=!(strRxBuffer=strTemData="")}module.exports={decode_GB:decode_GB,decode_WX:decode_WX,init:init};