You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

JLDeviceWechat+33Protocol.js 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. var timeId, TAG = "JLDeviceWechar+33Protocol",
  2. ble = require("./JLBleManager"),
  3. protocolRequest = require("./JLObuWechat33Request"),
  4. onfire = require("./onfire"),
  5. timeOut = require("./timeOut"),
  6. request33 = require("./JLObuWechat33Request"),
  7. reveive33 = require("./JLObuWechat33Reveice"),
  8. Code = require("./errorCode"),
  9. config = require("./JLZJConfig"),
  10. service = require("./JLService"),
  11. dataTool = require("./dataTool"),
  12. dataArray = [],
  13. isConnect = !1,
  14. frame_total = 1,
  15. frame_count = 1,
  16. fireFlag = "",
  17. receive_data = "",
  18. receive_data_total_len = "",
  19. wechat1 = !1,
  20. wechat2 = !1,
  21. revc_count = 0;
  22. export function scanDevice(e, t, i) {
  23. timeId = setTimeout(e => {
  24. ble.stopScanDevice(e => {
  25. i.call(this, {
  26. code: Code.timeOutCode(),
  27. err_msg: "扫描超时",
  28. data: null,
  29. msg: ""
  30. })
  31. })
  32. }, t), ble.scanDevice(e, e => {
  33. clearTimeout(timeId), i.call(this, e)
  34. })
  35. }
  36. export function stopScanDevice(e) {
  37. ble.stopScanDevice(t => {
  38. e.call(this, t)
  39. })
  40. }
  41. export function connectDevice(e, t) {
  42. receive_data = "", null != e && "undefined" != e ? (timeId = setTimeout(e => {
  43. disConnectDevice(), t.call(this, {
  44. code: Code.timeOutCode(),
  45. err_msg: "连接超时",
  46. data: null,
  47. msg: ""
  48. })
  49. }, timeOut.connectTimeOut()), ble.stopScanDevice(i => {
  50. i.code == Code.successCode() ? ble.connectDevice(e, e => {
  51. e.code == Code.successCode() ? ble.characticValueChange(e.data, e => {
  52. console.info(JSON.stringify(e)), ble.initModule(e.data.id), e.code != Code.successCode() && (disConnectDevice(), t.call(this, {
  53. code: Code.bleErrorCode(),
  54. err_msg: "连接失败",
  55. data: null,
  56. msg: ""
  57. }))
  58. }, e => {
  59. console.info(TAG + " 监听特征值变化:" + JSON.stringify(e) + "time = " + Date.parse(new Date)), dealReceiveData(e.data.value, e => {
  60. clearTimeout(timeId), t.call(this, {
  61. code: Code.bleSuccessCode(),
  62. err_msg: "连接成功",
  63. data: null,
  64. msg: ""
  65. })
  66. })
  67. }) : t.call(this, e)
  68. }) : t.call(this, i)
  69. })) : t.call(this, {
  70. code: 10003,
  71. err_msg: "参数错误",
  72. data: null,
  73. msg: ""
  74. })
  75. }
  76. export function onDisconnet(e) {
  77. ble.onDeviceDisconnect(t => {
  78. isConnect = !1, dataArray = [], frame_count = 0, frame_total = 0, onfire.clear(), receive_data = "", clearTimeout(timeId), e.call(this, t)
  79. })
  80. }
  81. export function disConnectDevice(e) {
  82. receive_data = "", ble.disConnect(t => {
  83. isConnect = !1, dataArray = [], frame_count = 0, frame_total = 0, onfire.clear(), clearTimeout(timeId), e.call(this, t)
  84. })
  85. }
  86. export function checkCard(e) {
  87. receive_data = "";
  88. var t = request33.checkCardRequest();
  89. timeId = setTimeout(t => {
  90. e.call(this, {
  91. code: Code.timeOutCode(),
  92. err_msg: "检查卡片超时",
  93. data: null,
  94. msg: ""
  95. }), receive_data = ""
  96. }, timeOut.sendTime()), ble.sendCommand(t, t => {
  97. t.code == Code.successCode() ? (clearTimeout(timeId), reveive33.recevieShakeHands(t => {
  98. e.call(this, t)
  99. })) : e.call(this, t)
  100. })
  101. }
  102. export function getSystemInfo(e) {
  103. receive_data = "", timeId = setTimeout(t => {
  104. e.call(this, {
  105. code: Code.timeOutCode(),
  106. err_msg: "读系统信息超时",
  107. data: null,
  108. msg: ""
  109. }), receive_data = ""
  110. }, timeOut.sendTime()), service.getSystemInfo(e => {
  111. fireFlag = e.fireFlag, receive_data = ""
  112. }, t => {
  113. clearTimeout(timeId), e.call(this, t)
  114. })
  115. }
  116. export function getCarInfo(e, t) {
  117. receive_data = "", timeId = setTimeout(e => {
  118. t.call(this, {
  119. code: Code.timeOutCode(),
  120. err_msg: "读车辆信息超时",
  121. data: null,
  122. msg: ""
  123. }), receive_data = ""
  124. }, timeOut.sendTime()), service.getCarInfo(e, e => {
  125. console.log(TAG + "-----fireFlag--------" + JSON.stringify(e)), fireFlag = e.fireFlag, receive_data = ""
  126. }, e => {
  127. clearTimeout(timeId), t.call(this, e)
  128. })
  129. }
  130. export function writeObuIfo(e, t, i) {
  131. receive_data = "", timeId = setTimeout(e => {
  132. receive_data = "", i.call(this, {
  133. code: Code.timeOutCode(),
  134. err_msg: "写系统信息超时",
  135. data: null,
  136. msg: ""
  137. })
  138. }, timeOut.sendTime()), service.systemInfo_WriteObuInfoFile([t], e => {
  139. receive_data = "", fireFlag = e.fireFlag
  140. }, e => {
  141. clearTimeout(timeId), i.call(this, e)
  142. })
  143. }
  144. export function getCardInfo(e) {
  145. console.log(TAG + " getCardInfo:" + Date.parse(new Date)), receive_data = "", timeId = setTimeout(t => {
  146. receive_data = "", e.call(this, {
  147. code: Code.timeOutCode(),
  148. err_msg: "读取卡信息超时",
  149. data: null,
  150. msg: ""
  151. })
  152. }, timeOut.sendTime()), service.getCardInfo(e => {
  153. fireFlag = e.fireFlag, receive_data = ""
  154. }, t => {
  155. clearTimeout(timeId), e.call(this, t)
  156. })
  157. }
  158. export function getCardholderInfo(e) {
  159. receive_data = "", timeId = setTimeout(t => {
  160. receive_data = "", e.call(this, {
  161. code: Code.timeOutCode(),
  162. err_msg: "读取持卡人信息超时",
  163. data: null,
  164. msg: ""
  165. })
  166. }, timeOut.sendTime()), service.getCardholderInfo(e => {
  167. fireFlag = e.fireFlag, receive_data = ""
  168. }, t => {
  169. clearTimeout(timeId), e.call(this, t)
  170. })
  171. }
  172. export function writeCardInfomation(e, t, i) {
  173. receive_data = "", timeId = setTimeout(e => {
  174. receive_data = "", i.call(this, {
  175. code: Code.timeOutCode(),
  176. err_msg: "读写卡片发行信息超时",
  177. data: null,
  178. msg: ""
  179. })
  180. }, timeOut.sendTime()), service.cardInfo_WriteCardInfoFile([t], e => {
  181. fireFlag = e.fireFlag, receive_data = ""
  182. }, e => {
  183. clearTimeout(timeId), i.call(this, e)
  184. })
  185. }
  186. export function ICCReset(e) {
  187. receive_data = "", timeId = setTimeout(t => {
  188. receive_data = "", e.call(this, {
  189. code: Code.timeOutCode(),
  190. err_msg: "ICC复位超时",
  191. data: null,
  192. msg: ""
  193. })
  194. }, timeOut.sendTime()), console.log(TAG + "cardInfo_ICCReset--------ICC复位");
  195. var t = protocolRequest.ICCResetRequest();
  196. ble.sendCommand(t, t => {
  197. t.code == Code.successCode() ? (fireFlag = config.ICCReset(), reveive33.receiveICCReset(t => {
  198. clearTimeout(timeId), e.call(this, t)
  199. })) : e.call(this, t)
  200. })
  201. }
  202. export function ESAMRset(e) {
  203. receive_data = "", timeId = setTimeout(t => {
  204. receive_data = "", e.call(this, {
  205. code: Code.timeOutCode(),
  206. err_msg: "ICC复位超时",
  207. data: null,
  208. msg: ""
  209. })
  210. }, timeOut.sendTime()), console.log(TAG + "carInfo_ESAMReset--------ESAM 复位");
  211. var t = protocolRequest.ESAMReset();
  212. ble.sendCommand(t, t => {
  213. console.log(TAG + "sendCommand--------res" + JSON.stringify(t)), fireFlag = config.ESAMReset(), reveive33.receiveEsamReset(t => {
  214. clearTimeout(timeId), console.log(TAG + "receiveEsamReset--------res" + JSON.stringify(t)), e.call(this, t)
  215. })
  216. })
  217. }
  218. export function ICCChannel(e, t) {
  219. var i = protocolRequest.ICCChannelTransmission("00", [e]);
  220. timeId = setTimeout(e => {
  221. receive_data = "", t.call(this, {
  222. code: Code.timeOutCode(),
  223. err_msg: "ICC透传超时",
  224. data: null,
  225. msg: ""
  226. })
  227. }, timeOut.sendTime()), ble.sendCommand(i, e => {
  228. e.code == Code.successCode() ? (fireFlag = config.ICCChannel(), reveive33.receiveICCChannel(e => {
  229. clearTimeout(timeId), t.call(this, e)
  230. })) : t.call(this, e)
  231. })
  232. }
  233. export function ESAMChannel(e, t) {
  234. console.log(TAG + "ESAMChannel--------ESAM透传");
  235. var i = protocolRequest.ESAMChannelTransmission("00", [e]);
  236. timeId = setTimeout(e => {
  237. receive_data = "", t.call(this, {
  238. code: Code.timeOutCode(),
  239. err_msg: "ESAM透传超时",
  240. data: null,
  241. msg: ""
  242. })
  243. }, timeOut.sendTime()), ble.sendCommand(i, e => {
  244. console.log(TAG + "sendCommand--------res" + JSON.stringify(e)), fireFlag = config.ESAMChannel(), reveive33.receiveESAMChannel(e => {
  245. clearTimeout(timeId), t.call(this, e)
  246. })
  247. })
  248. }
  249. export function creditForLoad_Init(e, t, i, a, o) {
  250. receive_data = "", timeId = setTimeout(e => {
  251. receive_data = "", o.call(this, {
  252. code: Code.timeOutCode(),
  253. err_msg: "圈存初始化超时",
  254. data: null,
  255. msg: ""
  256. })
  257. }, timeOut.sendTime()), service.creditForLoadInit(e, t, i, a, e => {
  258. fireFlag = e.fireFlag, receive_data = ""
  259. }, e => {
  260. clearTimeout(timeId), o.call(this, e)
  261. })
  262. }
  263. export function creditForLoad_Load(e, t, i) {
  264. receive_data = "", timeId = setTimeout(e => {
  265. receive_data = "", i.call(this, {
  266. code: Code.timeOutCode(),
  267. err_msg: "圈存写卡超时",
  268. data: null,
  269. msg: ""
  270. })
  271. }, timeOut.sendTime()), service.creditForLoad(e, t, e => {
  272. fireFlag = e.fireFlag, receive_data = ""
  273. }, e => {
  274. clearTimeout(timeId), i.call(this, e)
  275. })
  276. }
  277. export function readRetainFile(e, t, i) {
  278. receive_data = "", timeId = setTimeout(t => {
  279. receive_data = "", i.call(this, {
  280. code: Code.timeOutCode(),
  281. err_msg: "读取" + e + "文件信息超时",
  282. data: null,
  283. msg: ""
  284. })
  285. }, timeOut.sendTime()), service.readRetainFile(e, t, e => {
  286. fireFlag = e.fireFlag, receive_data = ""
  287. }, e => {
  288. clearTimeout(timeId), i.call(this, e)
  289. })
  290. }
  291. export function writeRetainFile(e, t) {
  292. receive_data = "", timeId = setTimeout(e => {
  293. receive_data = "", t.call(this, {
  294. code: Code.timeOutCode(),
  295. err_msg: "写卡片信息超时",
  296. data: null,
  297. msg: ""
  298. })
  299. }, timeOut.sendTime()), service.cardInfo_WriteCardInfoFile([e], e => {
  300. fireFlag = e.fireFlag, receive_data = ""
  301. }, e => {
  302. clearTimeout(timeId), t.call(this, e)
  303. })
  304. }
  305. export function getCardNum(e) {
  306. receive_data = "", timeId = setTimeout(t => {
  307. receive_data = "", e.call(this, {
  308. code: Code.timeOutCode(),
  309. err_msg: "读取卡号超时",
  310. data: null,
  311. msg: ""
  312. })
  313. }, timeOut.sendTime()), service.getCardInfo(e => {
  314. fireFlag = e.fireFlag, receive_data = ""
  315. }, t => {
  316. clearTimeout(timeId), t.code == Code.successCode() ? e.call(this, {
  317. code: Code.successCode(),
  318. err_msg: "获取卡号成功",
  319. data: t.data.substr(24, 16),
  320. msg: ""
  321. }) : e.call(this, t)
  322. })
  323. }
  324. export function getObuSN(e) {
  325. receive_data = "", timeId = setTimeout(t => {
  326. e.call(this, {
  327. code: Code.timeOutCode(),
  328. err_msg: "获取合同序列号超时",
  329. data: null,
  330. msg: ""
  331. }), receive_data = ""
  332. }, timeOut.sendTime()), service.getSystemInfo(e => {
  333. fireFlag = e.fireFlag, receive_data = ""
  334. }, t => {
  335. clearTimeout(timeId), e.call(this, {
  336. code: Code.successCode(),
  337. err_msg: "获取合同序列号成功",
  338. data: t.data.substr(20, 16),
  339. msg: ""
  340. })
  341. })
  342. }
  343. export function getCardRandNum(e, t) {
  344. receive_data = "", timeId = setTimeout(e => {
  345. receive_data = "", t.call(this, {
  346. code: Code.timeOutCode(),
  347. err_msg: "读取卡片随机数",
  348. data: null,
  349. msg: ""
  350. })
  351. }, timeOut.sendTime()), service.getCardRandom(e, "04", e => {
  352. fireFlag = e.fireFlag, receive_data = ""
  353. }, e => {
  354. clearTimeout(timeId), t.call(this, e)
  355. })
  356. }
  357. export function getObuRadom(e, t) {
  358. receive_data = "", timeId = setTimeout(e => {
  359. receive_data = "", t.call(this, {
  360. code: Code.timeOutCode(),
  361. err_msg: "读随机数超时",
  362. data: null,
  363. msg: ""
  364. })
  365. }, timeOut.sendTime()), console.log(TAG + "-----getObuRadom--------"), service.getObuRandom(e, e => {
  366. fireFlag = e.fireFlag, receive_data = ""
  367. }, e => {
  368. clearTimeout(timeId), t.call(this, e)
  369. })
  370. }
  371. var timepReceive_data = "";
  372. function dealReceiveData(e, t) {
  373. console.log(TAG + " dealReceiveData: " + e + Date.parse(new Date)), console.log(TAG + " revc_count:" + revc_count), console.log(TAG + " timepReceive_data:" + timepReceive_data), 0 == revc_count ? "FE01" == e.substr(0, 4) && (timepReceive_data += e, revc_count++) : (timepReceive_data += e, revc_count++);
  374. var i = 2 * parseInt(timepReceive_data.substring(4, 8), 16) == timepReceive_data.length;
  375. if (console.log(TAG + " 8blg:" + i), i) {
  376. console.log("receive_data:" + timepReceive_data);
  377. var a = timepReceive_data.substr(24, 2),
  378. o = timepReceive_data.substr(8, 4);
  379. if ("33" == a) console.log(TAG + "----fireFlag:" + fireFlag), onfire.fire(fireFlag, timepReceive_data), timepReceive_data = "", receive_data = "", revc_count = 0;
  380. else if ("2711" == o || "2713" == o)
  381. if ("2711" == o) {
  382. var c = timepReceive_data.substring(40, 44),
  383. r = protocolRequest.wechatInit1(c);
  384. timepReceive_data = "", receive_data = "", revc_count = 0, console.log("认证1", r), ble.sendCommand(r, e => {
  385. console.log("发送认证1 :" + JSON.stringify(e))
  386. })
  387. } else if ("2713" == o) {
  388. console.log("认证2");
  389. r = protocolRequest.wechatInit2(c);
  390. timepReceive_data = "", receive_data = "", revc_count = 0, ble.sendCommand(r, e => {
  391. console.log("发送认证2 :" + JSON.stringify(e)), timepReceive_data = "", receive_data = "", revc_count = 0, t.call(this, {
  392. code: Code.bleSuccessCode(),
  393. msg: "连接成功",
  394. data: null
  395. })
  396. })
  397. } else t.call(this, {
  398. code: Code.bleErrorCode,
  399. msg: "非法连接",
  400. data: null
  401. });
  402. else t.call(this, {
  403. code: Code.bleErrorCode,
  404. msg: "非法连接",
  405. data: null
  406. })
  407. }
  408. }