From 5bf14aed888cd0e258e325c65f14022dad02985b Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期四, 17 七月 2025 15:32:01 +0800
Subject: [PATCH] 更改为通过websocket获取数据

---
 src/components/GaugeDisplay.vue |   67 ++++++++-------------------------
 1 files changed, 17 insertions(+), 50 deletions(-)

diff --git a/src/components/GaugeDisplay.vue b/src/components/GaugeDisplay.vue
index a322a3f..9630d2c 100644
--- a/src/components/GaugeDisplay.vue
+++ b/src/components/GaugeDisplay.vue
@@ -1,11 +1,7 @@
 <script setup lang="ts">
 import { ref, onMounted, onUnmounted } from 'vue';
 import * as echarts from 'echarts';
-import { sendToPipe } from '../pipe_client';
-
-const props = defineProps<{
-  pipeName: string;
-}>();
+import { createDataReceiver } from '../utils/dataFetcher';
 
 const chartContainer = ref<HTMLElement | null>(null);
 let chart: echarts.ECharts | null = null;
@@ -38,8 +34,8 @@
       {
         name: 'Fx',
         type: 'gauge',
-        min: -100,
-        max: 100,
+        min: 1000,
+        max: 4000,
         splitNumber: 10,
         radius: '30%',
         center: ['16.7%', '30%'],
@@ -61,8 +57,8 @@
       {
         name: 'Fy',
         type: 'gauge',
-        min: -100,
-        max: 100,
+        min: 1000,
+        max: 4000,
         splitNumber: 10,
         radius: '30%',
         center: ['50%', '30%'],
@@ -84,8 +80,8 @@
       {
         name: 'Fz',
         type: 'gauge',
-        min: -100,
-        max: 100,
+        min: 1000,
+        max: 4000,
         splitNumber: 10,
         radius: '30%',
         center: ['83.3%', '30%'],
@@ -107,8 +103,8 @@
       {
         name: 'Mx',
         type: 'gauge',
-        min: -10,
-        max: 10,
+        min: 1000,
+        max: 4000,
         splitNumber: 10,
         radius: '30%',
         center: ['16.7%', '75%'],
@@ -130,8 +126,8 @@
       {
         name: 'My',
         type: 'gauge',
-        min: -10,
-        max: 10,
+        min: 1000,
+        max: 4000,
         splitNumber: 10,
         radius: '30%',
         center: ['50%', '75%'],
@@ -153,8 +149,8 @@
       {
         name: 'Mz',
         type: 'gauge',
-        min: -10,
-        max: 10,
+        min: 1000,
+        max: 4000,
         splitNumber: 10,
         radius: '30%',
         center: ['83.3%', '75%'],
@@ -209,46 +205,17 @@
   });
 }
 
-// 鐘舵�佸彉閲忥紝鐢ㄤ簬鎺у埗閿欒鏄剧ず棰戠巼
-const errorCount = ref(0);
-const maxConsecutiveErrors = 5;
-const showingError = ref(false);
 
-// 鎺ユ敹绠¢亾鏁版嵁鐨勫嚱鏁�
-async function receiveData() {
-  try {
-    const response = await sendToPipe(props.pipeName, 'GET_FORCE_DATA');
-    
-    // 閲嶇疆閿欒璁℃暟
-    errorCount.value = 0;
-    showingError.value = false;
-    
-    // 瑙f瀽鏁版嵁
-    try {
-      const forceData = JSON.parse(response);
-      if (Array.isArray(forceData) && forceData.length === 6) {
-        updateChart(forceData);
-      }
-    } catch (parseErr) {
-      console.error('鏁版嵁瑙f瀽閿欒:', parseErr);
-    }
-  } catch (err) {
-    // 澧炲姞閿欒璁℃暟
-    errorCount.value++;
-    
-    // 鍙湪杩炵画閿欒杈惧埌闃堝�间笖灏氭湭鏄剧ず閿欒鏃舵樉绀�
-    if (errorCount.value >= maxConsecutiveErrors && !showingError.value) {
-      console.error('绠¢亾閫氫俊澶辫触:', err);
-      showingError.value = true;
-    }
-  }
-}
 
 let dataInterval: number | null = null;
 
 onMounted(() => {
   initChart();
   
+  const receiveData = createDataReceiver((forceData) => {
+    updateChart(forceData);
+  });
+  
   // 姣�200ms鑾峰彇涓�娆℃暟鎹�
   dataInterval = window.setInterval(receiveData, 200);
   

--
Gitblit v1.9.3