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

@@ -55,11 +55,18 @@ namespace CapMachine.Wpf.LinDrive
{
ContainerProvider = containerProvider;
HighSpeedDataService = ContainerProvider.Resolve<HighSpeedDataService>();
LoggerService = ContainerProvider.Resolve<ILogService>();
//Stopwatch.Frequency表示高精度计时器每秒的计数次数ticks/秒每毫秒的ticks数 = 每秒的ticks数 ÷ 1000
TicksPerMs = Stopwatch.Frequency / 1000.0;
}
/// <summary>
/// Logger 实例
/// </summary>
public ILogService LoggerService { get; set; }
/// <summary>
/// HighSpeedDataService 实例
/// </summary>
@@ -359,10 +366,19 @@ namespace CapMachine.Wpf.LinDrive
LDFParser.LDF_GetSignalValueStr(LDFHandle, new StringBuilder(itemMsg.Key), new StringBuilder(itemSignal.SignalName), ReadValueStr);
itemSignal.SignalRtValueSb = ReadValueStr;
}
//报文给高速记录的服务
//HighSpeedDataService.AppendOrUpdateMsg(new Models.HighSpeed.CommMsg()
//{
// Category = "LIN",
// MsgInfo = "0x" + CanMsgBuffer[i].ID.ToString("X8"),
// MsgData = BitConverter.ToString(CanMsgBuffer[i].Data),
// Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")
//});
}
}
IsReviceOk= true;
//StringBuilder ValueStr = new StringBuilder(64);
//LDFParser.LDF_ExeFrameToBus(LDFHandle, new StringBuilder("ID_DATA"), 1);
@@ -376,7 +392,8 @@ namespace CapMachine.Wpf.LinDrive
}
catch (Exception ex)
{
//LogService.Info($"时间:{DateTime.Now.ToString()}-【Meter】-{ex.Message}");
IsReviceOk = false;
LoggerService.Info($"{ex.Message}");
}
}
});
@@ -454,6 +471,23 @@ namespace CapMachine.Wpf.LinDrive
}
private bool _IsReviceOk;
/// <summary>
/// 接收报文是否OK
/// </summary>
public bool IsReviceOk
{
get { return _IsReviceOk; }
set
{
if (_IsReviceOk != value)
{
RaisePropertyChanged();
_IsReviceOk = value;
}
}
}
#region
@@ -578,17 +612,19 @@ namespace CapMachine.Wpf.LinDrive
}
}
IsSendOk=true;
}
}
catch (TaskCanceledException)
{
IsSendOk = false;
// 任务被取消,正常退出
break;
}
catch (Exception ex)
{
IsSendOk = false;
Console.WriteLine($"LIN周期发送异常: {ex.Message}");
// 短暂暂停避免异常情况下CPU占用过高
await Task.Delay(10, token);
@@ -597,14 +633,16 @@ namespace CapMachine.Wpf.LinDrive
}
catch (Exception ex)
{
IsSendOk = false;
// 确保在任何情况下(正常退出、异常、取消)都会停止计时器
Stopwatcher.Stop();
LoggerService.Info("接收出现异常");
// 清理其他可能的资源
Console.WriteLine("LIN周期发送任务已结束资源已清理");
}
finally
{
IsSendOk = false;
// 确保在任何情况下(正常退出、异常、取消)都会停止计时器
Stopwatcher.Stop();
}