From 3e5e1d3d5aedfde98b7cb8821aa42cf855619c39 Mon Sep 17 00:00:00 2001 From: 15815213711 <zhaochongyi@isu6.com> Date: 星期一, 26 八月 2024 19:55:37 +0800 Subject: [PATCH] 初始化项目 --- electron/controller/icrf.js | 342 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 324 insertions(+), 18 deletions(-) diff --git a/electron/controller/icrf.js b/electron/controller/icrf.js index 9e79d44..82c8258 100644 --- a/electron/controller/icrf.js +++ b/electron/controller/icrf.js @@ -1,32 +1,338 @@ const {Controller} = require("ee-core"); const Ps = require("ee-core/ps"); -const koffi = require('koffi'); const path = require("path"); + +const PROTOCEL_FLAG = { + _reader_cmd_STX: 165, //鍛戒护澶� + _reader_cmd_ETX: 213, //鍛戒护灏� +} + +/** + * 璇诲啓鍣ㄥ懡浠� + */ +const READER_CMD = { + _reader_server_connect: 5, //璇诲啓鍣ㄦ湇鍔¤繛鎺� + _reader_server_close: 6, //璇诲啓鍣ㄦ湇鍔℃柇寮�杩炴帴 + _reader_cmd_connect: 10, //杩炴帴璇诲啓鍣� + _reader_cmd_disconnect: 11, // 鍏抽棴璇诲啓鍣� + _reader_cmd_read_ver: 12, // 璇诲彇纭欢鐗堟湰鍙� + _reader_cmd_read_snr: 13, // 璇诲彇搴忓垪鍙� + _reader_cmd_beep: 14, //璇诲啓鍣ㄩ福鍝� + _reader_cmd_set_baud: 15, //璁剧疆涓插彛娉㈢壒鐜� + _reader_cmd_get_status: 16, //鑾峰彇澶у崱搴ф槸鍚︽湁鍗� + _reader_cmd_write_eeprom: 17, //鍐檈eprom + _reader_cmd_read_eeprom: 18, //璇籩eprom + _reader_cmd_set_number: 19, //璁剧疆璇诲啓鍣ㄧ紪鍙� + _reader_cmd_get_number: 20, //鑾峰彇璇诲啓缂栧彿 + _reader_cmd_turn_on: 21, //鎺ヨЕ寮忓崱搴т笂鐢� + _reader_cmd_turn_off: 22, //鎺ヨЕ寮忓崱搴т笅鐢� + _reader_cmd_rf_reset: 23, //灏勯澶村浣� + _reader_cmd_select_protocol: 24, //閫夋嫨鍗忚 + + _reader_cmd_rf_card: 50, // 瀵诲崱 TypeA + _reader_cmd_rf_halt: 51, // 鍋滄鍗� TypeA + _reader_cmd_rf_card_b: 52, // 瀵诲崱 TypeB + _reader_cmd_rf_halt_b: 53, // 鍋滄鍗� TypeB + _reader_cmd_m_auth_key: 54, //S50/S70鏍¢獙瀵嗙爜 + _reader_cmd_m_write: 55, //s50/s70鍐欐暟鎹� + _reader_cmd_m_read: 56, //s50/s70璇绘暟鎹� + _reader_cmd_m_init_value: 57, //s50/s70鍒濆鍖栧�� + _reader_cmd_m_read_value: 58, //s50/s70璇诲�� + _reader_cmd_m_increment_value: 59, //s50/s70鍔犲�� + _reader_cmd_m_decrement_value: 60, //s50/s70鍑忓�� + + _reader_cmd_c_cpu_reset: 65, //闈炴帴cpu鍗″浣峊ypeA + _reader_cmd_c_cpu_reset_b: 66, //闈炴帴cpu鍗″浣峊ypeB + _reader_cmd_c_cpu_Transmit: 67, //闈炴帴cpu鍙戦�佹寚浠ypeA/B + + _reader_cmd_uc_auth_key: 70, //ultralight C 鏍¢獙瀵嗙爜 + _reader_cmd_uev_auth_key: 71, //ultralight EV 鏍¢獙瀵嗙爜 + _reader_cmd_u_read: 72, //璇籾ltralight/C鏁版嵁 + _reader_cmd_u_write: 73, //鍐檜ltralight/C鏁版嵁 + _reader_cmd_uc_change_key: 74, //鏇存敼ultralight C瀵嗙爜 + + _reader_cmd_ntag_auth_pwd: 80, //鏍¢獙ntag瀵嗙爜 + _reader_cmd_ntag_read: 81, //璇籲tag鏁版嵁 + _reader_cmd_ntag_write: 82, //鍐檔tag鏁版嵁 + _reader_cmd_ntag_counter: 83, //璇籲tag涓璶fc鍗曞悜璁℃暟鍣ㄧ殑鍊� + _reader_cmd_ntag_version: 84, //璇籲tag鐗堟湰淇℃伅 + _reader_cmd_ntag_sig: 85, //璇诲彇ntag绛惧悕淇℃伅 + + _reader_cmd_icode2_set_mode: 100, //璁剧疆鏁版嵁浜ゆ崲妯″紡 + _reader_cmd_icode2_inventory: 101, // ICode2鍗℃墽琛岄槻鍐茬獊鎿嶄綔,杩斿洖鍗$殑 DSFID 鍜� UID + _reader_cmd_icode2_select: 102, //璁剧疆ICode2鍗′负閫夋嫨鐘舵��. + _reader_cmd_icode2_reset_to_ready: 103, //浣縄Code2鍗¤繘鍏� Ready 鐘舵�� + _reader_cmd_icode2_to_quiet: 104, //浣縄Code2鍗¤繘鍏� Quiet 鐘舵�� + _reader_cmd_icode2_read: 105, //璇诲彇ICode2澶氫釜鍧椾俊鎭� + _reader_cmd_icode2_write: 106, //鍐欏叆ICode2澶氫釜鍧椾俊鎭� + _reader_cmd_icode2_write_afi: 107, //鍐橝FI(搴旂敤鏍囪瘑) + _reader_cmd_icode2_write_dsfid: 108, //鍐橠SFID(鏁版嵁瀛樺偍鏍囪瘑) + _reader_cmd_icode2_set_eas: 109, //璁剧疆EAS + _reader_cmd_icode2_lock: 110, //閿佸畾鏁版嵁鍧� + _reader_cmd_icode2_lock_afi: 111, //閿佸畾AFI + _reader_cmd_icode2_lock_dsfid: 112, //閿佸畾DSFID + _reader_cmd_icode2_lock_eas: 113, //閿佸畾EAS + _reader_cmd_icode2_get_mulblock_security: 114, //璇诲彇ICode2鐨勫涓潡鐨勫畨鍏ㄧ姸鎬佷俊鎭� + _reader_cmd_icode2_get_sysinfo: 115, //鑾峰彇ICode2绯荤粺淇℃伅 + + _reader_cmd_uhf_inventory: 120, //鏌ユ壘鏍囩 + _reader_cmd_uhf_select_mode: 121, //璁剧疆閫夋嫨妯″紡 + _reader_cmd_uhf_select: 122, //閫夋嫨鏍囩 + _reader_cmd_uhf_read: 123, //璇绘爣绛炬暟鎹瓨鍌ㄥ尯 + _reader_cmd_uhf_write: 124, //鍐欐爣绛炬暟鎹瓨鍌ㄥ尯 + _reader_cmd_uhf_lock_unlock: 125, //閿佸畾鎴栬В閿佹暟鎹瓨鍌ㄥ尯 + _reader_cmd_uhf_kill: 126, //鐏椿鏍囩 + _reader_cmd_uhf_set_region: 127, //璁剧疆璇诲啓鍣ㄥ伐浣滃湴鍖� + _reader_cmd_uhf_set_channel: 128, //璁剧疆宸ヤ綔淇¢亾 + _reader_cmd_uhf_get_channel: 129, //鑾峰彇宸ヤ綔淇¢亾 + _reader_cmd_uhf_set_hfss: 130, //璁剧疆鑷姩璺抽 + _reader_cmd_uhf_set_papower: 131, //璁剧疆鍙戝皠鍔熺巼 + _reader_cmd_uhf_get_papower: 132, //鑾峰彇鍙戝皠鍔熺巼 + _reader_cmd_uhf_set_cw: 133, //璁剧疆鍙戝皠杩炵画杞芥尝 + _reader_cmd_uhf_set_modem: 134, //璁剧疆璇诲啓鍣ㄦ帴鏀惰В璋冨櫒鍙傛暟 + _reader_cmd_uhf_get_modem: 135, //鑾峰彇璇诲啓鍣ㄦ帴鏀惰В璋冨櫒鍙傛暟 + + _reader_cmd_lf_set_datarate: 150, //璁剧疆鎺ユ敹棰戠巼 + _reader_cmd_lf_open_mod: 151, //鎵撳紑 125KHz 灏勯淇″彿 + _reader_cmd_lf_close_mod: 152, //鍏抽棴 125KHz 灏勯淇″彿 + _reader_cmd_t5557_write_free: 153, //鍚戝皠棰戝崱涓啓鍏ユ暟鎹�(涓嶅姞瀵�) + _reader_cmd_t5557_write_pwd: 154, //鍚戝皠棰戝崱涓啓鍏ユ暟鎹�(鍔犲瘑) + _reader_cmd_t5557_read_direct: 155, //璇诲彇T5557鍗′腑鎸囧畾鏁版嵁椤垫寚瀹氭暟鎹尯鐨勬暟鎹� + _reader_cmd_t5557_aor: 156, //浣跨敤瀵嗙爜鍞ら啋 AOR 妯″紡杩涜璇诲姞瀵嗙殑T5557灏勯鍗� + _reader_cmd_t5557_to_id: 157, //灏� T5557 鍗¤浆鎹㈡垚 ID 鍗� + _reader_cmd_id_restore_t5557: 158, //灏嗚浆鎹㈡垚鐨� ID 鍗¤繕鍘熸垚 T5557 鍗� + _reader_cmd_em_read: 159, //璇诲彇EM4001鎴栧吋瀹� ID 鍗℃暟鎹� + _reader_cmd_em4305_write: 160, //鍚� EM4305 鍗℃寚瀹氬湴鍧�鍐欏叆鏁版嵁 + _reader_cmd_em4305_read_biphase: 161, //璇诲彇 EM4305 鍗℃寚瀹氬湴鍧�鐨勬暟鎹� + _reader_cmd_em4305_read_manchester: 162, //璇诲彇 EM4305 鍗℃寚瀹氬湴鍧�鐨勬暟鎹� + _reader_cmd_em4305_login: 163, //楠岃瘉 EM4305 鍗″瘑鐮� + _reader_cmd_em4305_protect: 164, //閿佸畾 EM4305 鍗℃寚瀹氬湴鍧� + _reader_cmd_em4305_disable: 165, //浼戠湢 EM4305 鍗� + _reader_cmd_em4305_set_mode: 166, //璁剧疆EM鍗$被鍨� + _reader_cmd_em4305_to_id: 167, //鎶� EM4305 鏍煎紡鍖栨垚 ID 鍗� + _reader_cmd_em4305_to_fdxb: 168, //鎶� EM4305 鏍煎紡鍖栨垚 FDX_B 鍗� + + _reader_cmd_cpu_reset: 200, //鎺ヨЕcpu澶嶄綅 + _reader_cmd_cpu_transmit: 201, //鎺ヨЕcpu鍙戦�佸懡浠� + _reader_cmd_cpu_set_baud: 202, //璁剧疆鎺ヨЕcpu娉㈢壒鐜� + + _reader_cmd_24c_write: 205, //鍐�24c绯诲垪鍗$墖 + _reader_cmd_24c_read: 206, //璇�24c绯诲垪鍗$墖 + _reader_cmd_45D041_write: 207, //鍐�45D041鍗� + _reader_cmd_45D041_read: 208, //璇�45D041鍗� + + _reader_cmd_4442_read: 210, //璇籗LE4442鍗� + _reader_cmd_4442_write: 211, //鍐橲LE4442鍗� + _reader_cmd_4442_verify_sc: 212, //楠岃瘉SLE4442鍗″瘑鐮� + _reader_cmd_4442_change_sc: 213, //鏇存敼SLE4442鍗″瘑鐮� + _reader_cmd_4442_read_sc: 214, //璇籗LE4442鍗″瘑鐮� + _reader_cmd_4442_read_counter: 215, //璇诲彇閿欒璁℃暟 + _reader_cmd_4442_read_pro_bit: 216, //璇讳繚鎶や綅 + _reader_cmd_4442_protect: 217, //淇濇姢鏁版嵁 + + _reader_cmd_4428_read: 220, //璇籗LE4428鍗� + _reader_cmd_4428_write: 221, //鍐橲LE4428鍗� + _reader_cmd_4428_verify_sc: 222, //楠岃瘉SLE4428鍗″瘑鐮� + _reader_cmd_4428_change_sc: 223, //鏇存敼SLE4428鍗″瘑鐮� + _reader_cmd_4428_read_sc: 224, //璇籗LE4428鍗″瘑鐮� + _reader_cmd_4428_read_counter: 225, //璇诲彇閿欒璁℃暟 + _reader_cmd_4428_read_pro: 226, //甯︿繚鎶や綅璇� + _reader_cmd_4428_write_pro: 227, //鍐欐暟鎹苟淇濇姢 + _reader_cmd_4428_protect: 228, //淇濇姢鏁版嵁 + + _reader_cmd_102_read: 230, //璇�102鍗� + _reader_cmd_102_write: 231, //鍐�102鍗� + _reader_cmd_102_erase: 232, //鎿﹂櫎鏁版嵁 + _reader_cmd_102_verify_sc: 233, //楠岃瘉鐢ㄦ埛瀵嗙爜 + _reader_cmd_102_change_sc: 234, //鏇存敼鐢ㄦ埛瀵嗙爜 + _reader_cmd_102_read_sc: 235, //璇诲彇鐢ㄦ埛瀵嗙爜 + _reader_cmd_102_read_sc_counter: 236, //璇诲彇鐢ㄦ埛瀵嗙爜閿欒璁℃暟鍣� + _reader_cmd_102_verify_erase_key: 237, //鏍¢獙鎿﹂櫎瀵嗙爜 + _reader_cmd_102_change_erase_key: 238, //鏇存敼鎿﹂櫎瀵嗙爜 + _reader_cmd_102_read_erase_key: 239, //璇诲彇鎿﹂櫎瀵嗙爜 + _reader_cmd_102_read_erase_counter: 240, //璇诲彇搴旂敤浜屽尯鎿﹂櫎璁℃暟 + _reader_cmd_102_PR_RD_clear: 241, //璇诲啓灞炴�ф帶鍒朵綅娓呴浂 + _reader_cmd_102_simulate_psnl: 242, //妯℃嫙涓汉鍖� + _reader_cmd_102_psnl: 243, //涓汉鍖� + + _reader_cmd_1604_read: 250, //璇�1604鍗� + _reader_cmd_1604_write: 251, //鍐�1604鍗� + _reader_cmd_1604_erase: 252, //鎿﹂櫎鏁版嵁 + _reader_cmd_1604_verify_sc: 253, //楠岃瘉瀵嗙爜 + _reader_cmd_1604_change_sc: 254, //鏇存敼瀵嗙爜 + _reader_cmd_1604_read_sc: 255, //璇诲彇瀵嗙爜 + _reader_cmd_1604_read_sc_counter: 256, //璇诲彇瀵嗙爜閿欒璁℃暟 + _reader_cmd_1604_verify_erase_key: 257, //楠岃瘉鎿﹂櫎瀵嗙爜 + _reader_cmd_1604_change_erase_key: 258, //鏇存敼鎿﹂櫎瀵嗙爜 + _reader_cmd_1604_read_erase_key: 259, //璇诲彇鎿﹂櫎瀵嗙爜 + _reader_cmd_1604_read_erase_key_counter: 260, //璇诲彇鎿﹂櫎瀵嗙爜閿欒璁℃暟 + _reader_cmd_1604_PR_RD_clear: 261, //璇诲啓灞炴�ф帶鍒朵綅娓呴浂 + _reader_cmd_1604_simulate_psnl: 262, //妯℃嫙涓汉鍖� + _reader_cmd_1604_psnl: 263, //涓汉鍖� + + _reader_cmd_1608_reset: 270, //澶嶄綅 + _reader_cmd_1608_read_user: 271, //璇荤敤鎴峰尯 + _reader_cmd_1608_write_user: 272, //鍐欑敤鎴峰尯 + _reader_cmd_1608_read_config: 273, //璇婚厤缃尯 + _reader_cmd_1608_write_config: 274, //鍐欓厤缃尯 + _reader_cmd_1608_verify_pwd: 275, //鏍¢獙瀵嗙爜 + _reader_cmd_1608_change_pwd: 276, //鏇存敼瀵嗙爜 + _reader_cmd_1608_read_pwd: 277, //璇诲瘑鐮� + _reader_cmd_1608_read_pwd_counter: 278, //璇诲瘑鐮侀敊璇鏁板櫒 + _reader_cmd_1608_read_ar: 279, //璇籄R(鐢ㄦ埛鍖鸿闂潈闄愬瘎瀛樺櫒) + _reader_cmd_1608_write_ar: 280, //鍐橝R + _reader_cmd_1608_read_fuse: 281, //璇荤啍鏂爣蹇� + _reader_cmd_1608_psnl: 282, //涓汉鍖� + + _reader_cmd_153_reset: 290, //澶嶄綅 + _reader_cmd_153_read_user: 291, //璇荤敤鎴峰尯 + _reader_cmd_153_write_user: 292, //鍐欑敤鎴峰尯 + _reader_cmd_153_read_config: 293, //璇婚厤缃尯 + _reader_cmd_153_write_config: 294, //鍐欓厤缃尯 + _reader_cmd_153_verify_pwd: 295, //鏍¢獙瀵嗙爜 + _reader_cmd_153_change_pwd: 296, //鏇存敼瀵嗙爜 + _reader_cmd_153_read_pwd: 297, //璇诲瘑鐮� + _reader_cmd_153_read_pwd_counter: 298, //璇诲瘑鐮侀敊璇鏁板櫒 + _reader_cmd_153_read_ar: 299, //璇籄R(鐢ㄦ埛鍖鸿闂潈闄愬瘎瀛樺櫒) + _reader_cmd_153_write_ar: 300, //鍐橝R + _reader_cmd_153_read_dcr: 301, //璇籇CR(璁惧閰嶇疆瀵勫瓨鍣�) + _reader_cmd_153_write_dcr: 302, //鍐橠CR + _reader_cmd_153_read_fuse: 303, //璇荤啍鏂爣蹇� + _reader_cmd_153_write_fuse: 304, //鍐欑啍鏂爣蹇� + _reader_cmd_153_psnl: 305, //涓汉鍖� + + _reader_cmd_mag_read: 500, //璇荤鏉″崱鏁版嵁 + _reader_cmd_identity_read: 501, //璇昏韩浠借瘉淇℃伅 + _reader_cmd_ssc_read: 502, //璇荤ぞ淇濆崱鍩烘湰淇℃伅 + _reader_cmd_hc_read: 503, //璇诲仴搴峰崱鍙� + _reader_cmd_bc_read: 504 //璇婚摱琛屽崱/淇$敤鍗″彿 + +} + class IcrfController extends Controller{ - hcicrf =null; + target =null; + socket =null; + socketOpen =false; + reader = {}; constructor(ctx) { super(ctx); - const dllPath = path.join(Ps.getExtraResourcesDir(),'dll','hc_icrf32.dll'); - this.hcicrf =koffi.load(dllPath); - } - async hc_init(params){ - const hc_init = this.hcicrf.func('int __stdcall hc_init(short port, uint32_t baud)'); - let hcInit = hc_init(2, 115200); - console.log(hcInit); - if (hcInit <=0){ - // let errMsg = this.getErrMsg(hcInit); - //console.log(errMsg) + try { + this.socket = new WebSocket("ws://localhost:8256/ReaderWebServer/"); + this.socket.onopen = this.WSonOpen; + this.socket.onmessage = this.WSonMessage; + this.socket.onclose = this.WSonClose; + this.socket.onerror = this.WSonError; + this.target = new EventTarget(); + } catch (ex) { + console.log(ex) + //alert(ex.Message); } - return hcInit; + } + onResult = function() { + this.target.addEvent("SocketRet", (ret)=>{ + console.log(ret) + }); + }; + + WSonOpen(){ + this.socketOpen = true; + const resultData = { + functionId: READER_CMD._reader_server_connect, + result: 0, + resultData: "" + }; + if (this.target != null) + this.target.fireEvent("SocketRet", resultData); + } - getErrMsg(st){ - let getErrMsg = this.hcicrf.func("int getErrMsg(short st,short lg, char errMsg)"); - let errMsg = getErrMsg(st, 0, 1024); - console.log(errMsg) - return errMsg; + WSonMessage = function(msg) { + var str = msg.data.split('|'); + var len = str.length; + if (str[0] != PROTOCEL_FLAG._reader_cmd_STX || str[len - 1] != PROTOCEL_FLAG._reader_cmd_ETX) { + return; + } + //璁剧疆鍥炶皟 + const resultData = { + functionId: parseInt(str[1]), //鍛戒护浠g爜 + result: parseInt(str[2]), //鎵ц缁撴灉浠g爜, 0 鎴愬姛, 鍏跺畠澶辫触 + resultData: len == 5 ? str[3] : "" //杩斿洖缁撴灉 + }; + + if (this.target != null){ + this.target.fireEvent("SocketRet", resultData); + } } + WSonClose(){ + this.socketOpen = false; + } + + WSonError(){ + //鏈嶅姟鏈惎鍔� + } + + SendCmd = function(readerCmd) { + if (true === this.socketOpen) { + var len = readerCmd.length; + var entryCmd = PROTOCEL_FLAG._reader_cmd_STX + "|"; + for (var i = 0; i < len; i++) { + entryCmd += readerCmd[i] + "|"; + } + entryCmd += PROTOCEL_FLAG._reader_cmd_ETX; + this.socket.send(entryCmd); + } else { + // 鏈嶅姟鏈惎鍔� + } + }; + /** + * 灏嗗瓧绗︿覆杞崲鎴�16杩涘埗瀛楃 + * @param {string} str 瑕佽浆鎹㈢殑瀛楃涓� + * @returns {string} 杞崲鍚庣殑16杩涘埗瀛楃 + */ + strToHexCharCode = function(str) { + if (str === "") + return ""; + var hexCharCode = []; + //hexCharCode.push("0x"); + for (var i = 0; i < str.length; i++) { + hexCharCode.push((str.charCodeAt(i)).toString(16)); + } + return hexCharCode.join(""); + }; + /** + * 灏�16杩涘埗瀛楃杞崲涓哄瓧绗︿覆 + * @param {string} hexCharCodeStr 瑕佽浆鎹㈢殑16杩涘埗瀛楃 + * @returns {string} 杞崲鍚庣殑瀛楃涓� + */ + hexCharCodeToStr = function(hexCharCodeStr) { + var trimedStr = hexCharCodeStr.trim(); + var rawStr = + trimedStr.substr(0, 2).toLowerCase() === "0x" ? + trimedStr.substr(2) : + trimedStr; + var len = rawStr.length; + if (len % 2 !== 0) { + alert("Illegal Format ASCII Code!"); + return ""; + } + var curCharCode; + var resultStr = []; + for (var i = 0; i < len; i = i + 2) { + curCharCode = parseInt(rawStr.substr(i, 2), 16); // ASCII Code Value + resultStr.push(String.fromCharCode(curCharCode)); + } + return resultStr.join(""); + }; + /** + * 杩炴帴涓插彛璇诲啓鍣� + * @param {number} port 绔彛鍙�, 鍙栧�� 0 ~ 19, 瀵瑰簲绔彛 COM1 ~ COM20 + * @param {number} baud 娉㈢壒鐜�, 鍙栧�� 9600 ~ 115200 + * @returns {number} 璇诲啓鍣ㄥ彞鏌� + */ + connectSerialPort = function(params) { + this.SendCmd([READER_CMD._reader_cmd_connect, CONNECT_MODE._connect_mode_serial_port, params.port, params.baud]); + }; } IcrfController.toString = ()=> '[class IcrfController]'; -- Gitblit v1.8.0