123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- "use strict";
- var PROTOCOL_TYPE = 1
- , PAGLENMAX = 95
- , TRANSFER_TYPE = 0
- , DATA_TYPE = 0
- , CMD_TYPE = 1;
- function showLog() {
- if (!(arguments.length < 1)) {
- for (var r = arguments[0], t = 1; t < arguments.length; t++)
- r += " " + arguments[t];
- console.log(r)
- }
- }
- function showError() {
- if (!(arguments.length < 1)) {
- for (var r = arguments[0], t = 1; t < arguments.length; t++)
- r += " " + arguments[t];
- console.error(r)
- }
- }
- function byteArray2hexStr(r) {
- return Array.prototype.map.call(new Uint8Array(r), function(r) {
- return ("00" + r.toString(16)).slice(-2)
- }).join("")
- }
- function hexStr2byteArray(r) {
- return new Uint8Array(r.match(/[\da-f]{2}/gi).map(function(r) {
- return parseInt(r, 16)
- }))
- }
- function byte2hexStr(r) {
- var t = "0123456789abcdef"
- , e = "";
- return (e += t.charAt(r >> 4)) + t.charAt(15 & r)
- }
- function array2Str(r) {
- for (var t = "", e = 0; e < r.length; e++)
- t += r[e];
- return t
- }
- function getProtocolType() {
- return PROTOCOL_TYPE
- }
- function getPagLenMax() {
- return PAGLENMAX
- }
- function getTRANSFER_TYPE() {
- return TRANSFER_TYPE
- }
- function getDATA_TYPE() {
- return DATA_TYPE
- }
- function getCMD_TYPE() {
- return CMD_TYPE
- }
- function APDU2TPDU(r) {
- var t = hexStr2byteArray(r)
- , e = "";
- if ("01" == r.substring(0, 2))
- e = r;
- else {
- for (var n = new Array, o = 0, a = 0; a < t[0]; a++) {
- var g = o + 2
- , i = o + 2 + t[o + 1];
- o += 1 + t[o + 1],
- n[a] = r.substring(2 * g, 2 * i)
- }
- for (a = 0; a < t[0]; a++) {
- var u = n[a].length / 2;
- e += byte2hexStr(a + 1 & 255) + byte2hexStr(255 & u) + n[a]
- }
- }
- return e
- }
- function TPDU2APDU(r) {
- for (var t = hexStr2byteArray(r), e = "", n = new Array, o = 0, a = t.byteLength; o < a; ) {
- var g = t[o++]
- , i = t[o++];
- n[g - 1] = r.substring(2 * o, 2 * (o + i)),
- o += i
- }
- for (var e = byte2hexStr(255 & n.length), u = 0; u < n.length; u++)
- e += byte2hexStr(n[u].length / 2 & 255) + n[u];
- return e
- }
- function hexCharCodeToStr(r) {
- var t, r = r.trim(), e = "0x" === r.substr(0, 2).toLowerCase() ? r.substr(2) : r, n = e.length;
- if (n % 2 != 0)
- return "";
- for (var o = [], a = 0; a < n; a += 2)
- t = parseInt(e.substr(a, 2), 16),
- o.push(String.fromCharCode(t));
- return o.join("")
- }
- function obuSetSleepTimeCmd(r) {
- r = "D1" + array2Str(r);
- return this.packetData(r)
- }
- function getActStateCmd() {
- return this.packetData("D20200")
- }
- function getCardBalanceCmd() {
- return packetData("a30105805c000204")
- }
- function packetData(r) {
- console.log("开始拆包:" + r);
- 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++)
- a = 0 == u ? "80" + intToHexString(o, 1, !1) : "00" + intToHexString(u + 1, 1, !1),
- 30 <= i ? (g = r.substring(15 * u * 2, 15 * (u + 1) * 2),
- i -= 30) : g = r.substring(r.length - i, r.length),
- t = "5" + parseInt(g.length / 2, 10).toString(16),
- e = getBcc(t + a + g),
- console.log("组帧:ST:" + t + " CTL:" + a + " DATA:" + g + " BCC:" + e),
- n.push(str2array(t + a + g + e).buffer);
- return n
- }
- function intToHexString(r, t, e) {
- for (var n = r.toString(16), o = n.length; o < 2 * t; o++)
- n = "0" + n;
- if (n.length > 2 * t && (n = n.substring(n.length - 2 * t)),
- 0 == e) {
- for (var a = "", g = n.length - 2; 0 <= g; g -= 2)
- a += n.substring(g, g + 2);
- n = a
- }
- return n
- }
- function sleep(ms) {
- return new Promise(resolve => setTimeout(resolve, ms));
- }
- module.exports = {
- showLog: showLog,
- byteArray2hexStr: byteArray2hexStr,
- hexStr2byteArray: hexStr2byteArray,
- showError: showError,
- byte2hexStr: byte2hexStr,
- getProtocolType: getProtocolType,
- getPagLenMax: getPagLenMax,
- getTRANSFER_TYPE: getTRANSFER_TYPE,
- getDATA_TYPE: getDATA_TYPE,
- getCMD_TYPE: getCMD_TYPE,
- APDU2TPDU: APDU2TPDU,
- TPDU2APDU: TPDU2APDU,
- hexCharCodeToStr: hexCharCodeToStr,
- obuSetSleepTimeCmd: obuSetSleepTimeCmd,
- array2Str: array2Str,
- sleep: sleep,
- };
|