選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

JLService.js 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. var TAG = "JLCardInfoServer",
  2. JLObuWechat33Request = require("./JLObuWechat33Request"),
  3. JLCmdTool = require("./JLCmdTool"),
  4. JLBleManager = require("./JLBleManager"),
  5. config = require("./JLZJConfig"),
  6. JLObuWechat33Reveice = require("./JLObuWechat33Reveice"),
  7. code = require("./errorCode"),
  8. service = require("./JLServiceTool"),
  9. dataTool = require("./dataTool"),
  10. len_hex = "",
  11. file_cmd = "";
  12. export function getCardholderInfo(e, c) {
  13. service.ICCReset(c => {
  14. e.call(this, c)
  15. }, o => {
  16. o.code == code.successCode() ? service.selectTheDirectory(0, c => {
  17. e.call(this, c)
  18. }, o => {
  19. o.code == code.successCode() ? cardInfo_Read0016File(c => {
  20. e.call(this, c)
  21. }, e => {
  22. c.call(this, e)
  23. }) : c.call(this, o)
  24. }) : c.call(this, o)
  25. })
  26. }
  27. function cardInfo_Read0016File(e, c) {
  28. console.log(TAG + "cardInfo_Read0016File--------读卡信息文件");
  29. var o = JLCmdTool.JL_ICC_File0016(),
  30. s = JLObuWechat33Request.ICCChannelTransmission("00", [o]);
  31. JLBleManager.sendCommand(s, o => {
  32. o.code == code.successCode() ? (e.call(this, {
  33. fireFlag: config.ICCFile0016()
  34. }), JLObuWechat33Reveice.receive0016File(e => {
  35. c.call(this, e)
  36. })) : c.call(this, o)
  37. })
  38. }
  39. export function getCardInfo(e, c) {
  40. service.ICCReset(c => {
  41. e.call(this, c)
  42. }, o => {
  43. o.code == code.successCode() ? service.selectTheDirectory(1, c => {
  44. e.call(this, c)
  45. }, o => {
  46. o.code == code.successCode() ? cardInfo_Read0015File(c => {
  47. e.call(this, c)
  48. }, e => {
  49. c.call(this, e)
  50. }) : c.call(this, o)
  51. }) : c.call(this, o)
  52. })
  53. }
  54. function cardInfo_Read0015File(e, c) {
  55. console.log(TAG + "cardInfo_Read0015File--------读卡信息文件---------------");
  56. var o = JLCmdTool.JL_ICC_File0015(),
  57. s = JLObuWechat33Request.ICCChannelTransmission("00", [o]);
  58. JLBleManager.sendCommand(s, o => {
  59. o.code == code.successCode() ? (e.call(this, {
  60. fireFlag: config.ICCFile0015()
  61. }), JLObuWechat33Reveice.receive0015File(e => {
  62. e.code != code.successCode() ? (e.err_msg = "读取卡信息失败", c.call(this, e)) : c.call(this, e)
  63. })) : c.call(this, o)
  64. })
  65. }
  66. export function creditForLoadInit(e, c, o, s, l, a) {
  67. service.ICCReset(e => {
  68. l.call(this, e)
  69. }, i => {
  70. i.code == code.successCode() ? service.selectTheDirectory(1, e => {
  71. l.call(this, e)
  72. }, i => {
  73. i.code == code.successCode() ? creditForLoad_checkPIN(e, e => {
  74. l.call(this, e)
  75. }, e => {
  76. e.code == code.successCode() ? creditForLoad_init(c, o, s, e => {
  77. l.call(this, e)
  78. }, e => {
  79. a.call(this, e)
  80. }) : a.call(this, e)
  81. }) : a.call(this, i)
  82. }) : a.call(this, i)
  83. })
  84. }
  85. export function creditForLoad(e, c, o, s) {
  86. creditForLoad_Load(e, c, e => {
  87. o.call(this, e)
  88. }, e => {
  89. s.call(this, e)
  90. })
  91. }
  92. function creditForLoad_checkPIN(e, c, o) {
  93. console.log(TAG + "checkPIN--------验PIN:" + e);
  94. var s = JLCmdTool.JL_ICCC_PIN(e),
  95. l = JLObuWechat33Request.ICCChannelTransmission("00", [s]);
  96. JLBleManager.sendCommand(l, e => {
  97. e.code == code.successCode() ? (c.call(this, {
  98. fireFlag: config.ICCPIN()
  99. }), JLObuWechat33Reveice.recevieCheckPIN(e => {
  100. e.code != code.successCode() ? (e.err_msg = "验证PIN码失败", o.call(this, e)) : o.call(this, e)
  101. })) : o.call(this, e)
  102. })
  103. }
  104. function creditForLoad_init(e, c, o, s, l) {
  105. console.log(TAG + "creditForLoad_init--------圈存初始化:" + e + ":" + c + ":" + o), o = dataTool.tenToHex(parseInt(o), 8);
  106. var a = JLCmdTool.JL_ICC_CreditInit(e, c, o),
  107. i = JLObuWechat33Request.ICCChannelTransmission("00", [a]);
  108. JLBleManager.sendCommand(i, e => {
  109. e.code == code.successCode() ? (s.call(this, {
  110. fireFlag: config.ICCInitForLoad()
  111. }), JLObuWechat33Reveice.recevieCreditForInit(e => {
  112. e.code != code.successCode() ? (e.err_msg = "圈存初始化失败", l.call(this, e)) : l.call(this, e)
  113. })) : l.call(this, e)
  114. })
  115. }
  116. function creditForLoad_Load(e, c, o, s) {
  117. console.log(TAG + "creditForLoad_Load--------圈存写卡:" + e + "," + c);
  118. var l = JLCmdTool.JL_ICC_CreditForLoad(e, c),
  119. a = JLObuWechat33Request.ICCChannelTransmission("00", [l]);
  120. JLBleManager.sendCommand(a, e => {
  121. e.code == code.successCode() ? (o.call(this, {
  122. fireFlag: config.ICCCreditForLoad()
  123. }), JLObuWechat33Reveice.recevieCreditForLoad(e => {
  124. e.code != code.successCode() ? (e.err_msg = "圈存写卡失败", s.call(this, e)) : s.call(this, e)
  125. })) : s.call(this, e)
  126. })
  127. }
  128. export function getCarInfo(e, c, o) {
  129. console.log(TAG + "getCarInfo--------读车辆信息 random" + e), service.ESAMReset(e => {
  130. c.call(this, e)
  131. }, s => {
  132. s.code == code.successCode() ? service.selectTheDirectory(3, e => {
  133. c.call(this, e)
  134. }, s => {
  135. carInfo_getrand(e => {
  136. c.call(this, e)
  137. }, s => {
  138. 0 != e.length && null != e && "undefined" != e || (e = s.data), carInfo_ReadCarFile(e, e => {
  139. c.call(this, e)
  140. }, e => {
  141. o.call(this, e)
  142. })
  143. })
  144. }) : o.call(this, s)
  145. })
  146. }
  147. function carInfo_getrand(e, c) {
  148. console.log(TAG + "carInfo_getrand--------获取随机数");
  149. var o = JLCmdTool.JL_ESAM_Random("08"),
  150. s = JLObuWechat33Request.ESAMChannelTransmission("00", [o]);
  151. JLBleManager.sendCommand(s, o => {
  152. o.code == code.successCode() ? (e.call(this, {
  153. fireFlag: config.ESAMRandom()
  154. }), JLObuWechat33Reveice.receiveObuRandom(e => {
  155. e.code != code.successCode() ? (e.err_msg = "获取车辆信息随机数失败", c.call(this, e)) : c.call(this, e)
  156. })) : c.call(this, o)
  157. })
  158. }
  159. function carInfo_ReadCarFile(e, c, o) {
  160. console.log(TAG + "carInfo_ReadCarFile--------读车辆信息文件");
  161. var s = [];
  162. s[0] = JLCmdTool.JL_ESAM_FileCar(e, "3B");
  163. var l = JLObuWechat33Request.ESAMChannelTransmission("00", s);
  164. JLBleManager.sendCommand(l, e => {
  165. e.code == code.successCode() ? (c.call(this, {
  166. fireFlag: config.ReadCarInfo()
  167. }), JLObuWechat33Reveice.receiveCarInfo(e => {
  168. e.code != code.successCode() ? (e.err_msg = "读取车辆信息失败", o.call(this, e)) : o.call(this, e)
  169. })) : o.call(this, e)
  170. })
  171. }
  172. export function readRetainFile(e, c, o, s) {
  173. var l = dataTool.hexTobin(e),
  174. a = dataTool.binTohex(dealFileName(l));
  175. len_hex = dataTool.tenToHex(c), file_cmd = JLCmdTool.JL_ICC_RetainFile(a, len_hex), service.ICCReset(e => {
  176. o.call(this, e)
  177. }, e => {
  178. e.code == code.successCode() ? service.selectTheDirectory(1, e => {
  179. o.call(this, e)
  180. }, e => {
  181. e.code == code.successCode() ? retainFile_ReadRetainFile(e => {
  182. o.call(this, e)
  183. }, e => {
  184. s.call(this, e)
  185. }) : s.call(this, e)
  186. }) : s.call(this, e)
  187. })
  188. }
  189. function retainFile_ReadRetainFile(e, c) {
  190. console.log(TAG + "retainFile_ReadRetainFile--------读保留文件");
  191. var o = JLCmdTool.JL_ICC_RetainFile(file_cmd, len_hex),
  192. s = JLObuWechat33Request.ICCChannelTransmission("00", [o]);
  193. JLBleManager.sendCommand(s, o => {
  194. o.code == code.successCode() ? (e.call(this, {
  195. fireFlag: config.ICCReadRetainFile()
  196. }), JLObuWechat33Reveice.receive0015File(e => {
  197. e.code != code.successCode() ? (e.err_msg = "读取保留文件信息失败", c.call(this, e)) : c.call(this, e)
  198. })) : c.call(this, o)
  199. })
  200. }
  201. function dealFileName(e) {
  202. var c = e.substr(e.length - 5, 5);
  203. return c = "100" + c
  204. }
  205. export function getSystemInfo(e, c) {
  206. service.ESAMReset(c => {
  207. e.call(this, c)
  208. }, o => {
  209. o.code == code.successCode() ? service.selectTheDirectory(2, c => {
  210. e.call(this, c)
  211. }, o => {
  212. o.code == code.successCode() ? systemInfo_ReadSystemInfoFile(c => {
  213. e.call(this, c)
  214. }, e => {
  215. c.call(this, e)
  216. }) : c.call(this, o)
  217. }) : c.call(this, o)
  218. })
  219. }
  220. function systemInfo_ReadSystemInfoFile(e, c) {
  221. console.log(TAG + "systemInfo_ReadSystemInfoFile--------读系统信息文件");
  222. var o = JLCmdTool.JL_ESAM_FileSystem("00", "1B"),
  223. s = JLObuWechat33Request.ESAMChannelTransmission("00", [o]);
  224. JLBleManager.sendCommand(s, o => {
  225. o.code == code.successCode() ? (e.call(this, {
  226. fireFlag: config.ReadSystemInfo()
  227. }), JLObuWechat33Reveice.receiveSystemInfo(e => {
  228. e.code != code.successCode() ? (e.err_msg = "读取Obu系统信息失败", c.call(this, e)) : c.call(this, e)
  229. })) : c.call(this, o)
  230. })
  231. }
  232. export function cardInfo_WriteCardInfoFile(e, c, o) {
  233. console.log(TAG + "systemInfo_WriteObuInfoFile--------写卡信息"), console.log(TAG + "cmd--------写卡信息文件" + e);
  234. var s = JLObuWechat33Request.ICCChannelTransmission("00", e);
  235. JLBleManager.sendCommand(s, e => {
  236. e.code == code.successCode() ? (c.call(this, {
  237. fireFlag: config.WriteCardInfo()
  238. }), JLObuWechat33Reveice.receiveWriteCardInfo(e => {
  239. e.code != code.successCode() ? (e.err_msg = "写卡信息失败", o.call(this, e)) : o.call(this, e)
  240. })) : o.call(this, e)
  241. })
  242. }
  243. export function systemInfo_WriteObuInfoFile(e, c, o) {
  244. console.log(TAG + "systemInfo_WriteObuInfoFile--------写系统信息文件或车辆信息文件"), console.log(TAG + "cmd--------写系统信息文件或车辆信息文件指令" + e);
  245. var s = JLObuWechat33Request.ESAMChannelTransmission("00", e);
  246. JLBleManager.sendCommand(s, e => {
  247. e.code == code.successCode() ? (c.call(this, {
  248. fireFlag: config.WriteObuInfo()
  249. }), JLObuWechat33Reveice.receiveWriteObuInfo(e => {
  250. e.code != code.successCode() ? (e.err_msg = "写Obu系统信息失败", o.call(this, e)) : o.call(this, e)
  251. })) : o.call(this, e)
  252. })
  253. }
  254. export function getObuRandom(e, c, o) {
  255. console.log(TAG + "getObuRandom--------获取随机数"), 0 == parseInt(e) || 1 == parseInt(e) ? service.ESAMReset(e => {
  256. c.call(this, e)
  257. }, s => {
  258. s.code == code.successCode() ? 0 === e ? service.selectTheDirectory(2, e => {
  259. c.call(this, e)
  260. }, e => {
  261. e.code == code.successCode() ? systemInfo_ReadRandom(e => {
  262. c.call(this, e)
  263. }, e => {
  264. o.call(this, e)
  265. }) : o.call(this, e)
  266. }) : service.selectTheDirectory(3, e => {
  267. c.call(this, e)
  268. }, e => {
  269. e.code == code.successCode() ? systemInfo_ReadRandom(e => {
  270. c.call(this, e)
  271. }, e => {
  272. o.call(this, e)
  273. }) : o.call(this, e)
  274. }) : o.call(this, s)
  275. }) : o.call(this, {
  276. code: Code.errorCode(),
  277. msg: "",
  278. data: ""
  279. })
  280. }
  281. function systemInfo_ReadRandom(e, c) {
  282. console.log(TAG + "systemInfo_ReadRandom--------读随机数");
  283. var o = [];
  284. o[0] = JLCmdTool.JL_ESAM_Random("04");
  285. var s = JLObuWechat33Request.ESAMChannelTransmission("00", o);
  286. JLBleManager.sendCommand(s, o => {
  287. o.code == code.successCode() ? (e.call(this, {
  288. fireFlag: config.ESAMRandom()
  289. }), JLObuWechat33Reveice.receiveObuRandom(e => {
  290. e.code != code.successCode() ? (e.err_msg = "获取系统信息随机数失败", c.call(this, e)) : c.call(this, e)
  291. })) : c.call(this, o)
  292. })
  293. }
  294. export function getCardRandom(e, c, o, s) {
  295. console.log(TAG + "getCardRandom--------获取随机数"), 0 == parseInt(e) || 1 == parseInt(e) ? service.ICCReset(e => {
  296. o.call(this, e)
  297. }, l => {
  298. l.code == code.successCode() ? 0 === e ? service.selectTheDirectory(1, e => {
  299. o.call(this, e)
  300. }, e => {
  301. e.code == code.successCode() ? cardInfo_ReadRandom(c, e => {
  302. o.call(this, e)
  303. }, e => {
  304. s.call(this, e)
  305. }) : s.call(this, e)
  306. }) : service.selectTheDirectory(0, e => {
  307. o.call(this, e)
  308. }, e => {
  309. e.code == code.successCode() ? cardInfo_ReadRandom(c, e => {
  310. o.call(this, e)
  311. }, e => {
  312. s.call(this, e)
  313. }) : s.call(this, e)
  314. }) : s.call(this, l)
  315. }) : s.call(this, {
  316. code: Code.errorCode(),
  317. msg: "请填写正确type",
  318. data: ""
  319. })
  320. }
  321. function cardInfo_ReadRandom(e, c, o) {
  322. console.log(TAG + "cardInfo_ReadRandom--------读随机数");
  323. var s = [];
  324. s[0] = JLCmdTool.JL_ICC_Rand(e);
  325. var l = JLObuWechat33Request.ICCChannelTransmission("00", s);
  326. JLBleManager.sendCommand(l, e => {
  327. e.code == code.successCode() ? (c.call(this, {
  328. fireFlag: config.ICCRandom()
  329. }), JLObuWechat33Reveice.receiveCardRandom(e => {
  330. e.code != code.successCode() ? (e.err_msg = "获取卡片信息随机数失败", o.call(this, e)) : o.call(this, e)
  331. })) : o.call(this, e)
  332. })
  333. }