You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1
  1. "use strict";var _WJUtils=require("./WJUtils.js"),_WJUtils2=_interopRequireDefault(_WJUtils);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function encode(e,t,a){var r=_WJUtils2.default.getProtocolType(),e=getETCData(e,t,a),t={};return 0==r?t=encode_GB(e):1==r&&(t=encode_WX(e)),t}function getETCData(e,t,a){var r="",r="A0"==a||"A3"==a||"A4"==a||"82"==a||"84"==a||"AC"==a||"A9"==a?a+t+(r=getCommand(e)):e;return _WJUtils2.default.showLog("组拼ETCData完毕:",r.length/2,r),r}function getCommand(e){var t,a=e,r=_WJUtils2.default.getDATA_TYPE(),e=e.length/2,n=new ArrayBuffer(10),s=new DataView(n);return 0==r?(t=256<e?(s.setInt8(0,4+e&255),s.setInt8(1,4+e>>8&255),s.setInt8(2,128),s.setInt8(3,130),s.setInt8(4,e>>8&255),s.setInt8(5,255&e),n.slice(0,6)):128<e&&e<=256?(s.setInt8(0,3+e&255),s.setInt8(1,3+e>>8&255),s.setInt8(2,128),s.setInt8(3,129),s.setInt8(4,e),n.slice(0,5)):(s.setInt8(0,2+e&255),s.setInt8(1,2+e>>8&255),s.setInt8(2,128),s.setInt8(3,e),n.slice(0,4)),a=_WJUtils2.default.byteArray2hexStr(t)+a):1==r&&(s.setInt8(0,255&e),s.setInt8(1,e>>8&255),t=n.slice(0,2),a=_WJUtils2.default.byteArray2hexStr(t)+a),a}function encode_GB(e){var t={},a=_WJUtils2.default.getPagLenMax(),r=parseInt(e.length/2/a),n=(e.length/2%a!=0&&(r+=1),new ArrayBuffer(10));new DataView(n);t.serviceCode=0,t.serviceInfo="encode ok",t.serviceData={},t.serviceData.dataEncode=new Array;for(var s=0;s<r-1;s++)t.serviceData.dataEncode[s]=e.substr(s*a*2,2*a),t.serviceData.dataEncode[s]=getGBFrame(t.serviceData.dataEncode[s],s,r);return t.serviceData.dataEncode[r-1]=e.substring((r-1)*a*2),t.serviceData.dataEncode[r-1]=getGBFrame(t.serviceData.dataEncode[r-1],r-1,r),t}function encode_WX(e){for(var t={},a=_WJUtils2.default.getPagLenMax(),r=parseInt(e.length/2/a),n=(e.length/2%a!=0&&(r+=1),t.serviceCode=0,t.serviceInfo="encode ok",t.serviceData={},t.serviceData.dataEncode=new Array,0),n=0;n<r-1;n++)t.serviceData.dataEncode[n]=e.substr(n*a*2,2*a),t.serviceData.dataEncode[n]=getWXFrame(t.serviceData.dataEncode[n],n,r);return t.serviceData.dataEncode[r-1]=e.substring((r-1)*a*2),t.serviceData.dataEncode[r-1]=getWXFrame(t.serviceData.dataEncode[r-1],r-1,r),t}function getWXFrame(e,t,a){for(var r=e,n=new ArrayBuffer(10),s=new DataView(n),i="",d=0,e=e.length/2,l=(0==t?s.setInt8(0,128+(a-1-t&255)):s.setInt8(0,a-1-t&255),r="3301"+(i=_WJUtils2.default.byteArray2hexStr(n).substring(0,2))+_WJUtils2.default.byte2hexStr(255&e)+r,_WJUtils2.default.hexStr2byteArray(r)),c=1;c<l.length;c++)d^=l[c];r+=_WJUtils2.default.byte2hexStr(d);var u,a=_WJUtils2.default.hexStr2byteArray(r).length;return 127<a?(s.setInt8(0,128+(a%128&255)),s.setInt8(1,a/128&255),i=_WJUtils2.default.byteArray2hexStr(n).substring(0,4),s.setInt8(0,(u=a+8+4+3)>>8&255)):(s.setInt8(0,255&a),i=_WJUtils2.default.byteArray2hexStr(n).substring(0,2),s.setInt8(0,(u=a+8+4+2)>>8&255)),s.setInt8(1,255&u),r="FE01"+_WJUtils2.default.byteArray2hexStr(n).substring(0,4)+"753100000A0012"+i+r+"1800"}function getGBFrame(e,t,a){for(var r=e,n=new ArrayBuffer(10),s=new DataView(n),i=0,e=e.length/2,d=(0==t?(s.setInt8(0,128+(a>>8&255)),s.setInt8(1,255&a)):(s.setInt8(0,t+1>>8&255),s.setInt8(1,t+1&255)),s.setInt8(2,255&e),a=_WJUtils2.default.byteArray2hexStr(n).substring(0,6),_WJUtils2.default.hexStr2byteArray(r="50"+a+r)),l=0;l<d.length;l++)i^=d[l];return r+=_WJUtils2.default.byte2hexStr(i)}module.exports={encode:encode};