您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

jy-bluetooth-obu-DataUtil.js 7.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. var DATA_LENGTH = 190,
  2. FRAME_LENGTH = 40,
  3. Protocol_Type = "genvict",
  4. SEQ = 3,
  5. SN = 1;
  6. function protocolType() {
  7. return Protocol_Type
  8. }
  9. function setProtocolType(a) {
  10. Protocol_Type = a
  11. }
  12. function setPackageLen(a) {
  13. DATA_LENGTH = 2 * (a - 5);
  14. console.log("packageLen:" + DATA_LENGTH / 2)
  15. }
  16. function makeAuthResponse() {
  17. var a = [],
  18. b = new Uint8Array("FE0100124E2100010A06080012024F4B1200".match(/[\da-f]{2}/gi).map(function(a) {
  19. return parseInt(a, 16)
  20. }));
  21. a.push(b.buffer);
  22. return a
  23. }
  24. function makeInitResponse() {
  25. var a = [],
  26. b = "FE0100164E2300020A06080012024F4B100018002000".substring(0, FRAME_LENGTH);
  27. b = new Uint8Array(b.match(/[\da-f]{2}/gi).map(function(a) {
  28. return parseInt(a, 16)
  29. }));
  30. a.push(b.buffer);
  31. b = new Uint8Array("2000".match(/[\da-f]{2}/gi).map(function(a) {
  32. return parseInt(a, 16)
  33. }));
  34. a.push(b.buffer);
  35. return a
  36. }
  37. function makeFrame(a) {
  38. var b = "" + a,
  39. c = parseInt(b.length / DATA_LENGTH),
  40. d = b.length % DATA_LENGTH;
  41. a = [];
  42. for (var e = 0; e < c; e++) a.push(b.substring(e * DATA_LENGTH, e * DATA_LENGTH + DATA_LENGTH));
  43. 0 < d && a.push(b.substring(b.length - d));
  44. b = [];
  45. SN++;
  46. 15 < SN && (SN = 1);
  47. for (c = 0; c < a.length; c++) {
  48. d = "";
  49. d = 0 == c ? numberToHexString(128 + a.length - 1, 1, !0) : numberToHexString(a.length - c - 1, 1, !0);
  50. d = GVPackData(a[c], d);
  51. d = wechatPackData(d);
  52. e = parseInt(d.length / FRAME_LENGTH);
  53. for (var g = d.length % FRAME_LENGTH, f = 0; f < e; f++) {
  54. var h = d.substring(f * FRAME_LENGTH,
  55. f * FRAME_LENGTH + FRAME_LENGTH);
  56. h = new Uint8Array(h.match(/[\da-f]{2}/gi).map(function(a) {
  57. return parseInt(a, 16)
  58. }));
  59. b.push(h.buffer)
  60. }
  61. 0 < g && (d = d.substring(d.length - g), d = new Uint8Array(d.match(/[\da-f]{2}/gi).map(function(a) {
  62. return parseInt(a, 16)
  63. })), b.push(d.buffer))
  64. }
  65. return b
  66. }
  67. function makeCosSendData(a, b) {
  68. b = 0 == parseInt(a.substring(1, 2), 10) ? "80" + tlvPackData(b) : b[0];
  69. a = "A1" + a + numberToHexString(b.length / 2, 2, !1) + b;
  70. return makeFrame(a)
  71. }
  72. function initDeviceSendData() {
  73. return makeFrame("A2")
  74. }
  75. function makePiccChannelSendData(a, b) {
  76. b = 0 == parseInt(a.substring(1, 2), 10) ? "80" + tlvPackData(b) : b[0];
  77. a = "A3" + a + numberToHexString(b.length / 2, 2, !1) + b;
  78. return makeFrame(a)
  79. }
  80. function makeDeviceChannelSendData(a) {
  81. a = "" + a;
  82. a = "A5" + numberToHexString(a.length / 2, 1, !1) + a;
  83. return makeFrame(a)
  84. }
  85. function makeAuthenChannelSendData(a, b) {
  86. a += b;
  87. a = "A6" + numberToHexString(a.length / 2, 2, !1) + a;
  88. return makeFrame(a)
  89. }
  90. function makePiccResetSendData() {
  91. return makeFrame("A900")
  92. }
  93. function makeEsamResetSendData() {
  94. return makeFrame("AA")
  95. }
  96. function makeEsamChannelSendData(a, b) {
  97. if ("pre" == Protocol_Type) {
  98. var c = "AC";
  99. b = 0 == parseInt(a.substring(1, 2), 10) ? "80" + tlvPackData(b) : b[0]
  100. } else b = "80" + tlvPackData(b), c = "A1", a = "20";
  101. a = c + a + numberToHexString(b.length / 2, 2, !1) + b;
  102. return makeFrame(a)
  103. }
  104. function makeDeviceAuthenSendData(a, b) {
  105. a = "C1" + a + b;
  106. a = "AD" + numberToHexString(a.length / 2, 2, !1) + a;
  107. return makeFrame(a)
  108. }
  109. function makeSelfDeviceChannelSendData(a) {
  110. a = "" + a;
  111. a = "AE" + numberToHexString(a.length / 2, 1, !1) + a;
  112. return makeFrame(a)
  113. }
  114. function makeUpdateChannelSendData(a, b) {
  115. a = null == b || 0 >= b.length ? "" + a : a + b;
  116. a = "A0" + numberToHexString(a.length / 2, 1, !1) + a;
  117. return makeFrame(a)
  118. }
  119. function tlvPackData(a) {
  120. for (var b = "", c = 0; c < a.length; c++) {
  121. var d = 256 <= a[c].length / 2 ? "82" + numberToHexString(a[c].length / 2, 2, !1) + a[c] : 128 < a[c].length /
  122. 2 ? "81" + numberToHexString(a[c].length / 2, 1, !1) + a[c] : numberToHexString(a[c].length / 2, 1, !1) + a[
  123. c];
  124. b = b + numberToHexString(c + 1, 1, !1) + d
  125. }
  126. a = b.length / 2;
  127. return 256 <= a ? "82" + numberToHexString(a, 2, !1) + b : 128 < a ? "81" + numberToHexString(a, 1, !1) + b :
  128. numberToHexString(a, 1, !1) + b
  129. }
  130. function wechatPackData(a) {
  131. if (1 > a.length / 256) a = "0A0012" + numberToHexString(a.length / 2, 1, !0) + a + "1800";
  132. else {
  133. var b = numberToHexString((a.length % 256 + 256) / 2, 1, !0),
  134. c = numberToHexString(parseInt(a.length / 256), 1, !1);
  135. a = "0A0012" + b + c + a + "1800"
  136. }
  137. b = numberToHexString(a.length / 2 + 8, 2, !0);
  138. c = numberToHexString(SEQ, 2, !0);
  139. SEQ++;
  140. 15 < SEQ && (SEQ = 1);
  141. return "FE01" + b + "7531" + c + a
  142. }
  143. function GVPackData(a, b) {
  144. var c = numberToHexString(SN, 1, !0);
  145. a = "" + a;
  146. var d = numberToHexString(a.length / 2, 1, !0);
  147. b = "33" + c + b + d + a;
  148. c = 0;
  149. for (a = 1; a < b.length / 2; a++) d = parseInt(b.substring(2 * a, 2 * a + 2), 16), c ^= d;
  150. return b += numberToHexString(c, 1, !0)
  151. }
  152. function numberToHexString(a, b, c) {
  153. a = a.toString(16);
  154. for (var d = a.length; d < 2 * b; d++) a = "0" + a;
  155. a.length > 2 * b && (a = a.substring(a.length - 2 * b));
  156. if (!c) {
  157. b = "";
  158. for (c = a.length - 2; 0 <= c; c -= 2) b += a.substring(c, c + 2);
  159. a = b
  160. }
  161. return a
  162. }
  163. function fromCharCode(a) {
  164. for (var b = "", c = 0; c < a.length / 2; c++) {
  165. var d = a.substring(2 * c, 2 * c + 2);
  166. b += String.fromCharCode(parseInt(d, 16))
  167. }
  168. return b
  169. }
  170. function byteArrayToHexStr(a) {
  171. for (var b = "", c = 0; c < a.length; c++) {
  172. var d = (a[c] & 255).toString(16);
  173. d = 1 === d.length ? "0" + d : d;
  174. b += d
  175. }
  176. return b
  177. }
  178. function hexToString(a) {
  179. for (var b = "", c = 0; c < a.length; c += 2) b += String.fromCharCode(parseInt(a.substr(c, 2), 16));
  180. return b
  181. }
  182. function stringtoHex(a) {
  183. if ("" === a) return "";
  184. for (var b = [], c = 0; c < a.length; c++) b.push(a.charCodeAt(c).toString(16));
  185. return b.join("")
  186. }
  187. function hexToBytes(a) {
  188. for (var b = [], c = 0; c < a.length; c += 2) b.push(parseInt(a.substr(c, 2), 16));
  189. return b
  190. }
  191. function getTime() {
  192. var a = new Date,
  193. b = a.getFullYear(),
  194. c = a.getMonth() + 1,
  195. d = a.getDate();
  196. a.getTime();
  197. var e = a.getHours(),
  198. g = a.getMinutes(),
  199. f = a.getSeconds();
  200. a = a.getMilliseconds();
  201. 1 <= c && 9 >= c && (c = "0" + c);
  202. 0 <= d && 9 >= d && (d = "0" + d);
  203. 0 <= e && 9 >= e && (e = "0" + e);
  204. 0 <= g && 9 >= g && (g = "0" + g);
  205. 0 <= f && 9 >= f && (f = "0" + f);
  206. return b + "-" + c + "-" + d + " " + e + ":" + g + ":" + f + ":" + a
  207. }
  208. function consoleLog(a) {
  209. a = getTime() + "\uff1a" + a + "\n";
  210. console.log(a)
  211. }
  212. module.exports = {
  213. makeAuthResponse: makeAuthResponse,
  214. makeInitResponse: makeInitResponse,
  215. makeFrame: makeFrame,
  216. makeCosSendData: makeCosSendData,
  217. initDeviceSendData: initDeviceSendData,
  218. makePiccChannelSendData: makePiccChannelSendData,
  219. makeDeviceChannelSendData: makeDeviceChannelSendData,
  220. makeAuthenChannelSendData: makeAuthenChannelSendData,
  221. makePiccResetSendData: makePiccResetSendData,
  222. makeEsamResetSendData: makeEsamResetSendData,
  223. makeEsamChannelSendData: makeEsamChannelSendData,
  224. makeDeviceAuthenSendData: makeDeviceAuthenSendData,
  225. makeSelfDeviceChannelSendData: makeSelfDeviceChannelSendData,
  226. makeUpdateChannelSendData: makeUpdateChannelSendData,
  227. numberToHexString: numberToHexString,
  228. protocolType: protocolType,
  229. setProtocolType: setProtocolType,
  230. setPackageLen: setPackageLen,
  231. fromCharCode: fromCharCode,
  232. stringtoHex: stringtoHex,
  233. hexToBytes: hexToBytes,
  234. hexToString: hexToString,
  235. byteArrayToHexStr: byteArrayToHexStr,
  236. consoleLog: consoleLog
  237. };