From eff7a7ff6ee1851094dfe1f94dd40a98535865d8 Mon Sep 17 00:00:00 2001
From: hwh <332078369@qq.com>
Date: 星期二, 10 九月 2024 17:00:08 +0800
Subject: [PATCH] 设备通讯

---
 Web/src/views/device/deviceMonitor/signalR.ts |   16 ++++++++++++++--
 Web/src/views/device/deviceMonitor/index.vue  |   17 ++++++++++-------
 Admin.NET/WCS.Application/Hub/PlcDeviceHub.cs |   20 +++++++++++++++-----
 3 files changed, 39 insertions(+), 14 deletions(-)

diff --git a/Admin.NET/WCS.Application/Hub/PlcDeviceHub.cs b/Admin.NET/WCS.Application/Hub/PlcDeviceHub.cs
index ff0eeb4..7a8ff9c 100644
--- a/Admin.NET/WCS.Application/Hub/PlcDeviceHub.cs
+++ b/Admin.NET/WCS.Application/Hub/PlcDeviceHub.cs
@@ -88,7 +88,8 @@
                         {
                             throw new OperationCanceledException();
                         }
-                        var modPlc = listPlc.Where(s => s.Id == modDevice.Id).FirstOrDefault();
+                        var modPlc = listPlc.Where(s => s.Id == modDevice.PlcId).FirstOrDefault();
+                        modDevice.Type = modPlc.Type;
                         //璇诲彇plc鐨勫��
                         var modConn = PLCTaskAction.listPlcConn.FirstOrDefault(s => s != null && s.PlcId == modDevice.PlcId);
                         if (modConn == null)
@@ -155,6 +156,15 @@
                                 modDevice.PickStorey = Convert.ToInt32(pickStorey);
                             }
                         }
+                        //else
+                        //{
+                        //    //娴嬭瘯
+                        //    modDevice.TaskNo = "TK00001";
+                        //    modDevice.TaskType = TaskTypeEnum.In;
+                        //    modDevice.Wcs = new Random().Next(1000).ToString();
+                        //    modDevice.Plc = new Random().Next(1000).ToString();
+                        //    modDevice.Status = true;
+                        //}
                         // 姣旇緝涔嬪墠鐨勭姸鎬�
                         if (initialStates.TryGetValue(modDevice.Id, out var initialState))
                         {
@@ -178,17 +188,17 @@
                                 _plcDeviceHubContext.Clients.All.PublicPlcDevice(modDevice);
                             }
                         }
-
                         initialStates[modDevice.Id] = modDevice.Adapt<WcsDeviceOutput>();
-
-
                     }
                     Thread.Sleep(2000);
+                }
+                catch (OperationCanceledException)
+                {
+                    break;
                 }
                 catch (Exception)
                 {
 
-                    throw;
                 }
             }
         }, cts.Token);
diff --git a/Web/src/views/device/deviceMonitor/index.vue b/Web/src/views/device/deviceMonitor/index.vue
index b404ddf..f66cf15 100644
--- a/Web/src/views/device/deviceMonitor/index.vue
+++ b/Web/src/views/device/deviceMonitor/index.vue
@@ -114,13 +114,13 @@
 </template>
 
 <script lang="ts" setup>
-import { ref, onMounted } from 'vue';
+import { ref, onMounted  } from 'vue';
 import { listWcsDevice, writeValue } from '/@/api/wcs/wcsDevice';
 import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
 import { listWcsPlc } from '/@/api/wcs/wcsPlc';
 import { ElMessageBox, ElMessage } from 'element-plus';
 import setting from '/@/views/device/deviceMonitor/component/setting.vue'
-import { signalR } from './signalR';
+import { signalR,stopConnection } from './signalR';
 //杩炴帴signalR 鐩戝惉鍙樻洿
 onMounted(async () => {
     signalR.off('PublicPlcDevice');
@@ -133,12 +133,15 @@
             }
         }
         else if (data.type == 1) {
-            stations.value.forEach(list => {
-                var index = list.findIndex(s => s.id == data.id);
+            lineOptions.value.forEach(s => {
+                var index = stations.value[s.id].findIndex(s => s.id == data.id);
                 if (index !== -1) {
-                    list.splice(index, 1, data);
+                    stations.value[s.id].splice(index, 1, data);
                 }
             });
+            if (stationValue.value.id == data.id) {
+                stationValue.value = data;
+            }
         }
     });
 });
@@ -169,10 +172,10 @@
 }
 // 鏌ヨ鎿嶄綔
 const handleQuery = async () => {
-    var listplc = await listWcsPlc({ type: 1 });
+    const listplc = await listWcsPlc({ type: 1 });
     lineOptions.value = listplc.data.result;
     lineValue.value = listplc.data.result[0].id;
-    var res = await listWcsDevice();
+    const res = await listWcsDevice();
     listStackingMachineData.value = res.data.result.filter(s => s.type == 0);
     const listConveyorLineData = res.data.result.filter(s => s.type == 1);
     listplc.data.result.forEach(s => {
diff --git a/Web/src/views/device/deviceMonitor/signalR.ts b/Web/src/views/device/deviceMonitor/signalR.ts
index efcbe5b..9876733 100644
--- a/Web/src/views/device/deviceMonitor/signalR.ts
+++ b/Web/src/views/device/deviceMonitor/signalR.ts
@@ -17,21 +17,33 @@
 
 // 鍚姩杩炴帴
 connection.start().then(() => {
+	debugger;
 	console.log('鍚姩杩炴帴plc');
 });
 // 鏂紑杩炴帴
 connection.onclose(async () => {
+	debugger;
 	console.log('鏂紑杩炴帴plc');
 });
 // 閲嶈繛涓�
 connection.onreconnecting(() => {
+	debugger;
 	console.log('鏈嶅姟鍣ㄥ凡鏂嚎plc');
 });
 // 閲嶈繛鎴愬姛
 connection.onreconnected(() => {
+	debugger;
 	console.log('閲嶈繛鎴愬姛plc');
 });
-
+// 鍏抽棴杩炴帴鐨勬柟娉�
+async function stopConnection() {
+	try {
+	  await connection.stop();
+	  console.log('杩炴帴宸插叧闂�');
+	} catch (error) {
+	  console.error('鍏抽棴杩炴帴鏃跺彂鐢熼敊璇�:', error);
+	}
+  }
 // connection.on('PublicPlcConn', () => {});
 
-export { connection as signalR };
+export { connection as signalR,stopConnection };

--
Gitblit v1.8.0