CAN和LIN增加报文标记
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user