Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

wjDataInteract.js 4.8KB

1
  1. "use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_wjService=require("./wjService.js"),_wjService2=_interopRequireDefault(_wjService),_wjUtils=require("./wjUtils.js"),_wjUtils2=_interopRequireDefault(_wjUtils),_wjDataDecode=require("./wjDataDecode.js"),_wjDataDecode2=_interopRequireDefault(_wjDataDecode);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var TAG_FUNCTION="function",sendCallback=void 0,TimerID=null;function _StartSendData(s,e){var o={},c=0,u=0;null!=TimerID&&(clearTimeout(TimerID),TimerID=null),_wjDataDecode2.default.init(),TimerID=setTimeout(pro_timeout,1e4),_wjUtils2.default.showLog(TimerID,"开启时钟"),sendCallback=e,_wjService2.default._SetDataListenerCallBack(!0,datacallback),function t(){var e="";40*u>=s[c].length&&(c++,u=0);c<s.length&&(e=s[c].length>=40*(u+1)?s[c].substring(40*u,40*(u+1)):s[c].substring(40*u,s[c].length));if(""==e)_wjUtils2.default.showLog("数据发送完毕!");else{for(var a=_wjUtils2.default.hexStr2byteArray(e),l=new ArrayBuffer(a.byteLength),r=new DataView(l),i=0;i<a.byteLength;i++)r.setUint8(i,a[i]);_wjUtils2.default.showLog("发送数据:",e),_wjService2.default._writeBLECharacteristicValue(l,function(e){0==e.serviceCode?(u++,t()):(_wjUtils2.default.showError(TimerID,"数据发送失败,取消时钟"),null!=TimerID&&(clearTimeout(TimerID),TimerID=null),_wjService2.default._SetDataListenerCallBack(!1),o.serviceCode=-2,o.serviceInfo="数据发送失败",(void 0===sendCallback?"undefined":_typeof(sendCallback))==TAG_FUNCTION&&sendCallback(o))})}}()}function datacallback(e){_wjService2.default._SetDataListenerCallBack(!0,datacallback),_ReceiveData(e)}function pro_timeout(){var e={};_wjUtils2.default.showError(TimerID,"数据接收超时,取消时钟"),null!=TimerID&&(clearTimeout(TimerID),TimerID=null),_wjService2.default._SetDataListenerCallBack(!1),e.serviceCode=-3,e.serviceInfo="数据接收超时",(void 0===sendCallback?"undefined":_typeof(sendCallback))==TAG_FUNCTION&&sendCallback(e)}function _ReceiveData(e){var t,a={},l=_wjUtils2.default.getProtocolType();0==l?t=_wjDataDecode2.default.decode_GB(e):1==l&&(t=_wjDataDecode2.default.decode_WX(e)),0==t.serviceCode&&(l=t.serviceData.strData,"fe010013271300020a001201411a0400000000"==t.serviceData.strData?(null!=TimerID&&(clearTimeout(TimerID),TimerID=null),_wjService2.default._SetDataListenerCallBack(!1),a.serviceCode=0,a.serviceInfo="数据接收成功",a.serviceData=l):(e=PackageDecode(l),console.log("数据接受完成解析",t),null!=e?(_wjUtils2.default.showLog(TimerID,"接收数据成功,取消时钟"),null!=TimerID&&(clearTimeout(TimerID),TimerID=null),_wjService2.default._SetDataListenerCallBack(!1),a.serviceCode=0,a.serviceInfo="数据接收成功",a.serviceData={},a.serviceData.dataBuff=e,a.serviceData.rawData=t.serviceData.strData,console.log("result_DataInteract.serviceData.dataBuff",a.serviceData.dataBuff)):(_wjUtils2.default.showError(TimerID,"数据解析失败,取消时钟"),null!=TimerID&&(clearTimeout(TimerID),TimerID=null),_wjService2.default._SetDataListenerCallBack(!1),a.serviceCode=-1,a.serviceInfo="数据解析失败")),(void 0===sendCallback?"undefined":_typeof(sendCallback))==TAG_FUNCTION)&&sendCallback(a)}function PackageDecode(e){var t,a=_wjUtils2.default.getDATA_TYPE(),l=_wjUtils2.default.hexStr2byteArray(e),r=0,i=l[1],s=l[0];if(_wjUtils2.default.showLog("WJPackageDecode:",e),177==s)return c=_wjUtils2.default.byteArray2hexStr(t);if(0!=i)return _wjUtils2.default.showError("WJ结果码非00"),null;switch(s){case 146:case 176:case 179:case 180:case 178:case 188:return 0==a?(u=7,129==l[5]&&(129==l[6]?(r=255&l[7],u+=1):130==l[6]?(r=l[7]<<8,r+=255&l[8],u+=2):r=255&l[6]),t=l.slice(u,r+u),c=_wjUtils2.default.byteArray2hexStr(t)):1==a&&(t=l.slice(5),c=_wjUtils2.default.APDU2TPDU(_wjUtils2.default.byteArray2hexStr(t))),_wjUtils2.default.showLog("WJ有效数据长度:",c.length/2,c),_wjUtils2.default.showLog("操作类型ok",s),c;case 145:case 148:var o=(255&l[3])<<8,c=(o+=l[2],t=l.slice(4,o+4),_wjUtils2.default.byteArray2hexStr(t));return _wjUtils2.default.showLog("WJ有效数据长度:",o,_wjUtils2.default.byteArray2hexStr(t)),_wjUtils2.default.showLog("操作类型ok",s),c;case 190:case 181:var o=(255&l[3])<<8,u=(o=l[2],6);return 129==l[4]&&(129==l[5]?(r=255&l[6],u+=1):130==l[5]?(r=l[6]<<8,r+=255&l[7],u+=2):r=255&l[5]),t=l.slice(u,u+r),_wjUtils2.default.showLog("WJ有效数据长度:",r,_wjUtils2.default.byteArray2hexStr(t)),_wjUtils2.default.showLog("操作类型ok",s),_wjUtils2.default.byteArray2hexStr(t);default:return _wjUtils2.default.showError("WJ通道类型有误"),null}}module.exports={_StartSendData:_StartSendData,_ReceiveData:_ReceiveData};