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