From 2ad852ee08e21ee681950f1d6058499248baf88e Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期五, 18 七月 2025 15:04:22 +0800
Subject: [PATCH] 完成串口读取数据和处理

---
 src/components/ThreeDDisplay.vue |   62 +++++-------------------------
 1 files changed, 11 insertions(+), 51 deletions(-)

diff --git a/src/components/ThreeDDisplay.vue b/src/components/ThreeDDisplay.vue
index 239e4d5..d8ab4bd 100644
--- a/src/components/ThreeDDisplay.vue
+++ b/src/components/ThreeDDisplay.vue
@@ -2,12 +2,7 @@
 import { ref, onMounted, onUnmounted } from 'vue';
 import * as THREE from 'three';
 import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
-import { sendToPipe } from '../pipe_client';
-
-const props = defineProps<{
-  pipeName: string;
-}>();
-
+import { createDataReceiver } from '../utils/dataFetcher';
 const containerRef = ref<HTMLElement | null>(null);
 let scene: THREE.Scene | null = null;
 let camera: THREE.PerspectiveCamera | null = null;
@@ -358,60 +353,25 @@
   renderer.setSize(width, height);
 }
 
-// 鐘舵�佸彉閲忥紝鐢ㄤ簬鎺у埗閿欒鏄剧ず棰戠巼
-const errorCount = ref(0);
-const maxConsecutiveErrors = 5;
-const showingError = ref(false);
 
-// 鎺ユ敹绠¢亾鏁版嵁鐨勫嚱鏁�
-async function receiveForceData() {
-  try {
-    // 浠庣閬撴帴鏀舵暟鎹�
-    const response = await sendToPipe(props.pipeName, 'GET_FORCE_DATA');
-    
-    // 鎴愬姛鎺ユ敹鏁版嵁锛岄噸缃敊璇鏁�
-    errorCount.value = 0;
-    if (showingError.value) {
-      showingError.value = false;
-      console.log('绠¢亾閫氫俊宸叉仮澶�');
-    }
-    
-    // 瑙f瀽鎺ユ敹鍒扮殑鏁版嵁
-    try {
-      const forceData = JSON.parse(response);
-      if (Array.isArray(forceData) && forceData.length === 6) {
-        updateVisualization(forceData);
-      }
-    } catch (e) {
-      console.warn('瑙f瀽鏁版嵁澶辫触:', e);
-    }
-  } catch (err) {
-    // 澧炲姞閿欒璁℃暟
-    errorCount.value++;
-    
-    // 鍙湪杩炵画閿欒杈惧埌闃堝�兼椂鏄剧ず閿欒淇℃伅锛岄伩鍏嶆棩蹇楀埛灞�
-    if (errorCount.value >= maxConsecutiveErrors && !showingError.value) {
-      showingError.value = true;
-      console.error('绠¢亾閫氫俊鎸佺画澶辫触锛岃妫�鏌ユ湇鍔$鐘舵��:', err);
-    }
-  }
-}
 
-// 瀹氭椂鑾峰彇鏁版嵁
-let dataTimer: number | null = null;
+
 
 onMounted(() => {
   initScene();
+  animate();
   
-  // 姣忕鑾峰彇涓�娆℃暟鎹�
-  dataTimer = window.setInterval(receiveForceData, 3000);
+  // createDataReceiver 鐜板湪鐩存帴娉ㄥ唽鍥炶皟骞惰繑鍥炰竴涓竻鐞嗗嚱鏁�
+ createDataReceiver((forceData) => {
+    updateVisualization(forceData);
+  }); // 浼犻�� isSerialPortConnected 鍑芥暟
+  
+  // 鐩戝惉绐楀彛澶у皬鍙樺寲
+  window.addEventListener('resize', handleResize);
 });
 
 onUnmounted(() => {
-  // 娓呯悊瀹氭椂鍣ㄥ拰浜嬩欢鐩戝惉
-  if (dataTimer !== null) {
-    clearInterval(dataTimer);
-  }
+
   
   window.removeEventListener('resize', handleResize);
   

--
Gitblit v1.9.3