diff --git a/CANHelper/USBCAN/CANHelper.cs b/CANHelper/USBCAN/CANHelper.cs index bf08e03..fef00bb 100644 --- a/CANHelper/USBCAN/CANHelper.cs +++ b/CANHelper/USBCAN/CANHelper.cs @@ -86,10 +86,11 @@ namespace USBCAN #endregion #region 打开与关闭 + /// /// 初始化并打开CAN设备 /// - public void Initialize() + public void Initialize(CAN_API.CAN_BaudRate baudRate) { // 如果已经打开,直接返回 if (IsOpen) @@ -106,8 +107,8 @@ namespace USBCAN AccMask = 0xFFFFFFFF, // ( AccMask:0xFFFFFFFF) Reserved = 0x00, // 保留,填0 Filter = 0x01, // 滤波方式 01 - Timing0 = 0x01, // ( 相当于波特率1000kbps ) - Timing1 = 0x14, // ( 相当于波特率1000kbps ) + Timing0 = CAN_API.VCI_INIT_CONFIG_Timing0[(int)baudRate], // ( 波特率查表 ) + Timing1 = CAN_API.VCI_INIT_CONFIG_Timing1[(int)baudRate], // ( 波特率查表 ) Mode = 0x00 // 正常模式; 0:正常模式,可以IO。 1:表示只听模式(只接收,不影响总线) }; // 初始化CAN @@ -203,6 +204,10 @@ namespace USBCAN // 若未检测到错误信息,则返回‘未知错误’ return "未知错误"; } + else if (errMsgList.Count == 1) + { + return errMsgList[0]; + } else { // 否则将错误信息以'|'拼接返回 diff --git a/CANHelper/USBCAN/CAN_API.cs b/CANHelper/USBCAN/CAN_API.cs index 4fc9ff6..3112093 100644 --- a/CANHelper/USBCAN/CAN_API.cs +++ b/CANHelper/USBCAN/CAN_API.cs @@ -170,7 +170,51 @@ namespace USBCAN public byte ArLost_ErrData; } - + /// + /// CAN波特率枚举 + /// + public enum CAN_BaudRate + { + BaudRate_1000kbps = 0, + BaudRate_800kbps, + BaudRate_500kbps, + BaudRate_250kbps, + BaudRate_100kbps, + BaudRate_50kbps, + BaudRate_20kbps, + BaudRate_10kbps, + BaudRate_5kbps, + } + /// + /// 波特率对应Timing0值 + /// + public static readonly byte[] VCI_INIT_CONFIG_Timing0 = + { + 0x00, + 0x00, + 0x00, + 0x01, + 0x04, + 0x09, + 0x18, + 0x31, + 0xBF + }; + /// + /// 波特率对应Timing0值 + /// + public static readonly byte[] VCI_INIT_CONFIG_Timing1 = + { + 0x14, + 0x16, + 0x1C, + 0x1C, + 0x1C, + 0x1C, + 0x1C, + 0x1C, + 0xFF + }; /// /// 初始化CAN的配置信息 /// @@ -212,6 +256,7 @@ namespace USBCAN /// 800kbps :0x16 /// 500kbps :0x1C /// 250kbps :0x1C + /// 100kbps :0x1C /// 50kbps :0x1C /// 20kbps :0x1C /// 10kbps :0x1C