更新,未成功

This commit is contained in:
2025-08-11 14:55:31 +08:00
parent 159187a475
commit d7ce99d8e5

View File

@@ -940,10 +940,11 @@ namespace CapMachine.Wpf.CanDrive
//释放申请的临时缓冲区
Marshal.FreeHGlobal(msgPtSend);
//********就是可以设置多个调度表放那里,但是运行时同一个时刻只能运行调度表其中的一个 ********
//Sample总共3个调度表第一个表里面包含3帧数据第二个调度表包含6帧数据第三个调度表包含11帧数据
//约定每帧对应一个调度表,预设5个调度表每个调度表对应个帧
MsgTabNum = new Byte[MsgTabCount] { 1, 1, 1, 1, 1 };
//预设5个调度表约定每个调度表对应5个帧
MsgTabNum = new Byte[MsgTabCount] { 5, 5, 5, 5, 5 };
//0xFFFF调度表循环发送数据X调度表循环发送的次数
//设置每个调度表的发送方式,约定全部为循环发送
SendTimes = new UInt16[MsgTabCount] { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF };
@@ -971,7 +972,7 @@ namespace CapMachine.Wpf.CanDrive
ret = USB2CAN.CAN_StartSchedule(DevHandle, WriteCANIndex, (byte)CANScheduleConfig.SchTabIndex, (byte)CANScheduleConfig.Cycle, (byte)CANScheduleConfig.OrderSend);
if (ret == USB2CAN.CAN_SUCCESS)
{
Console.WriteLine($"Start CAN Schedule 1 SuccessSchTabIndex{(byte)CANScheduleConfig.SchTabIndex}-Cycle{(byte)CANScheduleConfig.Cycle}-OrderSend{(byte)CANScheduleConfig.OrderSend}");
Console.WriteLine($"Start CAN Schedule 1 SuccessSchTabIndex{(byte)CANScheduleConfig.SchTabIndex} - Cycle{(byte)CANScheduleConfig.Cycle} - OrderSend{(byte)CANScheduleConfig.OrderSend}");
}
else
{
@@ -1037,7 +1038,7 @@ namespace CapMachine.Wpf.CanDrive
{
foreach (var itemSignal in itemMsg)
{
itemSignal.SignalCmdValue = random.Next(0, 100); //仿真测试数据使用
itemSignal.SignalCmdValue = random.Next(0, 10); //仿真测试数据使用
CAN_DBCParser.DBC_SetSignalValue(DBCHandle, new StringBuilder(itemMsg.Key), new StringBuilder(itemSignal.SignalName), itemSignal.SignalCmdValue);
}
CAN_DBCParser.DBC_SyncValueToCANMsg(DBCHandle, new StringBuilder(itemMsg.Key), msgPtSend);
@@ -1059,14 +1060,14 @@ namespace CapMachine.Wpf.CanDrive
// MsgTabIndex CAN调度表索引号 ;MsgIndex 开始更新帧起始索引,若起始索引大于调度表帧数,则将帧添加到调度表后面, ;
// pCanMsg 需要更新的CAN帧指针,消息数据 ; MsgNum pCanMsgTab里面包含的有效帧数一个调度表对应一个帧/消息即为1 (byte)(itemMsgSchConfig.MsgIndex+0)
var ret = USB2CAN.CAN_UpdateSchedule(DevHandle, WriteCANIndex, (byte)(itemMsgSchConfig.SchTabIndex+0), (byte)0, SchCanMsg, 1);//配置调度表,该函数耗时可能会比较长,但是只需要执行一次即可
var ret = USB2CAN.CAN_UpdateSchedule(DevHandle, WriteCANIndex, (byte)(itemMsgSchConfig.SchTabIndex), (byte)(0), SchCanMsg, 1);//配置调度表,该函数耗时可能会比较长,但是只需要执行一次即可
if (ret == USB2CAN.CAN_SUCCESS)
{
Console.WriteLine($"Update CAN Schedule Success--SchTabIndex{(byte)itemMsgSchConfig.SchTabIndex} --MsgIndex{(byte)(itemMsgSchConfig.MsgIndex)} ");
Console.WriteLine($"Update CAN Schedule Success -- SchTabIndex{(byte)itemMsgSchConfig.SchTabIndex} -- MsgIndex{(byte)(0)} ");
}
else
{
Console.WriteLine($"Update CAN Schedule Error ret = {ret}---SchTabIndex{(byte)itemMsgSchConfig.SchTabIndex} --MsgIndex{(byte)(itemMsgSchConfig.MsgIndex)}");
Console.WriteLine($"Update CAN Schedule Error ret = {ret} -- SchTabIndex{(byte)itemMsgSchConfig.SchTabIndex} -- MsgIndex{(byte)(0)}");
//return;
}
@@ -1106,20 +1107,20 @@ namespace CapMachine.Wpf.CanDrive
if (CanNum > 0)
{
IsReviceOk = true;
//Console.WriteLine("Read CanMsgNum = {0}", CanNum);
Console.WriteLine("Read CanMsgNum = {0}", CanNum);
for (int i = 0; i < CanNum; i++)
{
//CanMsgBuffer[i] = (USB2CAN.CAN_MSG)Marshal.PtrToStructure((IntPtr)((UInt32)msgPtRead + i * Marshal.SizeOf(typeof(USB2CAN.CAN_MSG))), typeof(USB2CAN.CAN_MSG)); //有溢出报错
CanMsgBuffer[i] = (USB2CAN.CAN_MSG)Marshal.PtrToStructure((IntPtr)(msgPtRead + i * Marshal.SizeOf(typeof(USB2CAN.CAN_MSG))), typeof(USB2CAN.CAN_MSG));
//Console.WriteLine("CanMsg[{0}].ID = 0x{1}", i, CanMsgBuffer[i].ID.ToString("X8"));
//Console.WriteLine("CanMsg[{0}].TimeStamp = {1}", i, CanMsgBuffer[i].TimeStamp);
//Console.Write("CanMsg[{0}].Data = ", i);
//for (int j = 0; j < CanMsgBuffer[i].DataLen; j++)
//{
// Console.Write("{0} ", CanMsgBuffer[i].Data[j].ToString("X2"));
//}
//Console.WriteLine("");
Console.WriteLine("CanMsg[{0}].ID = 0x{1}", i, CanMsgBuffer[i].ID.ToString("X8"));
Console.WriteLine("CanMsg[{0}].TimeStamp = {1}", i, CanMsgBuffer[i].TimeStamp);
Console.Write("CanMsg[{0}].Data = ", i);
for (int j = 0; j < CanMsgBuffer[i].DataLen; j++)
{
Console.Write("{0} ", CanMsgBuffer[i].Data[j].ToString("X2"));
}
Console.WriteLine("");
//报文给高速记录的服务
HighSpeedDataService.AppendOrUpdateMsg(new Models.HighSpeed.CommMsg()