From 17e4c7e3e7b3ef60d9da6de3b2a39a14a53c38a0 Mon Sep 17 00:00:00 2001
From: z8018 <1282578289@qq.com>
Date: 星期三, 12 三月 2025 14:11:33 +0800
Subject: [PATCH] 1

---
 WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/QuartzNetExtension.cs |  109 +++++++++++++++++++++++++++++-------------------------
 1 files changed, 59 insertions(+), 50 deletions(-)

diff --git a/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/QuartzNetExtension.cs b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/QuartzNetExtension.cs
index c58f641..95605e7 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/QuartzNetExtension.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/QuartzNetExtension.cs
@@ -41,7 +41,7 @@
         /// 鍚姩绋嬪簭鑷姩寮�鍚皟搴︽湇鍔�
         /// </summary>
         /// <returns></returns>
-        public async Task StartAsync()
+        public virtual async Task StartAsync()
         {
             try
             {
@@ -52,60 +52,69 @@
                 {
                     if (!Storage.Devices.Exists(d => d.DeviceCode == x.DeviceCode))
                     {
-                        #region 杩炴帴PLC
-                        // 鍔犺浇绋嬪簭闆�
-                        Assembly assembly = Assembly.Load($"WIDESEAWCS_Communicator");
-                        // 鑾峰彇绫诲瀷
-                        Type? type = assembly.GetType($"WIDESEAWCS_Communicator.{x.DevicePlcType}");
-                        // 鍒涘缓瀹炰緥
-                        object? obj = Activator.CreateInstance(type, new object[] { x.DeviceIp, x.DevicePort, x.DeviceName });
-                        // 璋冪敤杩炴帴鏂规硶
-                        bool? connectResult = (bool)type.InvokeMember("Connect", BindingFlags.Default | BindingFlags.InvokeMethod, null, obj, new object[] { });
-                        // 鍒ゆ柇杩炴帴缁撴灉
-                        if (connectResult ?? false) ConsoleHelper.WriteSuccessLine(x.DeviceCode + "杩炴帴鎴愬姛"); else ConsoleHelper.WriteErrorLine(x.DeviceCode + "杩炴帴澶辫触");
-                        #endregion
-
-                        #region 瀹炰緥鍖栬澶囧璞�
-                        List<DeviceProDTO> devicePros = x.ProtocolList.Select(d => new DeviceProDTO
+                        try
                         {
-                            // 璁惧瀛愮紪鐮�
-                            DeviceChildCode = d.DeviceChildCode,
-                            // 璁惧鏁版嵁绫诲瀷
-                            DeviceDataType = d.DeviceProDataType,
-                            // 璁惧ID
-                            DeviceId = d.DeviceId,
-                            // 璁惧鍗忚ID
-                            DeviceProId = d.Id,
-                            // 璁惧鍗忚鏁版嵁鍧�
-                            DeviceProDataBlock = d.DeviceProDataBlock,
-                            // 璁惧鍗忚鏁版嵁闀垮害
-                            DeviceProDataLength = d.DeviceProDataLength,
-                            // 璁惧鍗忚鍋忕Щ閲�
-                            DeviceProOffset = d.DeviceProOffset,
-                            // 璁惧鍗忚鍙傛暟鎻忚堪
-                            DeviceProParamDes = d.DeviceProParamDes,
-                            // 璁惧鍗忚鍙傛暟鍚嶇О
-                            DeviceProParamName = d.DeviceProParamName,
-                            // 璁惧鍗忚鍙傛暟绫诲瀷
-                            DeviceProParamType = d.DeviceProParamType,
-                            // 璁惧PLC绫诲瀷
-                            DevicePlcType = x.DevicePlcType
-                        }).ToList();
+                            #region 杩炴帴PLC
+                            // 鍔犺浇绋嬪簭闆�
+                            Assembly assembly = Assembly.Load($"WIDESEAWCS_Communicator");
+                            // 鑾峰彇绫诲瀷
+                            Type? type = assembly.GetType($"WIDESEAWCS_Communicator.{x.DevicePlcType}");
+                            // 鍒涘缓瀹炰緥
+                            object? obj = Activator.CreateInstance(type, new object[] { x.DeviceIp, x.DevicePort, x.DeviceName });
+                            // 璋冪敤杩炴帴鏂规硶
+                            bool? connectResult = (bool)type.InvokeMember("Connect", BindingFlags.Default | BindingFlags.InvokeMethod, null, obj, new object[] { });
+                            // 鍒ゆ柇杩炴帴缁撴灉
+                            if (connectResult ?? false) ConsoleHelper.WriteSuccessLine(type.Name + x.DeviceCode + "杩炴帴鎴愬姛"); else ConsoleHelper.WriteErrorLine(type.Name + x.DeviceCode + "杩炴帴澶辫触");
+                            #endregion
 
-                        // 鏍规嵁璁惧绫诲瀷鑾峰彇璁惧鍗忚璇︽儏
-                        List<DeviceProtocolDetailDTO> deviceProtocolDetails = _deviceProtocolDetailService.GetDeviceProtocolDetailsByDeviceType(x.DeviceType);
 
-                        // 鍔犺浇璁惧绋嬪簭闆�
-                        Assembly assemblyDevice = Assembly.Load($"WIDESEAWCS_QuartzJob");
-                        // 鑾峰彇璁惧绫诲瀷瀵瑰簲鐨勭被鍨�
-                        Type typeDevice = assemblyDevice.GetType($"WIDESEAWCS_QuartzJob.{x.DeviceType}");
-                        // 鍒涘缓璁惧瀹炰緥
-                        object deviceInstance = Activator.CreateInstance(typeDevice, new object[] { obj, devicePros, deviceProtocolDetails, x.DeviceCode, x.DeviceName });
-                        #endregion
 
-                        x.Device = (IDevice)deviceInstance;
+                            #region 瀹炰緥鍖栬澶囧璞�
+                            List<DeviceProDTO> devicePros = x.ProtocolList.Select(d => new DeviceProDTO
+                            {
+                                // 璁惧瀛愮紪鐮�
+                                DeviceChildCode = d.DeviceChildCode,
+                                // 璁惧鏁版嵁绫诲瀷
+                                DeviceDataType = d.DeviceProDataType,
+                                // 璁惧ID
+                                DeviceId = d.DeviceId,
+                                // 璁惧鍗忚ID
+                                DeviceProId = d.Id,
+                                // 璁惧鍗忚鏁版嵁鍧�
+                                DeviceProDataBlock = d.DeviceProDataBlock,
+                                // 璁惧鍗忚鏁版嵁闀垮害
+                                DeviceProDataLength = d.DeviceProDataLength,
+                                // 璁惧鍗忚鍋忕Щ閲�
+                                DeviceProOffset = d.DeviceProOffset,
+                                // 璁惧鍗忚鍙傛暟鎻忚堪
+                                DeviceProParamDes = d.DeviceProParamDes,
+                                // 璁惧鍗忚鍙傛暟鍚嶇О
+                                DeviceProParamName = d.DeviceProParamName,
+                                // 璁惧鍗忚鍙傛暟绫诲瀷
+                                DeviceProParamType = d.DeviceProParamType,
+                                // 璁惧PLC绫诲瀷
+                                DevicePlcType = x.DevicePlcType
+                            }).ToList();
 
-                        Storage.Devices.Add((IDevice)deviceInstance);
+                            // 鏍规嵁璁惧绫诲瀷鑾峰彇璁惧鍗忚璇︽儏
+                            List<DeviceProtocolDetailDTO> deviceProtocolDetails = _deviceProtocolDetailService.GetDeviceProtocolDetailsByDeviceType(x.DeviceType);
+
+                            // 鍔犺浇璁惧绋嬪簭闆�
+                            Assembly assemblyDevice = Assembly.Load($"WIDESEAWCS_QuartzJob");
+                            // 鑾峰彇璁惧绫诲瀷瀵瑰簲鐨勭被鍨�
+                            Type typeDevice = assemblyDevice.GetType($"WIDESEAWCS_QuartzJob.{x.DeviceType}");
+                            // 鍒涘缓璁惧瀹炰緥
+                            object deviceInstance = Activator.CreateInstance(typeDevice, new object[] { obj, devicePros, deviceProtocolDetails, x.DeviceCode, x.DeviceName });
+                            #endregion
+
+                            x.Device = (IDevice)deviceInstance;
+
+                            Storage.Devices.Add((IDevice)deviceInstance);
+                        }
+                        catch (Exception ex)
+                        {
+                            Console.WriteLine("璋冨害鏈嶅姟寮�鍚紓甯�" + ex.ToString());
+                        }
                     }
                     else
                     {

--
Gitblit v1.9.3