Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

JLObuWechat33Pack.js 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. var dataTool = require("./dataTool"),
  2. wechat = require("./JLWechatProtocol"),
  3. frame = 0,
  4. MAX_PACK_LEN = 95,
  5. ST = "33";
  6. export function packData(a) {
  7. for (var e = pack33Protocol(a), t = wechat.packWechatCmd(e), o = [], T = 0; T < t.length; T++) {
  8. var r = t[T].wxTotalData;
  9. if (r.length < 40) o.push(r);
  10. else
  11. for (var A = 0; A < r.length; A += 40) {
  12. var n = r.substr(A, 40);
  13. o.push(n)
  14. }
  15. }
  16. return o
  17. }
  18. function pack33Protocol(a) {
  19. add_Frame();
  20. var e = a.length / 2,
  21. t = [];
  22. if (e > MAX_PACK_LEN)
  23. for (var o = Math.round(e / MAX_PACK_LEN), T = 0; T < o; T++) {
  24. var r;
  25. (r = {
  26. ST: "",
  27. SN: "",
  28. CTL: "",
  29. LEN: "",
  30. DATA: "",
  31. BCC: "",
  32. TOTALDATA: ""
  33. }).ST = ST, r.SN = dataTool.tenToHex(frame, 2), r.CTL = get_ctl(0 == T ? 1 : 0, o - (T + 1)), r.DATA = T + 1 == o ? a.substring(T * MAX_PACK_LEN * 2) : a.substring(T * MAX_PACK_LEN * 2, T * MAX_PACK_LEN * 2 + 2 * MAX_PACK_LEN), r.LEN = dataTool.tenToHex(r.DATA.length / 2, 2), r.BCC = dataTool.bccCheck(r.SN + r.CTL + r.LEN + r.DATA), console.log("tempBean.BCC====================:" + r.BCC), r.TOTALDATA = r.ST + r.SN + r.CTL + r.LEN + r.DATA + r.BCC, t.push(r)
  34. } else(r = {
  35. ST: "",
  36. SN: "",
  37. CTL: "",
  38. LEN: "",
  39. DATA: "",
  40. BCC: "",
  41. TOTALDATA: ""
  42. }).ST = ST, r.SN = dataTool.tenToHex(frame, 2), r.CTL = get_ctl(1, 0), r.LEN = dataTool.tenToHex(e, 2), r.DATA = a, r.BCC = dataTool.bccCheck(r.SN + r.CTL + r.LEN + r.DATA), r.TOTALDATA = r.ST + r.SN + r.CTL + r.LEN + r.DATA + r.BCC, t.push(r);
  43. return t
  44. }
  45. export function cread_apdu(a) {
  46. var e = cread_TLV(a),
  47. t = e.length / 2;
  48. return "80" + (t <= 80 ? dataTool.tenToHex(t, 2) : t <= 255 ? "81" + dataTool.tenToHex(t, 2) : "82" + dataTool.tenToHex(t, 4)) + e
  49. }
  50. function cread_TLV(a) {
  51. for (var e = "", t = 1; t <= a.length; t++) {
  52. var o = a[t - 1],
  53. T = o.length / 2;
  54. e = e + dataTool.tenToHex(t, 2) + dataTool.tenToHex(T, 2) + o
  55. }
  56. return e
  57. }
  58. function add_Frame() {
  59. ++frame > 15 && (frame = 0)
  60. }
  61. function get_ctl(a, e) {
  62. var t = "";
  63. if (0 == a) t = dataTool.tenToHex(e, 2);
  64. else {
  65. var o = 128 + e;
  66. t = dataTool.tenToHex(o, 2)
  67. }
  68. return t
  69. }