CAN的定时发送的更改和一些其他的改动

This commit is contained in:
2025-05-06 11:03:51 +08:00
parent 16eaa230d8
commit df4b481bbb
7 changed files with 238 additions and 24 deletions

View File

@@ -1,6 +1,7 @@
using CapMachine.Wpf.Models.Tag;
using CapMachine.Wpf.Services;
using HslCommunication;
using ImTools;
using NPOI.OpenXmlFormats.Wordprocessing;
using Prism.Ioc;
using Prism.Mvvm;
@@ -21,6 +22,8 @@ namespace CapMachine.Wpf.CanDrive
{
/// <summary>
/// Toomoss CAN
/// 如果精度达不到的话则使用CAN通信调度表模式实现方案
/// 目前有0-1ms的抖动
/// </summary>
public class ToomossCan : BindableBase
{
@@ -33,6 +36,7 @@ namespace CapMachine.Wpf.CanDrive
{
ContainerProvider = containerProvider;
HighSpeedDataService = ContainerProvider.Resolve<HighSpeedDataService>();
HightDriveMsgService = ContainerProvider.Resolve<HightDriveMsgService>();
//Stopwatch.Frequency表示高精度计时器每秒的计数次数ticks/秒每毫秒的ticks数 = 每秒的ticks数 ÷ 1000
TicksPerMs = Stopwatch.Frequency / 1000.0;
@@ -478,8 +482,6 @@ namespace CapMachine.Wpf.CanDrive
RaisePropertyChanged();
_IsSendOk = value;
}
}
}
@@ -604,7 +606,6 @@ namespace CapMachine.Wpf.CanDrive
CycleSendCts = cancellationTokenSource;//将取消标记源保存到类的成员变量CycleSendCts这样在外部调用停止方法时可以访问它
NextExecutionTime = 0;//初始化NextExecutionTime为0这个变量用于记录下一次执行的目标时间点
CycleSendTask = Task.Factory.StartNew(async () =>
{
try
@@ -667,6 +668,7 @@ namespace CapMachine.Wpf.CanDrive
lastTicks = Stopwatcher.ElapsedTicks;
//Console.WriteLine($"--当前时间(毫秒): {DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}");
// 执行发送CAN逻辑
{
@@ -697,13 +699,13 @@ namespace CapMachine.Wpf.CanDrive
//释放申请的临时缓冲区
Marshal.FreeHGlobal(msgPtSend);
//发送CAN数据
int SendedNum = USB2CAN.CAN_SendMsg(DevHandle, WriteCANIndex, CanMsg, (uint)CanMsg.Length);
if (SendedNum >= 0)
{
//Console.WriteLine("Success send frames:{0}", SendedNum);
IsSendOk=true;
IsSendOk = true;
}
else
{
@@ -796,7 +798,7 @@ namespace CapMachine.Wpf.CanDrive
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")
Time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
});
//报文给高速报文处理服务
@@ -805,7 +807,7 @@ namespace CapMachine.Wpf.CanDrive
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")
Time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
});
}
}