Update CAN Helper

增加波特率设置,在初始化时需要传入CAN波特率
This commit is contained in:
筱傑 2019-08-30 15:35:26 +08:00 committed by GitHub
parent fca1955f1a
commit 866e33aff2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 54 additions and 4 deletions

View File

@ -86,10 +86,11 @@ namespace USBCAN
#endregion
#region
/// <summary>
/// 初始化并打开CAN设备
/// </summary>
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
{
// 否则将错误信息以'|'拼接返回

View File

@ -170,7 +170,51 @@ namespace USBCAN
public byte ArLost_ErrData;
}
/// <summary>
/// CAN波特率枚举
/// </summary>
public enum CAN_BaudRate
{
BaudRate_1000kbps = 0,
BaudRate_800kbps,
BaudRate_500kbps,
BaudRate_250kbps,
BaudRate_100kbps,
BaudRate_50kbps,
BaudRate_20kbps,
BaudRate_10kbps,
BaudRate_5kbps,
}
/// <summary>
/// 波特率对应Timing0值
/// </summary>
public static readonly byte[] VCI_INIT_CONFIG_Timing0 =
{
0x00,
0x00,
0x00,
0x01,
0x04,
0x09,
0x18,
0x31,
0xBF
};
/// <summary>
/// 波特率对应Timing0值
/// </summary>
public static readonly byte[] VCI_INIT_CONFIG_Timing1 =
{
0x14,
0x16,
0x1C,
0x1C,
0x1C,
0x1C,
0x1C,
0x1C,
0xFF
};
/// <summary>
/// 初始化CAN的配置信息
/// </summary>
@ -212,6 +256,7 @@ namespace USBCAN
/// 800kbps :0x16
/// 500kbps :0x1C
/// 250kbps :0x1C
/// 100kbps :0x1C
/// 50kbps :0x1C
/// 20kbps :0x1C
/// 10kbps :0x1C