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