12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- "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
- };
|