From b4a14804f37d0d715af1f00ccb9e1621d238cc58 Mon Sep 17 00:00:00 2001
From: chen.llin <1442464845@qq.comm>
Date: 星期四, 15 一月 2026 11:33:03 +0800
Subject: [PATCH] 异常处理
---
common/rfid-input-helper.js | 84 ++++++++++++++-------
App.vue | 149 ++++++++++++++++++++++++++----------
2 files changed, 163 insertions(+), 70 deletions(-)
diff --git a/App.vue b/App.vue
index beab781..9e4f913 100644
--- a/App.vue
+++ b/App.vue
@@ -9,44 +9,96 @@
// #ifdef APP-PLUS
// 鍏ㄥ眬鍒濆鍖朢FID妯″潡锛堝簲鐢ㄥ惎鍔ㄦ椂鍒濆鍖栵紝鍏抽棴app鏃跺叧闂級
- console.log('[App] 鍒濆鍖朢FID妯″潡...');
- const uhfModel = uni.requireNativePlugin("iData-UHFPlugin-UHFModule");
- const globalEvent = uni.requireNativePlugin('globalEvent');
- const modal = uni.requireNativePlugin('modal');
+ // 娉ㄦ剰锛歊FID鍒濆鍖栭噰鐢ㄥ紓姝ユ柟寮忥紝涓嶉樆濉為〉闈㈠姞杞�
+ // 鍗充娇RFID鍒濆鍖栧け璐ワ紝涔熶笉褰卞搷椤甸潰姝e父浣跨敤
+ console.log('[App] 寮�濮嬪紓姝ュ垵濮嬪寲RFID妯″潡锛堜笉闃诲椤甸潰鍔犺浇锛�...');
- if (!uhfModel) {
- console.error('[App] RFID鎻掍欢鏈壘鍒�');
- } else {
- // 鐩戝惉涓婄數浜嬩欢
- let isPowerOn = false;
- globalEvent.addEventListener('POWEREvent', function(e) {
- console.log('[App] POWEREvent:', JSON.stringify(e));
- if (e && e.status === 'connected') {
- isPowerOn = true;
- console.log('[App] 鉁撯湏鉁� RFID妯″潡宸蹭笂鐢垫垚鍔燂紒');
- } else {
- isPowerOn = false;
- console.log('[App] 鉁� RFID妯″潡鏈笂鐢�');
+ // 浣跨敤setTimeout纭繚涓嶉樆濉炰富绾跨▼
+ setTimeout(() => {
+ try {
+ const uhfModel = uni.requireNativePlugin("iData-UHFPlugin-UHFModule");
+ const globalEvent = uni.requireNativePlugin('globalEvent');
+ const modal = uni.requireNativePlugin('modal');
+
+ if (!uhfModel) {
+ console.warn('[App] 鈿� RFID鎻掍欢鏈壘鍒帮紝椤甸潰鍙甯镐娇鐢紙RFID鍔熻兘涓嶅彲鐢級');
+ return;
}
- });
-
- // 鍒濆鍖朢FID妯″潡锛堜娇鐢⊿LR妯″潡锛屼笌娴嬭瘯椤甸潰涓�鑷达級
- uhfModel.initUHF(1, (ret) => {
- console.log('[App] initUHF result:', ret);
- if (ret && typeof ret === 'string' && ret.includes('success')) {
- console.log('[App] 鉁� RFID妯″潡鍒濆鍖栨垚鍔�');
- } else {
- console.warn('[App] 鈿� RFID妯″潡鍒濆鍖栧け璐�:', ret);
+
+ // 鐩戝惉涓婄數浜嬩欢
+ let isPowerOn = false;
+ const powerEventHandler = function(e) {
+ console.log('[App] POWEREvent:', JSON.stringify(e));
+ if (e && e.status === 'connected') {
+ isPowerOn = true;
+ console.log('[App] 鉁撯湏鉁� RFID妯″潡宸蹭笂鐢垫垚鍔燂紒');
+ } else {
+ isPowerOn = false;
+ console.log('[App] 鉁� RFID妯″潡鏈笂鐢�');
+ }
+ };
+ globalEvent.addEventListener('POWEREvent', powerEventHandler);
+
+ // 淇濆瓨浜嬩欢澶勭悊鍣ㄥ紩鐢紝鐢ㄤ簬娓呯悊
+ this.powerEventHandler = powerEventHandler;
+
+ // 璁剧疆瓒呮椂鏈哄埗锛氬鏋�10绉掑唴娌℃湁鍒濆鍖栨垚鍔燂紝鍏佽椤甸潰缁х画浣跨敤
+ const initTimeout = setTimeout(() => {
+ console.warn('[App] 鈿� RFID妯″潡鍒濆鍖栬秴鏃讹紙10绉掞級锛岄〉闈㈠彲姝e父浣跨敤锛圧FID鍔熻兘鍙兘涓嶅彲鐢級');
+ if (modal) {
+ modal.toast({
+ message: 'RFID鍒濆鍖栬秴鏃讹紝椤甸潰鍙甯镐娇鐢�',
+ duration: 2
+ });
+ }
+ }, 10000); // 10绉掕秴鏃�
+
+ // 鍒濆鍖朢FID妯″潡锛堜娇鐢⊿LR妯″潡锛屼笌娴嬭瘯椤甸潰涓�鑷达級
+ try {
+ uhfModel.initUHF(1, (ret) => {
+ clearTimeout(initTimeout); // 娓呴櫎瓒呮椂瀹氭椂鍣�
+ console.log('[App] initUHF result:', ret);
+ if (ret && typeof ret === 'string' && ret.includes('success')) {
+ console.log('[App] 鉁� RFID妯″潡鍒濆鍖栨垚鍔�');
+ } else {
+ console.warn('[App] 鈿� RFID妯″潡鍒濆鍖栧け璐�:', ret);
+ if (modal) {
+ modal.toast({
+ message: 'RFID鍒濆鍖栧け璐ワ紝椤甸潰鍙甯镐娇鐢�',
+ duration: 2
+ });
+ }
+ }
+ });
+ } catch (initError) {
+ clearTimeout(initTimeout); // 娓呴櫎瓒呮椂瀹氭椂鍣�
+ console.error('[App] 鈿� RFID妯″潡鍒濆鍖栧紓甯�:', initError);
+ console.warn('[App] 鈿� 椤甸潰鍙甯镐娇鐢紙RFID鍔熻兘涓嶅彲鐢級');
+ if (modal) {
+ modal.toast({
+ message: 'RFID鍒濆鍖栧紓甯革紝椤甸潰鍙甯镐娇鐢�',
+ duration: 2
+ });
+ }
}
- });
-
- // 淇濆瓨寮曠敤锛岀敤浜巓nExit鏃跺叧闂�
- this.uhfModel = uhfModel;
- this.globalEvent = globalEvent;
- }
+
+ // 淇濆瓨寮曠敤锛岀敤浜巓nExit鏃跺叧闂�
+ this.uhfModel = uhfModel;
+ this.globalEvent = globalEvent;
+ } catch (error) {
+ console.error('[App] 鈿� RFID妯″潡鍒濆鍖栬繃绋嬪嚭閿�:', error);
+ console.warn('[App] 鈿� 椤甸潰鍙甯镐娇鐢紙RFID鍔熻兘涓嶅彲鐢級');
+ }
+ }, 100); // 寤惰繜100ms鎵ц锛岀‘淇濅笉闃诲椤甸潰鍔犺浇
// 鍚姩鍏ㄥ眬RFID杈撳叆鍔╂墜锛堢敤浜庤嚜鍔ㄥ~鍏ヨ緭鍏ユ锛�
- startRFIDInputHelper();
+ // 浣跨敤try-catch纭繚鍗充娇RFID鍔╂墜鍚姩澶辫触涔熶笉褰卞搷椤甸潰
+ try {
+ startRFIDInputHelper();
+ } catch (error) {
+ console.error('[App] 鈿� RFID杈撳叆鍔╂墜鍚姩澶辫触:', error);
+ console.warn('[App] 鈿� 椤甸潰鍙甯镐娇鐢紙RFID鎵弿鍔熻兘涓嶅彲鐢級');
+ }
// #endif
// 娉ㄦ剰锛氫互涓嬩唬鐮佸凡搴熷純锛屾敼涓轰笂闈㈢殑鍏ㄥ眬鍒濆鍖栨柟寮�
@@ -348,16 +400,29 @@
onExit: function() {
console.log('App Exit')
// #ifdef APP-PLUS
- // 鍋滄鍏ㄥ眬RFID杈撳叆鍔╂墜
- stopRFIDInputHelper();
-
- // 鍏抽棴RFID妯″潡
- if (this.uhfModel && this.uhfModel.closeUHF) {
- this.uhfModel.closeUHF();
- console.log('[App] 鉁� RFID妯″潡宸插叧闂�');
+ // 鍋滄鍏ㄥ眬RFID杈撳叆鍔╂墜锛堜娇鐢╰ry-catch纭繚鍗充娇澶辫触涔熶笉褰卞搷閫�鍑猴級
+ try {
+ stopRFIDInputHelper();
+ } catch (e) {
+ console.warn('[App] 鈿� 鍋滄RFID杈撳叆鍔╂墜澶辫触:', e);
}
- if (this.globalEvent) {
- this.globalEvent.removeEventListener('POWEREvent');
+
+ // 鍏抽棴RFID妯″潡锛堜娇鐢╰ry-catch纭繚鍗充娇澶辫触涔熶笉褰卞搷閫�鍑猴級
+ try {
+ if (this.uhfModel && this.uhfModel.closeUHF) {
+ this.uhfModel.closeUHF();
+ console.log('[App] 鉁� RFID妯″潡宸插叧闂�');
+ }
+ } catch (e) {
+ console.warn('[App] 鈿� 鍏抽棴RFID妯″潡澶辫触:', e);
+ }
+
+ try {
+ if (this.globalEvent && this.powerEventHandler) {
+ this.globalEvent.removeEventListener('POWEREvent', this.powerEventHandler);
+ }
+ } catch (e) {
+ console.warn('[App] 鈿� 绉婚櫎POWEREvent鐩戝惉澶辫触:', e);
}
// #endif
}
diff --git a/common/rfid-input-helper.js b/common/rfid-input-helper.js
index 3dc0c07..6aa37c9 100644
--- a/common/rfid-input-helper.js
+++ b/common/rfid-input-helper.js
@@ -14,6 +14,7 @@
/**
* 鍒濆鍖朢FID鍔╂墜锛堝彧鍒濆鍖栨彃浠跺紩鐢ㄥ拰浜嬩欢鐩戝惉锛屼笉鍒濆鍖朢FID妯″潡锛�
* RFID妯″潡鐢盇pp.vue鍏ㄥ眬鍒濆鍖栵紝杩欓噷鍙礋璐g洃鍚寜閿拰璇诲彇鏍囩
+ * 娉ㄦ剰锛氬嵆浣垮垵濮嬪寲澶辫触锛屼篃涓嶆姏鍑哄紓甯革紝纭繚涓嶅奖鍝嶉〉闈娇鐢�
*/
function initRFIDForInput() {
try {
@@ -22,28 +23,34 @@
modal = uni.requireNativePlugin('modal');
if (!uhfModel) {
- console.warn('[RFIDInputHelper] RFID鎻掍欢鏈壘鍒�');
+ console.warn('[RFIDInputHelper] 鈿� RFID鎻掍欢鏈壘鍒帮紝RFID鎵弿鍔熻兘涓嶅彲鐢紝浣嗛〉闈㈠彲姝e父浣跨敤');
return false;
}
// 鐩戝惉涓婄數浜嬩欢锛堢洃鍚叏灞�涓婄數鐘舵�侊紝RFID妯″潡鐢盇pp.vue鍒濆鍖栵級
- globalEvent.addEventListener('POWEREvent', function(e) {
- console.log('[RFIDInputHelper] POWEREvent:', JSON.stringify(e));
- if (e && e.status === 'connected') {
- isPowerOn = true;
- console.log('[RFIDInputHelper] 鉁� RFID妯″潡宸蹭笂鐢�');
- } else {
- isPowerOn = false;
- console.log('[RFIDInputHelper] 鉁� RFID妯″潡鏈笂鐢�');
- }
- });
+ try {
+ globalEvent.addEventListener('POWEREvent', function(e) {
+ console.log('[RFIDInputHelper] POWEREvent:', JSON.stringify(e));
+ if (e && e.status === 'connected') {
+ isPowerOn = true;
+ console.log('[RFIDInputHelper] 鉁� RFID妯″潡宸蹭笂鐢�');
+ } else {
+ isPowerOn = false;
+ console.log('[RFIDInputHelper] 鉁� RFID妯″潡鏈笂鐢�');
+ }
+ });
+ } catch (eventError) {
+ console.warn('[RFIDInputHelper] 鈿� 娣诲姞POWEREvent鐩戝惉澶辫触:', eventError);
+ console.warn('[RFIDInputHelper] 鈿� RFID鎵弿鍔熻兘鍙兘涓嶅彲鐢紝浣嗛〉闈㈠彲姝e父浣跨敤');
+ }
// 娉ㄦ剰锛歊FID妯″潡鐢盇pp.vue鍦╫nLaunch鏃跺叏灞�鍒濆鍖�
// 杩欓噷鍙礋璐g洃鍚寜閿拰璇诲彇鏍囩锛屼笉鍒濆鍖朢FID妯″潡
return true;
} catch (error) {
- console.error('[RFIDInputHelper] 鍒濆鍖栧け璐�:', error);
+ console.error('[RFIDInputHelper] 鈿� 鍒濆鍖栧け璐�:', error);
+ console.warn('[RFIDInputHelper] 鈿� RFID鎵弿鍔熻兘涓嶅彲鐢紝浣嗛〉闈㈠彲姝e父浣跨敤');
return false;
}
}
@@ -128,25 +135,46 @@
* 璇诲彇RFID鏍囩锛堝崟鏍囩璇伙紝鏃犺繃婊わ級
*/
function readRFIDTag() {
- if (!uhfModel) {
- // 濡傛灉妯″潡鏈垵濮嬪寲锛屽皾璇曞垵濮嬪寲
- uhfModel = uni.requireNativePlugin("iData-UHFPlugin-UHFModule");
+ try {
if (!uhfModel) {
- console.warn('[RFIDInputHelper] RFID妯″潡鏈壘鍒�');
- modal.toast({
- message: 'RFID妯″潡鏈壘鍒�',
- duration: 1.5
- });
+ // 濡傛灉妯″潡鏈垵濮嬪寲锛屽皾璇曞垵濮嬪寲
+ try {
+ uhfModel = uni.requireNativePlugin("iData-UHFPlugin-UHFModule");
+ } catch (e) {
+ console.warn('[RFIDInputHelper] 鈿� RFID妯″潡鏈壘鍒�:', e);
+ }
+ if (!uhfModel) {
+ console.warn('[RFIDInputHelper] RFID妯″潡鏈壘鍒�');
+ if (modal) {
+ modal.toast({
+ message: 'RFID妯″潡鏈壘鍒�',
+ duration: 1.5
+ });
+ }
+ return;
+ }
+ }
+
+ // 妫�鏌FID鏄惁宸蹭笂鐢碉紙RFID妯″潡鐢盇pp.vue鍏ㄥ眬鍒濆鍖栵級
+ if (!isPowerOn) {
+ console.warn('[RFIDInputHelper] RFID鏈笂鐢碉紝鏃犳硶鎵弿');
+ if (modal) {
+ modal.toast({
+ message: 'RFID姝e湪涓婄數锛岃绋嶅��...',
+ duration: 1.5
+ });
+ }
return;
}
- }
-
- // 妫�鏌FID鏄惁宸蹭笂鐢碉紙RFID妯″潡鐢盇pp.vue鍏ㄥ眬鍒濆鍖栵級
- if (!isPowerOn) {
- modal.toast({
- message: 'RFID姝e湪涓婄數锛岃绋嶅��...',
- duration: 1.5
- });
+ } catch (error) {
+ console.error('[RFIDInputHelper] 鈿� 璇诲彇RFID鏍囩鍓嶆鏌ュけ璐�:', error);
+ console.warn('[RFIDInputHelper] 鈿� RFID鎵弿鍔熻兘涓嶅彲鐢紝浣嗛〉闈㈠彲姝e父浣跨敤');
+ if (modal) {
+ modal.toast({
+ message: 'RFID鎵弿鍔熻兘涓嶅彲鐢�',
+ duration: 1.5
+ });
+ }
return;
}
--
Gitblit v1.9.1