From b4a14804f37d0d715af1f00ccb9e1621d238cc58 Mon Sep 17 00:00:00 2001
From: chen.llin <1442464845@qq.comm>
Date: 星期四, 15 一月 2026 11:33:03 +0800
Subject: [PATCH] 异常处理

---
 App.vue |  149 +++++++++++++++++++++++++++++++++++--------------
 1 files changed, 107 insertions(+), 42 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
 		}

--
Gitblit v1.9.1