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.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. /**obu蓝牙设备SDK */
  2. // const wjApi = require("../etc/WJAPI/wjBleAPI");
  3. // import * as wjApi from '../../lib/etc/WJAPI/wjBleAPI'
  4. // const jlApi = require("../etc/JLAPI/JLObuSDK.js");
  5. // import * as jlApi from '../../lib/etc/JLAPI/JLObuSDK.js'
  6. const jyApi = require("../etc/JYAPI/GenvictBleUtil.js");
  7. // import * as jlQZApi from '../../lib/etc/JLQZAPI/JLObuSDK.js'
  8. const atApi = require("../etc/ATAPI/ArtcBleUtil.js");
  9. // import * as atApi from '../../lib/etc/ATAPI/ArtcBleUtil.js'
  10. // import * as jtApi from '../../lib/etc/JTAPI/BleUtil.js'
  11. const wqApi = require("../etc/WQAPI/WCDObuSdk.js");
  12. // import * as wqApi from '../../lib/etc/WQAPI/WCDObuSdk.js'
  13. const cgApi = require("../etc/CGAPI/cguBle.js");
  14. // import * as cgApi from '../../lib/etc/CGAPI/cguBle.js'
  15. // const tdApi = require("../etc/TDAPI/TDRObuSDK.js");
  16. // import * as tdApi from '../../lib/etc/TDAPI/TDRObuSDK.js'
  17. // import * as zzApi from '../../lib/etc/WJAPI/wjBleAPI'
  18. const datas = require("./datas.js");
  19. const tools = require('./tools.js');
  20. let jlApi = require("../../static/etc/JLAPI/JLObuSDK.js"); //聚力SDK
  21. let wjApi = require("../etc/WJAPI/wjBleAPI");
  22. let tdApi = require("../etc/TDAPI/TDRObuSDK.js");
  23. let zzApi = require("../etc/WJAPI/wjBleAPI.js");
  24. let jtApi = require("../etc/JTAPI/BleUtil.js");
  25. const jlQZApi = require("../etc/JLQZAPI/JLObuSDK.js");
  26. let kcApi = require("../etc/kcBle/kcBleAPI.js");
  27. let mcApi = require("../etc/MCAPI/MCObuSDK.js");
  28. // let jyApiEtc = require("../etc/JYAPI-ETC/jy-bluetooth-obu-wechatmp.js"); //前装-金溢
  29. let ArtcBleUtilApi = require("../etc/ArtcBleAPI/ArtcGuiZhouAPI.js");//艾特斯 ETC- 5201 国密
  30. let mcApi9901 = require("../etc/MCSDK9901/BleUtil9901.js"); //9901 和 国密5201单片
  31. import {
  32. login
  33. } from "../../utils/network/api";
  34. import {
  35. getItem
  36. } from "../../utils/storage";
  37. // import { startHeartbeat, stopHeartbeat } from "@/pages/bluetooth/heartbeatService"
  38. if (getItem('environment') == 'ZFB') {
  39. tdApi = require("../etc/TDRAPI/TDRObuSDK.js");
  40. jlApi = require("../etc/JLObuSDK/JLObuSDK.js");
  41. wjApi = require("../etc/wjBle/WJBleAPI");
  42. zzApi = require("../etc/wjBle/WJBleAPI.js");
  43. jtApi = require("../etc/JTAPIS/BleUtil.js");
  44. }
  45. // 9901
  46. const wjApi9901 = require("../etc/WJSDK9901/wjBleAPI.js");
  47. /**
  48. * 断开蓝牙
  49. */
  50. function disconnectDevice() {
  51. var connectPrefixName = datas.getData("connectPrefixName");
  52. console.log('断开蓝牙connectPrefixName', getItem('environment'), tdApi, datas.getData("connectPrefixName"))
  53. switch (connectPrefixName) {
  54. case "ETC":
  55. let obj = ""
  56. if (datas.getData("deviceName").includes("KC") || datas.getData("deviceName").includes("K")) {
  57. obj=kcApi
  58. } else if (datas.getData("deviceName").includes("JL")) {
  59. obj=jlQZApi
  60. } else if (datas.getData("deviceName").includes("WJ")) {
  61. obj=wjApi9901
  62. } else if (datas.getData("deviceName").includes("ATS")) {
  63. obj=ArtcBleUtilApi
  64. }else if (datas.getData("deviceName").includes("MC")) {
  65. obj=mcApi9901
  66. }else if (datas.getData("deviceName").includes("WQ")) {
  67. obj=wqApi
  68. }
  69. obj.disconnectDevice(function(res) {
  70. datas.setData("bluLinkStatus", false);
  71. datas.setData("connectPrefixName", "");
  72. });
  73. // else if (datas.getData("deviceName").includes("JY")) {
  74. // jyApiEtc.disconnectDevice(function(res) {
  75. // datas.setData("bluLinkStatus", false);
  76. // datas.setData("connectPrefixName", "");
  77. // });
  78. // }
  79. break;
  80. case "WJ":
  81. wjApi.disconnectDevice(function(res) {
  82. datas.setData("bluLinkStatus", false);
  83. datas.setData("connectPrefixName", "");
  84. });
  85. break;
  86. case "JL":
  87. jlApi.disconnectDevice(function(res) {
  88. datas.setData("bluLinkStatus", false);
  89. datas.setData("connectPrefixName", "");
  90. });
  91. break;
  92. case "BY":
  93. jyApi.disconnectDevice(function(res) {
  94. datas.setData("bluLinkStatus", false);
  95. datas.setData("connectPrefixName", "");
  96. });
  97. break;
  98. case "JY":
  99. jyApi.disconnectDevice(function(res) {
  100. datas.setData("bluLinkStatus", false);
  101. datas.setData("connectPrefixName", "");
  102. });
  103. break;
  104. case "AT":
  105. atApi.disconnectDevice(function(res) {
  106. datas.setData("bluLinkStatus", false);
  107. datas.setData("connectPrefixName", "");
  108. // console.log(res)
  109. });
  110. break;
  111. case "JT":
  112. jtApi.disconnectDevice(function(res) {
  113. datas.setData("bluLinkStatus", false);
  114. datas.setData("connectPrefixName", "");
  115. });
  116. break;
  117. case "WQ":
  118. wqApi.disconnectDevice(function(res) {
  119. datas.setData("bluLinkStatus", false);
  120. datas.setData("connectPrefixName", "");
  121. });
  122. break;
  123. case "CG":
  124. cgApi.disconnectDevice(function(res) {
  125. datas.setData("bluLinkStatus", false);
  126. datas.setData("connectPrefixName", "");
  127. });
  128. break;
  129. case "TD":
  130. console.log(tdApi, '==================================')
  131. tdApi.disconnectDevice(function(res) {
  132. datas.setData("bluLinkStatus", false);
  133. datas.setData("connectPrefixName", "");
  134. console.log(res, '=============')
  135. });
  136. break;
  137. case "ZZ":
  138. zzApi.disconnectDevice(function(res) {
  139. datas.setData("bluLinkStatus", false);
  140. datas.setData("connectPrefixName", "");
  141. });
  142. break;
  143. case "MC":
  144. mcApi.disconnectDevice(function(res) {
  145. datas.setData("bluLinkStatus", false);
  146. datas.setData("connectPrefixName", "");
  147. });
  148. break;
  149. default:
  150. break;
  151. }
  152. }
  153. /**
  154. * 透传
  155. * type 10 写卡 20 写OBU
  156. */
  157. function transCmd(cmdArr, type, func, callBack = null) {
  158. var connectPrefixName = datas.getData("connectPrefixName");
  159. console.log('指令执行内容1', datas.getData("connectPrefixName"), cmdArr, type)
  160. switch (connectPrefixName) {
  161. case "ETC":
  162. //-------------deviceName前装-科畅
  163. console.log("datas.-----",datas.getData("deviceName"),datas.getData("deviceName").includes("KC"),datas.getData("deviceName").includes("K"))
  164. let obj = ""
  165. if (datas.getData("deviceName").includes("KC")|| datas.getData("deviceName").includes("K")) {
  166. console.log('kc执行内容====', cmdArr, type)
  167. obj=kcApi
  168. } else if (datas.getData("deviceName").includes("JL")) {
  169. obj=jlQZApi
  170. } else if (datas.getData("deviceName").includes("WJ")) {
  171. obj=wjApi9901
  172. } else if (datas.getData("deviceName").includes("ATS")) {
  173. obj=ArtcBleUtilApi
  174. } else if (datas.getData("deviceName").includes("MC")) {
  175. obj=mcApi9901
  176. }else if (datas.getData("deviceName").includes("WQ")) {
  177. obj=wqApi
  178. }
  179. obj.transCmd(cmdArr, type, function(res) {
  180. console.log(datas.getData("deviceName")+'执行内容====11111', res)
  181. if (res.code == 0) {
  182. func(res.data);
  183. } else {
  184. if (callBack != null) {
  185. callBack(res);
  186. } else {
  187. alertF(res.msg);
  188. }
  189. }
  190. });
  191. // else if (datas.getData("deviceName").includes("JY")) {
  192. // jyApiEtc.transCmd(cmdArr, type, function(res) {
  193. // console.log('JY执行内容====11111', res)
  194. // if (res.code == 0) {
  195. // func(res.data);
  196. // } else {
  197. // if (callBack != null) {
  198. // callBack(res);
  199. // } else {
  200. // alertF(res.msg);
  201. // }
  202. // }
  203. // });
  204. // }
  205. break;
  206. case "WJ":
  207. console.log('WJ执行内容====', cmdArr, type)
  208. wjApi.transCmd(cmdArr, type, function(res) {
  209. console.log('WJ执行内容====11111', res)
  210. if (res.code == 0) {
  211. func(res.data);
  212. } else {
  213. if (callBack != null) {
  214. callBack(res);
  215. } else {
  216. alertF(res.msg);
  217. }
  218. }
  219. });
  220. break;
  221. case "JL":
  222. console.log('JL执行内容====', cmdArr, type)
  223. jlApi.transCmd(cmdArr, type, function(res) {
  224. console.log('JL执行内容====11111', res)
  225. if (res.code == 0) {
  226. func(res.data);
  227. } else {
  228. if (callBack != null) {
  229. callBack(res);
  230. } else {
  231. alertF(res.msg);
  232. }
  233. }
  234. });
  235. break;
  236. case "BY":
  237. console.log('JL执行内容====', cmdArr, type)
  238. jyApi.transCmd(cmdArr, type, function(res) {
  239. console.log('JL执行内容====11111', res)
  240. if (res.code == 0) {
  241. func(res.data);
  242. } else {
  243. if (callBack != null) {
  244. callBack(res);
  245. } else {
  246. alertF(res.msg);
  247. }
  248. }
  249. });
  250. break;
  251. case "BY":
  252. console.log('JL执行内容====', cmdArr, type)
  253. jyApi.transCmd(cmdArr, type, function(res) {
  254. console.log('JL执行内容====11111', res)
  255. if (res.code == 0) {
  256. func(res.data);
  257. } else {
  258. if (callBack != null) {
  259. callBack(res.msg);
  260. } else {
  261. alertF(res.msg);
  262. }
  263. }
  264. });
  265. break;
  266. case "JY":
  267. jyApi.transCmd(cmdArr, type, function(res) {
  268. if (res.code == 0) {
  269. func(res.data);
  270. } else {
  271. if (callBack != null) {
  272. callBack(res);
  273. } else {
  274. alertF(res.msg);
  275. }
  276. }
  277. });
  278. break;
  279. case "AT":
  280. atApi.transCmd(cmdArr, type, function(res) {
  281. if (res.code == 0) {
  282. func(res.data);
  283. } else {
  284. if (callBack != null) {
  285. callBack(res);
  286. } else {
  287. alertF(res.msg);
  288. }
  289. }
  290. });
  291. break;
  292. case "JT":
  293. jtApi.transCmd(cmdArr, type, function(res) {
  294. console.log('指令执行结果:', res)
  295. if (res.code == 0) {
  296. func(res.data);
  297. } else {
  298. if (callBack != null) {
  299. callBack(res);
  300. } else {
  301. alertF(res.msg);
  302. }
  303. }
  304. });
  305. break;
  306. case "WQ":
  307. wqApi.transCmd(cmdArr, type, function(res) {
  308. console.log('握奇执行结果:===========', res)
  309. if (res.code == 0) {
  310. func(res.data);
  311. } else {
  312. if (callBack != null) {
  313. callBack(res);
  314. } else {
  315. alertF(res.msg);
  316. }
  317. }
  318. });
  319. break;
  320. case "CG":
  321. cgApi.transCmd(cmdArr, type, function(res) {
  322. if (res.code == 0) {
  323. func(res.data);
  324. } else {
  325. if (callBack != null) {
  326. callBack(res);
  327. } else {
  328. alertF(res.msg);
  329. }
  330. }
  331. });
  332. break;
  333. case "TD":
  334. console.log('TD执行内容====', cmdArr, type)
  335. tdApi.transCmd(cmdArr, type, function(res) {
  336. console.log('TD执行内容====123', cmdArr, type,res)
  337. if (res.code == 0) {
  338. func(res.data);
  339. } else {
  340. if (callBack != null) {
  341. callBack(res);
  342. } else {
  343. alertF(res.msg);
  344. }
  345. }
  346. });
  347. break;
  348. case "ZZ":
  349. zzApi.transCmd(cmdArr, type, function(res) {
  350. if (res.code == 0) {
  351. func(res.data);
  352. } else {
  353. if (callBack != null) {
  354. callBack(res);
  355. } else {
  356. alertF(res.msg);
  357. }
  358. }
  359. });
  360. break;
  361. case "MC":
  362. mcApi.transCmd(cmdArr, type, function(res) {
  363. if (res.code == 0) {
  364. func(res.data);
  365. } else {
  366. if (callBack != null) {
  367. callBack(res);
  368. } else {
  369. alertF(res.msg);
  370. }
  371. }
  372. });
  373. break;
  374. default:
  375. datas.setData("bluLinkStatus", false);
  376. datas.setData("connectPrefixName", "");
  377. if (callBack != null) {
  378. callBack("没有找到设备"+connectPrefixName);
  379. } else {
  380. alertF("没有找到设备");
  381. }
  382. break;
  383. }
  384. }
  385. /**
  386. * 透传
  387. * type 10 写卡 20 写OBU
  388. */
  389. function transCmdArrAfter(cmdArr, type) {
  390. return new Promise(async (resole, reject) => {
  391. try {
  392. console.log('指令执行内容', cmdArr, type)
  393. // 判断是否为数组
  394. if (typeof cmdArr === 'string') {
  395. // 如果是字符串,转换为字符数组
  396. cmdArr = cmdArr.split(',');
  397. }
  398. const datas = {}
  399. for (let i = 0; i < cmdArr.length; i++) {
  400. const cmdStr = cmdArr[i]
  401. console.log(i, cmdStr, 'cmdStr');
  402. const itemDatas = await transCmd([cmdStr], type)
  403. datas[cmdStr] = itemDatas
  404. }
  405. console.log(datas, '----------执行结果---------', cmdArr, type);
  406. for (let i in datas) {
  407. console.log(" datas[i]", datas[i])
  408. let itemCode = datas[i][0].substring(datas[i][0].length - 4);
  409. if (itemCode !== '9000') {
  410. reject(datas);
  411. uni.hideLoading()
  412. return
  413. }
  414. datas[i][0] = datas[i][0].toUpperCase();
  415. }
  416. resole(datas)
  417. } catch (e) {
  418. //TODO handle the exception
  419. console.log('错误错误', e);
  420. reject(e);
  421. }
  422. })
  423. }
  424. /**
  425. * 提示加关蓝牙
  426. */
  427. function alertF(msg) {
  428. // 隐藏加载框
  429. // tools.hideLoadingAlert();
  430. // 提示对话框
  431. tools.showModalAlert(msg);
  432. // stopHeartbeat();
  433. }
  434. module.exports = {
  435. disconnectDevice,
  436. transCmd,
  437. transCmdArrAfter
  438. };