CAN和LIN增加报文标记

This commit is contained in:
2025-08-07 12:43:09 +08:00
parent 71852a6232
commit 7a5793c43a
7 changed files with 336 additions and 7 deletions

View File

@@ -611,6 +611,7 @@ namespace CapMachine.Wpf.CanDrive
catch (TaskCanceledException)
{
// 任务被取消,正常退出
IsSendOk = false;
break;
}
catch (Exception ex)
@@ -618,6 +619,7 @@ namespace CapMachine.Wpf.CanDrive
LogService.Error(ex.Message);
Console.WriteLine($"CAN周期发送异常: {ex.Message}");
// 短暂暂停避免异常情况下CPU占用过高
IsSendOk = false;
await Task.Delay(10, token);
}
}
@@ -629,11 +631,13 @@ namespace CapMachine.Wpf.CanDrive
LogService.Error(ex.Message);
// 清理其他可能的资源
Console.WriteLine("CAN周期发送任务已结束资源已清理");
IsSendOk = false;
}
finally
{
// 确保在任何情况下(正常退出、异常、取消)都会停止计时器
Stopwatcher.Stop();
IsSendOk = false;
}
}, token, TaskCreationOptions.LongRunning, TaskScheduler.Default);
@@ -739,6 +743,25 @@ namespace CapMachine.Wpf.CanDrive
}
}
private bool _IsReviceOk;
/// <summary>
/// 接收报文是否OK
/// </summary>
public bool IsReviceOk
{
get { return _IsReviceOk; }
set
{
if (_IsReviceOk != value)
{
RaisePropertyChanged();
_IsReviceOk = value;
}
}
}
/// <summary>
/// 要发送的数据
/// </summary>
@@ -763,6 +786,7 @@ namespace CapMachine.Wpf.CanDrive
int CanNum = USB2CANFD.CANFD_GetMsg(DevHandle, ReadCANIndex, msgPtRead, CanMsgBuffer.Length);
if (CanNum > 0)
{
IsReviceOk = true;
Console.WriteLine("Read CanMsgNum = {0}", CanNum);
for (int i = 0; i < CanNum; i++)
{
@@ -787,10 +811,12 @@ namespace CapMachine.Wpf.CanDrive
}
else if (CanNum == 0)
{
IsReviceOk = false;
Console.WriteLine("No CAN data!");
}
else
{
IsReviceOk = false;
Console.WriteLine("Get CAN data error!");
}
Console.WriteLine("");
@@ -826,6 +852,7 @@ namespace CapMachine.Wpf.CanDrive
}
catch (Exception ex)
{
IsReviceOk = false;
LogService.Error(ex.Message);
//LogService.Info($"时间:{DateTime.Now.ToString()}-【Meter】-{ex.Message}");
}