Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

wjDataDecode.js 4.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. "use strict";
  2. var iPackageLen, _wjUtils = require("./wjUtils.js"),
  3. _wjUtils2 = _interopRequireDefault(_wjUtils);
  4. function _interopRequireDefault(t) {
  5. return t && t.__esModule ? t : {
  6. default: t
  7. }
  8. }
  9. var bleCount, rxCount = 0,
  10. strTemData = "",
  11. strRxBuffer = "",
  12. isPagFinish = !0;
  13. function decode_GB(t) {
  14. var e = 0,
  15. a = {},
  16. r = _wjUtils2.default.byteArray2hexStr(t);
  17. _wjUtils2.default.showLog("WJ当前接受包的数据:", r);
  18. var s = _wjUtils2.default.hexStr2byteArray(r);
  19. if (1 < s.byteLength && 80 == s[0] && 1 == isPagFinish ? (isPagFinish = !1, iPackageLen = s[3], strTemData = r) :
  20. strTemData += r, strTemData.length / 2 >= iPackageLen + 5) {
  21. rxCount += 1, isPagFinish = !0;
  22. var i = _wjUtils2.default.hexStr2byteArray(strTemData);
  23. _wjUtils2.default.showLog("接受完第", rxCount, "包数据,内容 ", strTemData);
  24. for (var o = 0; o < iPackageLen + 4; o++) e ^= i[o];
  25. if (i[strTemData.length / 2 - 1] != e) return _wjUtils2.default.showError("WJ第", rxCount, " 包校验bcc:Error!"), a
  26. .serviceCode = -1, a.serviceInfo = "校验错误。。。", a;
  27. 128 == (128 & i[1]) && (bleCount = ((127 & i[1]) << 8) + i[2], _wjUtils2.default.showLog("总共:", bleCount,
  28. "大包")), _wjUtils2.default.showLog("WJ第", rxCount, " 包校验bcc:ok!"), strRxBuffer += strTemData.substring(8,
  29. strTemData.length - 2)
  30. }
  31. return bleCount <= rxCount ? (a.serviceCode = 0, a.serviceInfo = "数据接收完成!", a.serviceData = {}, a.serviceData
  32. .strData = strRxBuffer) : (a.serviceCode = 1, a.serviceInfo = "数据接收中。。。"), a
  33. }
  34. function decode_WX(t) {
  35. var e = 0,
  36. a = {},
  37. r = _wjUtils2.default.byteArray2hexStr(t);
  38. _wjUtils2.default.showLog("WJ当前接受包的数据:", r);
  39. var s = _wjUtils2.default.hexStr2byteArray(r);
  40. if (1 < s.byteLength && 254 == s[0] && 1 == s[1] && 1 == isPagFinish ? (isPagFinish = !1, iPackageLen = (255 & s[
  41. 2]) << 8, iPackageLen += 255 & s[3], strTemData = r) : strTemData += r, strTemData.length / 2 >=
  42. iPackageLen) {
  43. _wjUtils2.default.showLog("大包长度:", iPackageLen, strTemData.length), isPagFinish = !0, rxCount += 1;
  44. var i = _wjUtils2.default.hexStr2byteArray(strTemData),
  45. o = {},
  46. u = 0,
  47. n = 0,
  48. f = 0;
  49. for (o.FixHead = {}, o.FixHead.MagicNumber = strTemData.substr(2 * u, 2), u++, o.FixHead.Ver = strTemData
  50. .substring(2 * u, 2), u++, o.FixHead.Len = (i[u] << 8) + i[u + 1], u += 2, o.FixHead.CmdId = (i[u] << 8) +
  51. i[u + 1], u += 2, o.FixHead.Seq = (i[u] << 8) + i[u + 1], u += 2, o.ProtoBuf = {}, o.ProtoBuf
  52. .BaseRequest = {}, o.ProtoBuf.BaseRequest.Mark = strTemData.substr(2 * u, 2), u++, f = n = 0; 128 == (128 &
  53. i[u]);) n += (127 & i[u]) << 7 * f, u++, f++;
  54. for (n += (127 & i[u]) << 7 * f, u++, o.ProtoBuf.BaseRequest.Data = strTemData.substr(2 * u, 2 * n), u += n, o
  55. .ProtoBuf.Data = {}, o.ProtoBuf.Data.Mark = strTemData.substr(2 * u, 2), u++, f = n = 0; 128 == (128 & i[
  56. u]);) n += (127 & i[u]) << 7 * f, u++, f++;
  57. for (n += (127 & i[u]) << 7 * f, u++, o.ProtoBuf.Data.Data = strTemData.substr(2 * u, 2 * n), u += n, o.ProtoBuf
  58. .DataType = {}, o.ProtoBuf.DataType.Mark = strTemData.substr(2 * u, 2), u++, f = n = 0; 128 == (128 & i[u]);
  59. ) n += (127 & i[u]) << 7 * f, u++, f++;
  60. n += (127 & i[u]) << 7 * f, u++, o.ProtoBuf.DataType.Varint = n;
  61. for (var l = _wjUtils2.default.hexStr2byteArray(o.ProtoBuf.Data.Data), d = 1; d < l.byteLength - 1; d++) e ^= l[
  62. d];
  63. if (l[l.byteLength - 1] != e) return _wjUtils2.default.showError("WJ第", rxCount, " 包校验bcc:Error!"), a
  64. .serviceCode = -1, a.serviceInfo = "校验错误。。。", a;
  65. 128 == (128 & l[2]) && (bleCount = 1 + (127 & l[2]), _wjUtils2.default.showLog("总共:", bleCount, "大包")),
  66. strRxBuffer += o.ProtoBuf.Data.Data.substr(8, 2 * l[3]), _wjUtils2.default.showLog("WJ第", rxCount,
  67. " 包校验bcc:ok!"), _wjUtils2.default.showLog("接受完第", rxCount, "大包数据,内容 ", strTemData)
  68. }
  69. return bleCount <= rxCount ? (a.serviceCode = 0, a.serviceInfo = "数据接收完成!", a.serviceData = {}, a.serviceData
  70. .strData = strRxBuffer) : (a.serviceCode = 1, a.serviceInfo = "数据接收中。。。"), a
  71. }
  72. function init() {
  73. rxCount = iPackageLen = 0, isPagFinish = !(strRxBuffer = strTemData = "")
  74. }
  75. module.exports = {
  76. decode_GB: decode_GB,
  77. decode_WX: decode_WX,
  78. init: init
  79. };