From 53ca705ab0af65acaee6a66a5105c551852396bc Mon Sep 17 00:00:00 2001 From: Tyrone CT Date: Thu, 14 May 2026 14:05:17 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8E=B0=E5=9C=BA=E6=9B=B4=E6=94=B93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CapMachine.Wpf/CanDrive/ToomossCan.cs | 377 +++++++++++------- CapMachine.Wpf/Services/CanDriveService.cs | 2 +- .../Services/MachineRtDataService.cs | 13 +- 3 files changed, 229 insertions(+), 163 deletions(-) diff --git a/CapMachine.Wpf/CanDrive/ToomossCan.cs b/CapMachine.Wpf/CanDrive/ToomossCan.cs index 258c6fe..40c2c16 100644 --- a/CapMachine.Wpf/CanDrive/ToomossCan.cs +++ b/CapMachine.Wpf/CanDrive/ToomossCan.cs @@ -25,6 +25,7 @@ namespace CapMachine.Wpf.CanDrive public class ToomossCan : BindableBase { private readonly IContainerProvider ContainerProvider; + private readonly object _dbcParserLock = new object(); /// /// 实例化函数 @@ -332,58 +333,61 @@ namespace CapMachine.Wpf.CanDrive /// public void DBC_Parser(string Path) { - //解析DBC文件 - DBCHandle = CAN_DBCParser.DBC_ParserFile(DevHandle, new StringBuilder(Path)); - if (DBCHandle == 0) + lock (_dbcParserLock) { - Console.WriteLine("Parser DBC File error!"); - DbcParserState = false; - return; - } - else - { - Console.WriteLine("Parser DBC File success!"); - } - - ListCanDbcModel.Clear(); - - //打印DBC里面报文和信号相关信息 - int DBCMsgNum = CAN_DBCParser.DBC_GetMsgQuantity(DBCHandle); - for (int i = 0; i < DBCMsgNum; i++) - { - StringBuilder MsgName = new StringBuilder(32); - CAN_DBCParser.DBC_GetMsgName(DBCHandle, i, MsgName); - //Console.WriteLine("Msg.Name = {0}", MsgName); - int DBCSigNum = CAN_DBCParser.DBC_GetMsgSignalQuantity(DBCHandle, MsgName); - StringBuilder Publisher = new StringBuilder(32); - CAN_DBCParser.DBC_GetMsgPublisher(DBCHandle, MsgName, Publisher); - long MsgId; - MsgId = CAN_DBCParser.DBC_GetMsgIDByName(DBCHandle, MsgName); - - //Console.Write("Signals:"); - for (int j = 0; j < DBCSigNum; j++) + //解析DBC文件 + DBCHandle = CAN_DBCParser.DBC_ParserFile(DevHandle, new StringBuilder(Path)); + if (DBCHandle == 0) { - StringBuilder SigName = new StringBuilder(32); - CAN_DBCParser.DBC_GetMsgSignalName(DBCHandle, MsgName, j, SigName); - //Console.Write("{0} ", SigName); - - //增加信息数据 - ListCanDbcModel.Add(new CanDbcModel() - { - MsgName = MsgName.ToString(), - MsgId = "0x" + MsgId.ToString("X8"), - SignalName = SigName.ToString(), - SignalDesc = "", - SignalUnit = "", - SignalRtValue = "", - Publisher = Publisher.ToString() - }); + Console.WriteLine("Parser DBC File error!"); + DbcParserState = false; + return; + } + else + { + Console.WriteLine("Parser DBC File success!"); } - //Console.WriteLine(""); - } - //Dbc解析成功 - DbcParserState = true; + ListCanDbcModel.Clear(); + + //打印DBC里面报文和信号相关信息 + int DBCMsgNum = CAN_DBCParser.DBC_GetMsgQuantity(DBCHandle); + for (int i = 0; i < DBCMsgNum; i++) + { + StringBuilder MsgName = new StringBuilder(32); + CAN_DBCParser.DBC_GetMsgName(DBCHandle, i, MsgName); + //Console.WriteLine("Msg.Name = {0}", MsgName); + int DBCSigNum = CAN_DBCParser.DBC_GetMsgSignalQuantity(DBCHandle, MsgName); + StringBuilder Publisher = new StringBuilder(32); + CAN_DBCParser.DBC_GetMsgPublisher(DBCHandle, MsgName, Publisher); + long MsgId; + MsgId = CAN_DBCParser.DBC_GetMsgIDByName(DBCHandle, MsgName); + + //Console.Write("Signals:"); + for (int j = 0; j < DBCSigNum; j++) + { + StringBuilder SigName = new StringBuilder(32); + CAN_DBCParser.DBC_GetMsgSignalName(DBCHandle, MsgName, j, SigName); + //Console.Write("{0} ", SigName); + + //增加信息数据 + ListCanDbcModel.Add(new CanDbcModel() + { + MsgName = MsgName.ToString(), + MsgId = "0x" + MsgId.ToString("X8"), + SignalName = SigName.ToString(), + SignalDesc = "", + SignalUnit = "", + SignalRtValue = "", + Publisher = Publisher.ToString() + }); + } + //Console.WriteLine(""); + } + + //Dbc解析成功 + DbcParserState = true; + } } /// @@ -397,33 +401,36 @@ namespace CapMachine.Wpf.CanDrive for (int i = 0; i < GroupMsg.Count(); i++) { CanMsg[i] = new USB2CAN.CAN_MSG(); - CanMsg[i].Data = new Byte[64]; + CanMsg[i].Data = new Byte[8]; } - IntPtr msgPt = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USB2CAN.CAN_MSG))); - int Index = 0; - //循环给MSG赋值数据 - foreach (var itemMsg in GroupMsg) + IntPtr msgPt = IntPtr.Zero; + try { - foreach (var itemSignal in itemMsg) + msgPt = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USB2CAN.CAN_MSG))); + int Index = 0; + lock (_dbcParserLock) { - CAN_DBCParser.DBC_SetSignalValue(DBCHandle, new StringBuilder(itemMsg.Key), new StringBuilder(itemSignal.SignalName), itemSignal.SignalCmdValue); + //循环给MSG赋值数据 + foreach (var itemMsg in GroupMsg) + { + foreach (var itemSignal in itemMsg) + { + CAN_DBCParser.DBC_SetSignalValue(DBCHandle, new StringBuilder(itemMsg.Key), new StringBuilder(itemSignal.SignalName), itemSignal.SignalCmdValue); + } + CAN_DBCParser.DBC_SyncValueToCANMsg(DBCHandle, new StringBuilder(itemMsg.Key), msgPt); + CanMsg[Index] = (USB2CAN.CAN_MSG)Marshal.PtrToStructure(msgPt, typeof(USB2CAN.CAN_MSG)); + Index++; + } + } + } + finally + { + if (msgPt != IntPtr.Zero) + { + Marshal.FreeHGlobal(msgPt); } - CAN_DBCParser.DBC_SyncValueToCANMsg(DBCHandle, new StringBuilder(itemMsg.Key), msgPt); - CanMsg[Index] = (USB2CAN.CAN_MSG)Marshal.PtrToStructure(msgPt, typeof(USB2CAN.CAN_MSG)); - Index++; } - - //设置信号值 - //DBCParser.DBC_SetSignalValue(DBCHandle, new StringBuilder("msg_moto_speed"), new StringBuilder("moto_speed"), 2412); - //DBCParser.DBC_SetSignalValue(DBCHandle, new StringBuilder("msg_oil_pressure"), new StringBuilder("oil_pressure"), 980); - //DBCParser.DBC_SetSignalValue(DBCHandle, new StringBuilder("msg_speed_can"), new StringBuilder("speed_can"), 120); - - //通过DBC写入数据后生成CanMsg - //将信号值填入CAN消息里面 - - //释放申请的临时缓冲区 - Marshal.FreeHGlobal(msgPt); Console.WriteLine(""); //发送CAN数据 int SendedNum = USB2CAN.CAN_SendMsg(DevHandle, WriteCANIndex, CanMsg, (uint)CanMsg.Length); @@ -492,6 +499,11 @@ namespace CapMachine.Wpf.CanDrive /// public void StartCycleSendMsg() { + if (CycleSendTask != null && !CycleSendTask.IsCompleted) + { + return; + } + CycleSendTask = Task.Run(async () => { while (IsCycleSend) @@ -504,27 +516,36 @@ namespace CapMachine.Wpf.CanDrive for (int i = 0; i < GroupMsg.Count(); i++) { CanMsg[i] = new USB2CAN.CAN_MSG(); - CanMsg[i].Data = new Byte[64]; + CanMsg[i].Data = new Byte[8]; } - IntPtr msgPtSend = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USB2CAN.CAN_MSG))); - int Index = 0; - //循环给MSG赋值数据 - foreach (var itemMsg in GroupMsg) + IntPtr msgPtSend = IntPtr.Zero; + try { - foreach (var itemSignal in itemMsg) + msgPtSend = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USB2CAN.CAN_MSG))); + int Index = 0; + lock (_dbcParserLock) { - CAN_DBCParser.DBC_SetSignalValue(DBCHandle, new StringBuilder(itemMsg.Key), new StringBuilder(itemSignal.SignalName), itemSignal.SignalCmdValue); + //循环给MSG赋值数据 + foreach (var itemMsg in GroupMsg) + { + foreach (var itemSignal in itemMsg) + { + CAN_DBCParser.DBC_SetSignalValue(DBCHandle, new StringBuilder(itemMsg.Key), new StringBuilder(itemSignal.SignalName), itemSignal.SignalCmdValue); + } + CAN_DBCParser.DBC_SyncValueToCANMsg(DBCHandle, new StringBuilder(itemMsg.Key), msgPtSend); + CanMsg[Index] = (USB2CAN.CAN_MSG)Marshal.PtrToStructure(msgPtSend, typeof(USB2CAN.CAN_MSG)); + Index++; + } + } + } + finally + { + if (msgPtSend != IntPtr.Zero) + { + Marshal.FreeHGlobal(msgPtSend); } - CAN_DBCParser.DBC_SyncValueToCANMsg(DBCHandle, new StringBuilder(itemMsg.Key), msgPtSend); - CanMsg[Index] = (USB2CAN.CAN_MSG)Marshal.PtrToStructure(msgPtSend, typeof(USB2CAN.CAN_MSG)); - Index++; } - //通过DBC写入数据后生成CanMsg - //将信号值填入CAN消息里面 - - //释放申请的临时缓冲区 - Marshal.FreeHGlobal(msgPtSend); Console.WriteLine(""); //发送CAN数据 int SendedNum = USB2CAN.CAN_SendMsg(DevHandle, WriteCANIndex, CanMsg, (uint)CanMsg.Length); @@ -551,6 +572,11 @@ namespace CapMachine.Wpf.CanDrive /// public void StartCycleReviceCanMsg() { + if (CycleReviceTask != null && !CycleReviceTask.IsCompleted) + { + return; + } + CycleReviceTask = Task.Run(async () => { while (IsCycleRevice) @@ -558,65 +584,81 @@ namespace CapMachine.Wpf.CanDrive await Task.Delay(ReviceCycle); try { - //另外一个CAN通道读取数据 - USB2CAN.CAN_MSG[] CanMsgBuffer = new USB2CAN.CAN_MSG[128]; - //申请数据缓冲区 - IntPtr msgPtRead = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USB2CAN.CAN_MSG)) * CanMsgBuffer.Length); - int CanNum = USB2CAN.CAN_GetMsgWithSize(DevHandle, ReadCANIndex, msgPtRead, CanMsgBuffer.Length); - if (CanNum > 0) + IntPtr msgPtRead = IntPtr.Zero; + try { - Console.WriteLine("Read CanMsgNum = {0}", CanNum); - for (int i = 0; i < CanNum; i++) + //另外一个CAN通道读取数据 + USB2CAN.CAN_MSG[] CanMsgBuffer = new USB2CAN.CAN_MSG[128]; + //申请数据缓冲区 + msgPtRead = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USB2CAN.CAN_MSG)) * CanMsgBuffer.Length); + int CanNum = USB2CAN.CAN_GetMsgWithSize(DevHandle, ReadCANIndex, msgPtRead, CanMsgBuffer.Length); + if (CanNum > 0) { - //CanMsgBuffer[i] = (USB2CAN.CAN_MSG)Marshal.PtrToStructure((IntPtr)((UInt32)msgPtRead + i * Marshal.SizeOf(typeof(USB2CAN.CAN_MSG))), typeof(USB2CAN.CAN_MSG)); //有溢出报错 - CanMsgBuffer[i] = (USB2CAN.CAN_MSG)Marshal.PtrToStructure((IntPtr)(msgPtRead + i * Marshal.SizeOf(typeof(USB2CAN.CAN_MSG))), typeof(USB2CAN.CAN_MSG)); - - //Console.WriteLine("CanMsg[{0}].ID = 0x{1}", i, CanMsgBuffer[i].ID.ToString("X8")); - //Console.WriteLine("CanMsg[{0}].TimeStamp = {1}", i, CanMsgBuffer[i].TimeStamp); - //Console.Write("CanMsg[{0}].Data = ", i); - for (int j = 0; j < CanMsgBuffer[i].DataLen; j++) + Console.WriteLine("Read CanMsgNum = {0}", CanNum); + for (int i = 0; i < CanNum; i++) { - Console.Write("{0} ", CanMsgBuffer[i].Data[j].ToString("X2")); + //CanMsgBuffer[i] = (USB2CAN.CAN_MSG)Marshal.PtrToStructure((IntPtr)((UInt32)msgPtRead + i * Marshal.SizeOf(typeof(USB2CAN.CAN_MSG))), typeof(USB2CAN.CAN_MSG)); //有溢出报错 + CanMsgBuffer[i] = (USB2CAN.CAN_MSG)Marshal.PtrToStructure((IntPtr)(msgPtRead + i * Marshal.SizeOf(typeof(USB2CAN.CAN_MSG))), typeof(USB2CAN.CAN_MSG)); + + //Console.WriteLine("CanMsg[{0}].ID = 0x{1}", i, CanMsgBuffer[i].ID.ToString("X8")); + //Console.WriteLine("CanMsg[{0}].TimeStamp = {1}", i, CanMsgBuffer[i].TimeStamp); + //Console.Write("CanMsg[{0}].Data = ", i); + for (int j = 0; j < CanMsgBuffer[i].DataLen; j++) + { + Console.Write("{0} ", CanMsgBuffer[i].Data[j].ToString("X2")); + } + //Console.WriteLine(""); + + //报文给高速记录的服务 + HighSpeedDataService.AppendOrUpdateMsg(new Models.HighSpeed.CommMsg() + { + Category = "CAN", + MsgInfo = "0x" + CanMsgBuffer[i].ID.ToString("X8"), + MsgData = BitConverter.ToString(CanMsgBuffer[i].Data), + Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + }); } - //Console.WriteLine(""); + } + else if (CanNum == 0) + { + //Console.WriteLine("No CAN data!"); + } + else + { + //Console.WriteLine("Get CAN data error!"); + } + Console.WriteLine(""); - //报文给高速记录的服务 - HighSpeedDataService.AppendOrUpdateMsg(new Models.HighSpeed.CommMsg() + if (CanNum > 0) + { + lock (_dbcParserLock) { - Category = "CAN", - MsgInfo = "0x" + CanMsgBuffer[i].ID.ToString("X8"), - MsgData = BitConverter.ToString(CanMsgBuffer[i].Data), - Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") - }); + //将CAN消息数据填充到信号里面,用DBC解析数据 + CAN_DBCParser.DBC_SyncCANMsgToValue(DBCHandle, msgPtRead, CanNum); + + //循环获取消息的数据 + foreach (var item in ListCanDbcModel) + { + //有配置的名称的,认为是有用的,则需要读取数据 + //if (!string.IsNullOrEmpty(item.Name)) + //{ + var valueSb = new StringBuilder(64); + CAN_DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder(item.MsgName), new StringBuilder(item.SignalName), valueSb); + item.SignalRtValueSb = valueSb; + Console.Write(valueSb.ToString()); + //} + } + } } } - else if (CanNum == 0) + finally { - //Console.WriteLine("No CAN data!"); + if (msgPtRead != IntPtr.Zero) + { + //释放数据缓冲区,必须释放,否则程序运行一段时间后会报内存不足 + Marshal.FreeHGlobal(msgPtRead); + } } - else - { - //Console.WriteLine("Get CAN data error!"); - } - Console.WriteLine(""); - - //将CAN消息数据填充到信号里面,用DBC解析数据 - CAN_DBCParser.DBC_SyncCANMsgToValue(DBCHandle, msgPtRead, CanNum); - - //循环获取消息的数据 - foreach (var item in ListCanDbcModel) - { - //有配置的名称的,认为是有用的,则需要读取数据 - //if (!string.IsNullOrEmpty(item.Name)) - //{ - CAN_DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder(item.MsgName), new StringBuilder(item.SignalName), ValueSb); - item.SignalRtValueSb = ValueSb; - Console.Write(ValueSb.ToString()); - //} - } - - //释放数据缓冲区,必须释放,否则程序运行一段时间后会报内存不足 - Marshal.FreeHGlobal(msgPtRead); Thread.Sleep(10); ////获取信号值并打印出来 @@ -662,6 +704,11 @@ namespace CapMachine.Wpf.CanDrive /// public void StartPrecisionCycleSendMsg() { + if (CycleSendTask != null && !CycleSendTask.IsCompleted) + { + return; + } + // 创建取消标记源 用于控制任务的取消 允许在需要时通过取消令牌来优雅停止任务 var cancellationTokenSource = new CancellationTokenSource(); var token = cancellationTokenSource.Token; @@ -742,28 +789,36 @@ namespace CapMachine.Wpf.CanDrive for (int i = 0; i < GroupMsg.Count(); i++) { CanMsg[i] = new USB2CAN.CAN_MSG(); - CanMsg[i].Data = new Byte[64]; + CanMsg[i].Data = new Byte[8]; } - IntPtr msgPtSend = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USB2CAN.CAN_MSG))); - int Index = 0; - //循环给MSG赋值数据 - foreach (var itemMsg in GroupMsg) + IntPtr msgPtSend = IntPtr.Zero; + try { - foreach (var itemSignal in itemMsg) + msgPtSend = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USB2CAN.CAN_MSG))); + int Index = 0; + lock (_dbcParserLock) { - CAN_DBCParser.DBC_SetSignalValue(DBCHandle, new StringBuilder(itemMsg.Key), new StringBuilder(itemSignal.SignalName), itemSignal.SignalCmdValue); + //循环给MSG赋值数据 + foreach (var itemMsg in GroupMsg) + { + foreach (var itemSignal in itemMsg) + { + CAN_DBCParser.DBC_SetSignalValue(DBCHandle, new StringBuilder(itemMsg.Key), new StringBuilder(itemSignal.SignalName), itemSignal.SignalCmdValue); + } + CAN_DBCParser.DBC_SyncValueToCANMsg(DBCHandle, new StringBuilder(itemMsg.Key), msgPtSend); + CanMsg[Index] = (USB2CAN.CAN_MSG)Marshal.PtrToStructure(msgPtSend, typeof(USB2CAN.CAN_MSG)); + Index++; + } + } + } + finally + { + if (msgPtSend != IntPtr.Zero) + { + Marshal.FreeHGlobal(msgPtSend); } - CAN_DBCParser.DBC_SyncValueToCANMsg(DBCHandle, new StringBuilder(itemMsg.Key), msgPtSend); - CanMsg[Index] = (USB2CAN.CAN_MSG)Marshal.PtrToStructure(msgPtSend, typeof(USB2CAN.CAN_MSG)); - Index++; } - - //通过DBC写入数据后生成CanMsg - //将信号值填入CAN消息里面 - - //释放申请的临时缓冲区 - Marshal.FreeHGlobal(msgPtSend); //发送CAN数据 int SendedNum = USB2CAN.CAN_SendMsg(DevHandle, WriteCANIndex, CanMsg, (uint)CanMsg.Length); @@ -878,12 +933,32 @@ namespace CapMachine.Wpf.CanDrive /// public void CloseDevice() { + IsCycleRevice = false; + IsCycleSend = false; + try + { + StopCycleSendMsg(); + } + catch + { + } + + try + { + var task = CycleReviceTask; + if (task != null && !task.IsCompleted) + { + task.Wait(TimeSpan.FromMilliseconds(ReviceCycle + 500)); + } + } + catch + { + } + //关闭设备 USB_DEVICE.USB_CloseDevice(DevHandle); OpenState = false; DbcParserState = false; - IsCycleRevice = false; - IsCycleSend = false; } } diff --git a/CapMachine.Wpf/Services/CanDriveService.cs b/CapMachine.Wpf/Services/CanDriveService.cs index a2c6820..42fd28c 100644 --- a/CapMachine.Wpf/Services/CanDriveService.cs +++ b/CapMachine.Wpf/Services/CanDriveService.cs @@ -230,7 +230,7 @@ namespace CapMachine.Wpf.Services if (ListCanDbcModel.Count > 0) { ToomossCanDrive.IsCycleRevice = true; - ToomossCanDrive.StartPrecisionCycleSendMsg(); + ToomossCanDrive.StartCycleReviceCanMsg(); } else { diff --git a/CapMachine.Wpf/Services/MachineRtDataService.cs b/CapMachine.Wpf/Services/MachineRtDataService.cs index 36d3044..4ce86f6 100644 --- a/CapMachine.Wpf/Services/MachineRtDataService.cs +++ b/CapMachine.Wpf/Services/MachineRtDataService.cs @@ -1119,18 +1119,16 @@ namespace CapMachine.Wpf.Services while (ThreadEnable) { cycleCount++; - if (cycleCount % 20 == 0) // 每10秒记录一次 + if (cycleCount % 100 == 0) { LogService.Info($"RtScanDeviceStart 循环计数: {cycleCount}"); } - //await Task.Delay(5); - await Task.CompletedTask; + await Task.Delay(50); DiagnosticsTime.Reset(); DiagnosticsTime.Start(); try { - LogService.Debug($"RtScanDeviceStart 开始扫描周期 {cycleCount}"); //TagInfo.RtValue.Value++; //var data = TagManger.DicTags["转速"].ValueType.Name; @@ -1186,7 +1184,6 @@ namespace CapMachine.Wpf.Services try { var speedValue = CanDriveService.GetDbcSpeedValueBySpeedName("通讯转速"); - LogService.Debug($"RtScanDeviceStart 读取CAN通讯转速: {speedValue}"); SiemensDrive.Write(itemTag.Value.PVAddress, (short)speedValue); } catch (Exception ex) @@ -1213,7 +1210,6 @@ namespace CapMachine.Wpf.Services try { var voltageValue = CanDriveService.GetDbcValueByName("通讯母线电压"); - LogService.Debug($"RtScanDeviceStart 读取CAN通讯母线电压: {voltageValue}"); SiemensDrive.Write(itemTag.Value.PVAddress, (short)(voltageValue * itemTag.Value.Precision)); } catch (Exception ex) @@ -1240,7 +1236,6 @@ namespace CapMachine.Wpf.Services try { var currentValue = CanDriveService.GetDbcValueByName("通讯母线电流"); - LogService.Debug($"RtScanDeviceStart 读取CAN通讯母线电流: {currentValue}"); SiemensDrive.Write(itemTag.Value.PVAddress, (short)(currentValue * itemTag.Value.Precision)); } catch (Exception ex) @@ -1267,7 +1262,6 @@ namespace CapMachine.Wpf.Services try { var phaseCurrentValue = CanDriveService.GetDbcValueByName("通讯相电流"); - LogService.Debug($"RtScanDeviceStart 读取CAN通讯相电流: {phaseCurrentValue}"); SiemensDrive.Write(itemTag.Value.PVAddress, (short)(phaseCurrentValue * itemTag.Value.Precision)); } catch (Exception ex) @@ -1294,7 +1288,6 @@ namespace CapMachine.Wpf.Services try { var powerValue = CanDriveService.GetDbcValueByName("通讯功率"); - LogService.Debug($"RtScanDeviceStart 读取CAN通讯功率: {powerValue}"); SiemensDrive.Write(itemTag.Value.PVAddress, (short)(powerValue * itemTag.Value.Precision)); } catch (Exception ex) @@ -1321,7 +1314,6 @@ namespace CapMachine.Wpf.Services try { var tempValue = CanDriveService.GetDbcValueByName("通讯芯片温度"); - LogService.Debug($"RtScanDeviceStart 读取CAN通讯芯片温度: {tempValue}"); SiemensDrive.Write(itemTag.Value.PVAddress, (short)(tempValue * itemTag.Value.Precision)); } catch (Exception ex) @@ -1365,7 +1357,6 @@ namespace CapMachine.Wpf.Services { var dbcValue = CanDriveService.GetDbcValueByName(itemTag.Value.NameNoUnit); itemTag.Value.EngPvValue = dbcValue; - LogService.Debug($"RtScanDeviceStart 回读CAN数据 {itemTag.Value.NameNoUnit}: {dbcValue}"); } catch (Exception ex) {