CAN的定时发送的更改和一些其他的改动
This commit is contained in:
@@ -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()
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user