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