Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

kcUtils.js 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. "use strict";
  2. var PROTOCOL_TYPE = 1
  3. , PAGLENMAX = 95
  4. , TRANSFER_TYPE = 0
  5. , DATA_TYPE = 0
  6. , CMD_TYPE = 1;
  7. function showLog() {
  8. if (!(arguments.length < 1)) {
  9. for (var r = arguments[0], t = 1; t < arguments.length; t++)
  10. r += " " + arguments[t];
  11. console.log(r)
  12. }
  13. }
  14. function showError() {
  15. if (!(arguments.length < 1)) {
  16. for (var r = arguments[0], t = 1; t < arguments.length; t++)
  17. r += " " + arguments[t];
  18. console.error(r)
  19. }
  20. }
  21. function byteArray2hexStr(r) {
  22. return Array.prototype.map.call(new Uint8Array(r), function(r) {
  23. return ("00" + r.toString(16)).slice(-2)
  24. }).join("")
  25. }
  26. function hexStr2byteArray(r) {
  27. return new Uint8Array(r.match(/[\da-f]{2}/gi).map(function(r) {
  28. return parseInt(r, 16)
  29. }))
  30. }
  31. function byte2hexStr(r) {
  32. var t = "0123456789abcdef"
  33. , e = "";
  34. return (e += t.charAt(r >> 4)) + t.charAt(15 & r)
  35. }
  36. function array2Str(r) {
  37. for (var t = "", e = 0; e < r.length; e++)
  38. t += r[e];
  39. return t
  40. }
  41. function getProtocolType() {
  42. return PROTOCOL_TYPE
  43. }
  44. function getPagLenMax() {
  45. return PAGLENMAX
  46. }
  47. function getTRANSFER_TYPE() {
  48. return TRANSFER_TYPE
  49. }
  50. function getDATA_TYPE() {
  51. return DATA_TYPE
  52. }
  53. function getCMD_TYPE() {
  54. return CMD_TYPE
  55. }
  56. function APDU2TPDU(r) {
  57. var t = hexStr2byteArray(r)
  58. , e = "";
  59. if ("01" == r.substring(0, 2))
  60. e = r;
  61. else {
  62. for (var n = new Array, o = 0, a = 0; a < t[0]; a++) {
  63. var g = o + 2
  64. , i = o + 2 + t[o + 1];
  65. o += 1 + t[o + 1],
  66. n[a] = r.substring(2 * g, 2 * i)
  67. }
  68. for (a = 0; a < t[0]; a++) {
  69. var u = n[a].length / 2;
  70. e += byte2hexStr(a + 1 & 255) + byte2hexStr(255 & u) + n[a]
  71. }
  72. }
  73. return e
  74. }
  75. function TPDU2APDU(r) {
  76. for (var t = hexStr2byteArray(r), e = "", n = new Array, o = 0, a = t.byteLength; o < a; ) {
  77. var g = t[o++]
  78. , i = t[o++];
  79. n[g - 1] = r.substring(2 * o, 2 * (o + i)),
  80. o += i
  81. }
  82. for (var e = byte2hexStr(255 & n.length), u = 0; u < n.length; u++)
  83. e += byte2hexStr(n[u].length / 2 & 255) + n[u];
  84. return e
  85. }
  86. function hexCharCodeToStr(r) {
  87. var t, r = r.trim(), e = "0x" === r.substr(0, 2).toLowerCase() ? r.substr(2) : r, n = e.length;
  88. if (n % 2 != 0)
  89. return "";
  90. for (var o = [], a = 0; a < n; a += 2)
  91. t = parseInt(e.substr(a, 2), 16),
  92. o.push(String.fromCharCode(t));
  93. return o.join("")
  94. }
  95. function obuSetSleepTimeCmd(r) {
  96. r = "D1" + array2Str(r);
  97. return this.packetData(r)
  98. }
  99. function getActStateCmd() {
  100. return this.packetData("D20200")
  101. }
  102. function getCardBalanceCmd() {
  103. return packetData("a30105805c000204")
  104. }
  105. function packetData(r) {
  106. console.log("开始拆包:" + r);
  107. for (var t, e, n = new Array, o = void 0, a = void 0, g = void 0, i = r.length, o = r.length % 15 == 0 ? parseInt(r.length / 30) : parseInt(r.length / 30) + 1, u = 0; u < o; u++)
  108. a = 0 == u ? "80" + intToHexString(o, 1, !1) : "00" + intToHexString(u + 1, 1, !1),
  109. 30 <= i ? (g = r.substring(15 * u * 2, 15 * (u + 1) * 2),
  110. i -= 30) : g = r.substring(r.length - i, r.length),
  111. t = "5" + parseInt(g.length / 2, 10).toString(16),
  112. e = getBcc(t + a + g),
  113. console.log("组帧:ST:" + t + " CTL:" + a + " DATA:" + g + " BCC:" + e),
  114. n.push(str2array(t + a + g + e).buffer);
  115. return n
  116. }
  117. function intToHexString(r, t, e) {
  118. for (var n = r.toString(16), o = n.length; o < 2 * t; o++)
  119. n = "0" + n;
  120. if (n.length > 2 * t && (n = n.substring(n.length - 2 * t)),
  121. 0 == e) {
  122. for (var a = "", g = n.length - 2; 0 <= g; g -= 2)
  123. a += n.substring(g, g + 2);
  124. n = a
  125. }
  126. return n
  127. }
  128. function sleep(ms) {
  129. return new Promise(resolve => setTimeout(resolve, ms));
  130. }
  131. module.exports = {
  132. showLog: showLog,
  133. byteArray2hexStr: byteArray2hexStr,
  134. hexStr2byteArray: hexStr2byteArray,
  135. showError: showError,
  136. byte2hexStr: byte2hexStr,
  137. getProtocolType: getProtocolType,
  138. getPagLenMax: getPagLenMax,
  139. getTRANSFER_TYPE: getTRANSFER_TYPE,
  140. getDATA_TYPE: getDATA_TYPE,
  141. getCMD_TYPE: getCMD_TYPE,
  142. APDU2TPDU: APDU2TPDU,
  143. TPDU2APDU: TPDU2APDU,
  144. hexCharCodeToStr: hexCharCodeToStr,
  145. obuSetSleepTimeCmd: obuSetSleepTimeCmd,
  146. array2Str: array2Str,
  147. sleep: sleep,
  148. };