From a99c5962a38081c0a64b1875891a32fe8af7caf9 Mon Sep 17 00:00:00 2001 From: Tyrone CT Date: Fri, 20 Dec 2024 20:49:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9B=BE=E8=8E=AB=E6=96=AFCA?= =?UTF-8?q?N=E9=A9=B1=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{DBCParser.cs => CANFD_DBCParser.cs} | 2 +- CapMachine.Wpf/CanDrive/CAN_DBCParser.cs | 57 ++ CapMachine.Wpf/CanDrive/ToomossCan.cs | 502 ++++++++++++++++++ CapMachine.Wpf/CanDrive/ToomossCanFD.cs | 30 +- CapMachine.Wpf/ProPars/ProParsHelper.cs | 1 + CapMachine.Wpf/Services/CanDriveService.cs | 4 +- 6 files changed, 578 insertions(+), 18 deletions(-) rename CapMachine.Wpf/CanDrive/{DBCParser.cs => CANFD_DBCParser.cs} (98%) create mode 100644 CapMachine.Wpf/CanDrive/CAN_DBCParser.cs create mode 100644 CapMachine.Wpf/CanDrive/ToomossCan.cs diff --git a/CapMachine.Wpf/CanDrive/DBCParser.cs b/CapMachine.Wpf/CanDrive/CANFD_DBCParser.cs similarity index 98% rename from CapMachine.Wpf/CanDrive/DBCParser.cs rename to CapMachine.Wpf/CanDrive/CANFD_DBCParser.cs index c48e3dd..1110e58 100644 --- a/CapMachine.Wpf/CanDrive/DBCParser.cs +++ b/CapMachine.Wpf/CanDrive/CANFD_DBCParser.cs @@ -7,7 +7,7 @@ using System.Threading.Tasks; namespace CapMachine.Wpf.CanDrive { - public class DBCParser + public class CANFD_DBCParser { public const Int32 DBC_PARSER_OK = 0;//没有错误 public const Int32 DBC_PARSER_FILE_OPEN = (-1);//打开文件出错 diff --git a/CapMachine.Wpf/CanDrive/CAN_DBCParser.cs b/CapMachine.Wpf/CanDrive/CAN_DBCParser.cs new file mode 100644 index 0000000..06111af --- /dev/null +++ b/CapMachine.Wpf/CanDrive/CAN_DBCParser.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace CapMachine.Wpf.CanDrive +{ + /// + /// CAN DBC 解析数据 + /// + public class CAN_DBCParser + { + public const Int32 DBC_PARSER_OK = 0;//没有错误 + public const Int32 DBC_PARSER_FILE_OPEN = (-1);//打开文件出错 + public const Int32 DBC_PARSER_FILE_FORMAT = (-2);//文件格式错误 + public const Int32 DBC_PARSER_DEV_DISCONNECT = (-3);//设备未连接 + public const Int32 DBC_PARSER_HANDLE_ERROR = (-4);//LDF Handle错误 + public const Int32 DBC_PARSER_GET_INFO_ERROR = (-5);//获取解析后的数据出错 + public const Int32 DBC_PARSER_DATA_ERROR = (-6);//数据处理错误 + public const Int32 DBC_PARSER_SLAVE_NACK = (-7);//从机未响应数据 + + [DllImport("USB2XXX.dll")] + public static extern UInt64 DBC_ParserFile(int DevHandle, StringBuilder pDBCFileName); + [DllImport("USB2XXX.dll")] + public static extern Int32 DBC_GetMsgQuantity(UInt64 DBCHandle); + [DllImport("USB2XXX.dll")] + public static extern Int32 DBC_GetMsgName(UInt64 DBCHandle, int index, StringBuilder pMsgName); + [DllImport("USB2XXX.dll")] + public static extern Int32 DBC_GetMsgSignalQuantity(UInt64 DBCHandle, StringBuilder pMsgName); + [DllImport("USB2XXX.dll")] + public static extern Int32 DBC_GetMsgSignalName(UInt64 DBCHandle, StringBuilder pMsgName, int index, StringBuilder pSignalName); + [DllImport("USB2XXX.dll")] + public static extern Int32 DBC_GetMsgPublisher(UInt64 DBCHandle, StringBuilder pMsgName, StringBuilder pPublisher); + //设置信号值 + [DllImport("USB2XXX.dll")] + public static extern Int32 DBC_SetSignalValue(UInt64 DBCHandle, StringBuilder pMsgName, StringBuilder pSignalName, double Value); + //获取信号值 + [DllImport("USB2XXX.dll")] + public static extern Int32 DBC_GetSignalValue(UInt64 DBCHandle, StringBuilder pMsgName, StringBuilder pSignalName, double[] pValue); + [DllImport("USB2XXX.dll")] + public static extern Int32 DBC_GetSignalValueStr(UInt64 DBCHandle, StringBuilder pMsgName, StringBuilder pSignalName, StringBuilder pValueStr); + + //将CAN消息数据填充到信号里面 + [DllImport("USB2XXX.dll")] + public static extern Int32 DBC_SyncCANMsgToValue(UInt64 DBCHandle, IntPtr pCANMsg, int MsgLen); + [DllImport("USB2XXX.dll")] + public static extern Int32 DBC_SyncCANFDMsgToValue(UInt64 DBCHandle, IntPtr pCANFDMsg, int MsgLen); + //将信号数据填充到CAN消息里面 + [DllImport("USB2XXX.dll")] + public static extern Int32 DBC_SyncValueToCANMsg(UInt64 DBCHandle, StringBuilder pMsgName, IntPtr pCANMsg); + [DllImport("USB2XXX.dll")] + public static extern Int32 DBC_SyncValueToCANFDMsg(UInt64 DBCHandle, StringBuilder pMsgName, IntPtr pCANFDMsg); + + } +} diff --git a/CapMachine.Wpf/CanDrive/ToomossCan.cs b/CapMachine.Wpf/CanDrive/ToomossCan.cs new file mode 100644 index 0000000..debcea2 --- /dev/null +++ b/CapMachine.Wpf/CanDrive/ToomossCan.cs @@ -0,0 +1,502 @@ +using CapMachine.Wpf.Models.Tag; +using NPOI.OpenXmlFormats.Wordprocessing; +using Prism.Mvvm; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Windows.Interop; + +namespace CapMachine.Wpf.CanDrive +{ + /// + /// Toomoss CAN + /// + public class ToomossCan : BindableBase + { + /// + /// 实例化函数 + /// + public ToomossCan() + { + + } + + /// + /// 开始CAN的驱动 + /// + public void StartCanDrive() + { + IsExistsDllFile(); + ScanDevice(); + OpenDevice(); + GetDeviceInfo(); + GetCANConfig(); + InitCAN(); + + } + + /// + /// 开始Dbc文件写入 + /// + public void StartDbc(string DbcPath) + { + DBC_Parser(DbcPath); + } + + /// + /// Dbc消息集合 + /// + public ObservableCollection ListCanDbcModel { get; set; } = new ObservableCollection(); + + + #region 公共变量 + + /// + /// 设备固件信息 + /// + public USB_DEVICE.DEVICE_INFO DevInfo = new USB_DEVICE.DEVICE_INFO(); + + /// + /// CAN Config + /// + USB2CAN.CAN_INIT_CONFIG CANConfig = new USB2CAN.CAN_INIT_CONFIG(); + + /// + /// DBC Handle + /// + public UInt64 DBCHandle { get; set; } + + /// + /// 扫描设备Handle集合 + /// + public Int32[] DevHandles { get; set; } = new Int32[20]; + + /// + /// 扫描设备Handle + /// + public Int32 DevHandle { get; set; } = 0; + /// + /// Write CAN Index + /// + public Byte WriteCANIndex { get; set; } = 0; + + /// + /// Read CAN Index + /// + public Byte ReadCANIndex { get; set; } = 1; + + + private bool _OpenState; + /// + /// 打开设备的状态 + /// + public bool OpenState + { + get { return _OpenState; } + set { _OpenState = value; RaisePropertyChanged(); } + } + + + /// + /// 扫描到设备个数 + /// + public Int32 DevNum { get; set; } + + public Int32 ret { get; set; } + + public string dllFilePath { get; set; } = "USB2XXX.dll"; + + + /// + /// 消息值Pt + /// + public IntPtr msgPt { get; set; } + + #endregion + + /// + /// ******************【1】********************* + /// 是否存在Dll文件 + /// + /// + public bool IsExistsDllFile() + { + if (!File.Exists(dllFilePath)) + { + Console.WriteLine("请先将USB2XXX.dll和libusb-1.0.dll文件复制到exe程序文件输出目录下!"); + Console.WriteLine("dll文件在‘usb2can_lin_pwm_example/sdk/libs/windows’目录下!"); + Console.WriteLine("程序是32位的就复制‘x86’目录下文件,程序是64位的就复制‘x86_64’目录下文件!"); + return false; + } + return true; + } + + /// + /// ******************【2】********************* + /// 扫描查找设备,并将每个设备的唯一设备号存放到数组中,后面的函数需要用到 + /// + /// + public bool ScanDevice() + { + DevNum = USB_DEVICE.USB_ScanDevice(DevHandles); + if (DevNum <= 0) + { + Console.WriteLine("No device connected!"); + + return false; + } + else + { + Console.WriteLine("Have {0} device connected!", DevNum); + DevHandle = DevHandles[0];//获取第一个设备的设备号 + return true; + } + } + + /// + /// ******************【3】********************* + /// 打开设备 + /// + /// + public bool OpenDevice() + { + //打开设备 + OpenState = USB_DEVICE.USB_OpenDevice(DevHandle); + if (!OpenState) + { + Console.WriteLine("Open device error!"); + return false; + } + else + { + Console.WriteLine("Open device success!"); + return true; + } + } + + /// + /// ******************【4】********************* + /// 获取设备的固件信息 + /// + /// + public bool GetDeviceInfo() + { + //获取固件信息 + StringBuilder FuncStr = new StringBuilder(256); + OpenState = USB_DEVICE.DEV_GetDeviceInfo(DevHandle, ref DevInfo, FuncStr); + if (!OpenState) + { + Console.WriteLine("Get device infomation error!"); + return false; + } + else + { + Console.WriteLine("Firmware Info:"); + Console.WriteLine(" Name:" + Encoding.Default.GetString(DevInfo.FirmwareName)); + Console.WriteLine(" Build Date:" + Encoding.Default.GetString(DevInfo.BuildDate)); + Console.WriteLine(" Firmware Version:v{0}.{1}.{2}", (DevInfo.FirmwareVersion >> 24) & 0xFF, (DevInfo.FirmwareVersion >> 16) & 0xFF, DevInfo.FirmwareVersion & 0xFFFF); + Console.WriteLine(" Hardware Version:v{0}.{1}.{2}", (DevInfo.HardwareVersion >> 24) & 0xFF, (DevInfo.HardwareVersion >> 16) & 0xFF, DevInfo.HardwareVersion & 0xFFFF); + Console.WriteLine(" Functions:" + DevInfo.Functions.ToString("X8")); + Console.WriteLine(" Functions String:" + FuncStr); + StringBuilder DLLBuildDate = new StringBuilder(256); + USB_DEVICE.DEV_GetDllBuildTime(DLLBuildDate); + Console.WriteLine(" DLL Build Date:" + DLLBuildDate); + + return true; + } + } + + /// + /// ******************【5】********************* + /// 获取设备Config配置 + /// + public void GetCANConfig() + { + //获取CAN波特率参数 + ret = USB2CAN.CAN_GetCANSpeedArg(DevHandle, ref CANConfig, 500000); + if (ret != USB2CAN.CAN_SUCCESS) + { + Console.WriteLine("Get CAN Speed failed!"); + return; + } + else + { + Console.WriteLine("Get CAN Speed Success!"); + } + + } + + /// + /// ******************【6】********************* + /// 初始化CAN + /// + public void InitCAN() + { + //初始化CAN + + ret = USB2CAN.CAN_Init(DevHandle, WriteCANIndex, ref CANConfig); + if (ret != USB2CAN.CAN_SUCCESS) + { + Console.WriteLine("Config CAN failed!"); + return; + } + else + { + Console.WriteLine("WriteCANIndex Config CAN Success!"); + } + + ret = USB2CAN.CAN_Init(DevHandle, ReadCANIndex, ref CANConfig); + if (ret != USB2CAN.CAN_SUCCESS) + { + Console.WriteLine("Config CAN failed!"); + return; + } + else + { + Console.WriteLine("ReadCANIndex Config CAN Success!"); + } + Console.WriteLine(""); + } + + /// + /// ******************【7】********************* + /// DBC解析 + /// + public void DBC_Parser(string Path) + { + //解析DBC文件 + DBCHandle = CAN_DBCParser.DBC_ParserFile(DevHandle, new StringBuilder(Path)); + if (DBCHandle == 0) + { + Console.WriteLine("Parser DBC File error!"); + return; + } + else + { + Console.WriteLine("Parser DBC File success!"); + } + + ListCanDbcModel.Clear(); + + //打印DBC里面报文和信号相关信息 + int DBCMsgNum = CAN_DBCParser.DBC_GetMsgQuantity(DBCHandle); + for (int i = 0; i < DBCMsgNum; i++) + { + StringBuilder MsgName = new StringBuilder(32); + CAN_DBCParser.DBC_GetMsgName(DBCHandle, i, MsgName); + Console.WriteLine("Msg.Name = {0}", MsgName); + int DBCSigNum = CAN_DBCParser.DBC_GetMsgSignalQuantity(DBCHandle, MsgName); + StringBuilder Publisher = new StringBuilder(32); + CAN_DBCParser.DBC_GetMsgPublisher(DBCHandle, MsgName, Publisher); + Console.Write("Signals:"); + for (int j = 0; j < DBCSigNum; j++) + { + StringBuilder SigName = new StringBuilder(32); + CAN_DBCParser.DBC_GetMsgSignalName(DBCHandle, MsgName, j, SigName); + Console.Write("{0} ", SigName); + + //增加信息数据 + ListCanDbcModel.Add(new CanDbcModel() + { + MsgName = MsgName.ToString(), + MsgId = "", + SignalName = SigName.ToString(), + SignalDesc = "", + SignalUnit = "", + SignalRtValue = "", + Publisher = Publisher.ToString() + }); + } + Console.WriteLine(""); + } + } + + /// + /// 发送CAN数据 + /// + public void SendCanMsg(List CmdData) + { + var GroupMsg = CmdData.GroupBy(x => x.MsgName); + USB2CAN.CAN_MSG[] CanMsg = new USB2CAN.CAN_MSG[GroupMsg.Count()]; + for (int i = 0; i < GroupMsg.Count(); i++) + { + CanMsg[i] = new USB2CAN.CAN_MSG(); + CanMsg[i].Data = new Byte[64]; + } + + IntPtr msgPt = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USB2CAN.CAN_MSG))); + int Index = 0; + //循环给MSG赋值数据 + foreach (var itemMsg in GroupMsg) + { + foreach (var itemSignal in itemMsg) + { + CAN_DBCParser.DBC_SetSignalValue(DBCHandle, new StringBuilder(itemMsg.Key), new StringBuilder(itemSignal.SignalName), itemSignal.SignalCmdValue); + } + CAN_DBCParser.DBC_SyncValueToCANMsg(DBCHandle, new StringBuilder(itemMsg.Key), msgPt); + CanMsg[Index] = (USB2CAN.CAN_MSG)Marshal.PtrToStructure(msgPt, typeof(USB2CAN.CAN_MSG)); + Index++; + } + + //设置信号值 + //DBCParser.DBC_SetSignalValue(DBCHandle, new StringBuilder("msg_moto_speed"), new StringBuilder("moto_speed"), 2412); + //DBCParser.DBC_SetSignalValue(DBCHandle, new StringBuilder("msg_oil_pressure"), new StringBuilder("oil_pressure"), 980); + //DBCParser.DBC_SetSignalValue(DBCHandle, new StringBuilder("msg_speed_can"), new StringBuilder("speed_can"), 120); + + //通过DBC写入数据后生成CanMsg + //将信号值填入CAN消息里面 + + + //释放申请的临时缓冲区 + Marshal.FreeHGlobal(msgPt); + Console.WriteLine(""); + //发送CAN数据 + int SendedNum = USB2CAN.CAN_SendMsg(DevHandle, WriteCANIndex, CanMsg, (uint)CanMsg.Length); + if (SendedNum >= 0) + { + Console.WriteLine("Success send frames:{0}", SendedNum); + } + else + { + Console.WriteLine("Send CAN data failed! {0}", SendedNum); + } + } + + /// + /// 是否循环接收数据 + /// + public bool IsCycleRevice { get; set; } + + /// + /// CycleRevice扫描Task + /// + private static Task CycleReviceTask { get; set; } + + /// + /// 循环获取CAN消息 + /// + public void StartCycleReviceCanMsg() + { + CycleReviceTask = Task.Run(async () => + { + while (IsCycleRevice) + { + await Task.Delay(1000); + try + { + //另外一个CAN通道读取数据 + USB2CAN.CAN_MSG[] CanMsgBuffer = new USB2CAN.CAN_MSG[10]; + msgPt = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USB2CAN.CAN_MSG)) * CanMsgBuffer.Length); + int CanNum = USB2CAN.CAN_GetMsgWithSize(DevHandle, ReadCANIndex, msgPt, CanMsgBuffer.Length); + if (CanNum > 0) + { + Console.WriteLine("Read CanMsgNum = {0}", CanNum); + for (int i = 0; i < CanNum; i++) + { + CanMsgBuffer[i] = (USB2CAN.CAN_MSG)Marshal.PtrToStructure((IntPtr)((UInt32)msgPt + 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(""); + } + } + else if (CanNum == 0) + { + Console.WriteLine("No CAN data!"); + } + else + { + Console.WriteLine("Get CAN data error!"); + } + Console.WriteLine(""); + + //将CAN消息数据填充到信号里面 + CAN_DBCParser.DBC_SyncCANMsgToValue(DBCHandle, msgPt, CanNum); + //获取信号值并打印出来 + StringBuilder ValueStr = new StringBuilder(32); + CAN_DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder("msg_moto_speed"), new StringBuilder("moto_speed"), ValueStr); + Console.WriteLine("moto_speed = {0}", ValueStr); + CAN_DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder("msg_oil_pressure"), new StringBuilder("oil_pressure"), ValueStr); + Console.WriteLine("oil_pressure = {0}", ValueStr); + CAN_DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder("msg_speed_can"), new StringBuilder("speed_can"), ValueStr); + Console.WriteLine("speed_can = {0}", ValueStr); + } + catch (Exception ex) + { + //LogService.Info($"时间:{DateTime.Now.ToString()}-【Meter】-{ex.Message}"); + } + } + }); + } + + /// + /// 接受CAN消息 + /// + public void ReciveCanMsg() + { + //另外一个CAN通道读取数据 + USB2CAN.CAN_MSG[] CanMsgBuffer = new USB2CAN.CAN_MSG[10]; + msgPt = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USB2CAN.CAN_MSG)) * CanMsgBuffer.Length); + int CanNum = USB2CAN.CAN_GetMsgWithSize(DevHandle, ReadCANIndex, msgPt, CanMsgBuffer.Length); + if (CanNum > 0) + { + Console.WriteLine("Read CanMsgNum = {0}", CanNum); + for (int i = 0; i < CanNum; i++) + { + CanMsgBuffer[i] = (USB2CAN.CAN_MSG)Marshal.PtrToStructure((IntPtr)((UInt32)msgPt + 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(""); + } + } + else if (CanNum == 0) + { + Console.WriteLine("No CAN data!"); + } + else + { + Console.WriteLine("Get CAN data error!"); + } + Console.WriteLine(""); + + //将CAN消息数据填充到信号里面 + CAN_DBCParser.DBC_SyncCANMsgToValue(DBCHandle, msgPt, CanNum); + //获取信号值并打印出来 + StringBuilder ValueStr = new StringBuilder(32); + CAN_DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder("msg_moto_speed"), new StringBuilder("moto_speed"), ValueStr); + Console.WriteLine("moto_speed = {0}", ValueStr); + CAN_DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder("msg_oil_pressure"), new StringBuilder("oil_pressure"), ValueStr); + Console.WriteLine("oil_pressure = {0}", ValueStr); + CAN_DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder("msg_speed_can"), new StringBuilder("speed_can"), ValueStr); + Console.WriteLine("speed_can = {0}", ValueStr); + } + + + /// + /// 关闭设备 + /// + public void CloseDevice() + { + //关闭设备 + USB_DEVICE.USB_CloseDevice(DevHandle); + OpenState = false; + } + + } +} diff --git a/CapMachine.Wpf/CanDrive/ToomossCanFD.cs b/CapMachine.Wpf/CanDrive/ToomossCanFD.cs index decee0c..a84245b 100644 --- a/CapMachine.Wpf/CanDrive/ToomossCanFD.cs +++ b/CapMachine.Wpf/CanDrive/ToomossCanFD.cs @@ -272,7 +272,7 @@ namespace CapMachine.Wpf.CanDrive public void DBC_Parser(string Path) { //解析DBC文件 - DBCHandle = DBCParser.DBC_ParserFile(DevHandle, new StringBuilder(Path)); + DBCHandle = CANFD_DBCParser.DBC_ParserFile(DevHandle, new StringBuilder(Path)); if (DBCHandle == 0) { Console.WriteLine("Parser DBC File error!"); @@ -286,20 +286,20 @@ namespace CapMachine.Wpf.CanDrive ListCanDbcModel.Clear(); //打印DBC里面报文和信号相关信息 - int DBCMsgNum = DBCParser.DBC_GetMsgQuantity(DBCHandle); + int DBCMsgNum = CANFD_DBCParser.DBC_GetMsgQuantity(DBCHandle); for (int i = 0; i < DBCMsgNum; i++) { StringBuilder MsgName = new StringBuilder(32); - DBCParser.DBC_GetMsgName(DBCHandle, i, MsgName); + CANFD_DBCParser.DBC_GetMsgName(DBCHandle, i, MsgName); Console.WriteLine("Msg.Name = {0}", MsgName); - int DBCSigNum = DBCParser.DBC_GetMsgSignalQuantity(DBCHandle, MsgName); + int DBCSigNum = CANFD_DBCParser.DBC_GetMsgSignalQuantity(DBCHandle, MsgName); StringBuilder Publisher = new StringBuilder(32); - DBCParser.DBC_GetMsgPublisher(DBCHandle, MsgName, Publisher); + CANFD_DBCParser.DBC_GetMsgPublisher(DBCHandle, MsgName, Publisher); Console.Write("Signals:"); for (int j = 0; j < DBCSigNum; j++) { StringBuilder SigName = new StringBuilder(32); - DBCParser.DBC_GetMsgSignalName(DBCHandle, MsgName, j, SigName); + CANFD_DBCParser.DBC_GetMsgSignalName(DBCHandle, MsgName, j, SigName); Console.Write("{0} ", SigName); //增加信息数据 @@ -338,9 +338,9 @@ namespace CapMachine.Wpf.CanDrive { foreach (var itemSignal in itemMsg) { - DBCParser.DBC_SetSignalValue(DBCHandle, new StringBuilder(itemMsg.Key), new StringBuilder(itemSignal.SignalName), itemSignal.SignalCmdValue); + CANFD_DBCParser.DBC_SetSignalValue(DBCHandle, new StringBuilder(itemMsg.Key), new StringBuilder(itemSignal.SignalName), itemSignal.SignalCmdValue); } - DBCParser.DBC_SyncValueToCANFDMsg(DBCHandle, new StringBuilder(itemMsg.Key), msgPt); + CANFD_DBCParser.DBC_SyncValueToCANFDMsg(DBCHandle, new StringBuilder(itemMsg.Key), msgPt); CanMsg[Index] = (USB2CANFD.CANFD_MSG)Marshal.PtrToStructure(msgPt, typeof(USB2CANFD.CANFD_MSG)); Index++; } @@ -432,12 +432,12 @@ namespace CapMachine.Wpf.CanDrive Console.WriteLine(""); //将CAN消息数据填充到信号里面 - DBCParser.DBC_SyncCANFDMsgToValue(DBCHandle, msgPt, CanNum); + CANFD_DBCParser.DBC_SyncCANFDMsgToValue(DBCHandle, msgPt, CanNum); //获取信号值并打印出来 StringBuilder ValueStr = new StringBuilder(32); - DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder("TX1"), new StringBuilder("COM_current_Power"), ValueStr); + CANFD_DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder("TX1"), new StringBuilder("COM_current_Power"), ValueStr); Console.WriteLine("COM_current_Power = {0}", ValueStr); - DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder("TX1"), new StringBuilder("COM_Curr_dc"), ValueStr); + CANFD_DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder("TX1"), new StringBuilder("COM_Curr_dc"), ValueStr); Console.WriteLine("COM_Curr_dc = {0}", ValueStr); } catch (Exception ex) @@ -484,14 +484,14 @@ namespace CapMachine.Wpf.CanDrive Console.WriteLine(""); //将CAN消息数据填充到信号里面 - DBCParser.DBC_SyncCANFDMsgToValue(DBCHandle, msgPt, CanNum); + CANFD_DBCParser.DBC_SyncCANFDMsgToValue(DBCHandle, msgPt, CanNum); //获取信号值并打印出来 StringBuilder ValueStr = new StringBuilder(32); - DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder("msg_moto_speed"), new StringBuilder("moto_speed"), ValueStr); + CANFD_DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder("msg_moto_speed"), new StringBuilder("moto_speed"), ValueStr); Console.WriteLine("moto_speed = {0}", ValueStr); - DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder("msg_oil_pressure"), new StringBuilder("oil_pressure"), ValueStr); + CANFD_DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder("msg_oil_pressure"), new StringBuilder("oil_pressure"), ValueStr); Console.WriteLine("oil_pressure = {0}", ValueStr); - DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder("msg_speed_can"), new StringBuilder("speed_can"), ValueStr); + CANFD_DBCParser.DBC_GetSignalValueStr(DBCHandle, new StringBuilder("msg_speed_can"), new StringBuilder("speed_can"), ValueStr); Console.WriteLine("speed_can = {0}", ValueStr); } diff --git a/CapMachine.Wpf/ProPars/ProParsHelper.cs b/CapMachine.Wpf/ProPars/ProParsHelper.cs index b627b1d..d936d20 100644 --- a/CapMachine.Wpf/ProPars/ProParsHelper.cs +++ b/CapMachine.Wpf/ProPars/ProParsHelper.cs @@ -110,6 +110,7 @@ namespace CapMachine.Wpf.ProPars if (!string.IsNullOrEmpty(itemStep.ValueAddress)) { var Result = siemensS7NetStance.Write(itemStep.ValueAddress, (short)(itemStep.Value * item.Ratio)); + //var Result1 = siemensS7NetStance.Write(itemStep.ValueAddress, (short)(itemStep.Value * item.Ratio),100); if (!Result.IsSuccess) { var data1 = 1; diff --git a/CapMachine.Wpf/Services/CanDriveService.cs b/CapMachine.Wpf/Services/CanDriveService.cs index e7da0d7..cf83ff2 100644 --- a/CapMachine.Wpf/Services/CanDriveService.cs +++ b/CapMachine.Wpf/Services/CanDriveService.cs @@ -15,13 +15,13 @@ namespace CapMachine.Wpf.Services { public CanDriveService() { - ToomossCanDrive=new ToomossCanFD(); + ToomossCanDrive=new ToomossCan(); //ToomossCanDrive.StartCanDrive(); } /// /// ToomossCanDrive /// - public ToomossCanFD ToomossCanDrive { get; set; } + public ToomossCan ToomossCanDrive { get; set; } } }