|
@@ -21,8 +21,6 @@ namespace CCDCount.DLL.CanBus
|
|
|
private bool m_isOpened = false;
|
|
private bool m_isOpened = false;
|
|
|
private bool m_isStarted = false;
|
|
private bool m_isStarted = false;
|
|
|
|
|
|
|
|
- // CAN ID字节序配置
|
|
|
|
|
- private bool m_useByteSwapForId = false; // 是否对CAN ID进行字节交换
|
|
|
|
|
|
|
|
|
|
// CANopen COB-ID定义
|
|
// CANopen COB-ID定义
|
|
|
private const uint NMT_COB_ID = 0x000; // 网络管理
|
|
private const uint NMT_COB_ID = 0x000; // 网络管理
|
|
@@ -172,7 +170,7 @@ namespace CCDCount.DLL.CanBus
|
|
|
VCI_CAN_OBJ sendObj = new VCI_CAN_OBJ();
|
|
VCI_CAN_OBJ sendObj = new VCI_CAN_OBJ();
|
|
|
|
|
|
|
|
// 根据配置决定是否进行字节序转换
|
|
// 根据配置决定是否进行字节序转换
|
|
|
- sendObj.ID = m_useByteSwapForId ? SwapUint32(cobId) : cobId;
|
|
|
|
|
|
|
+ sendObj.ID = cobId;
|
|
|
|
|
|
|
|
sendObj.ExternFlag = isExtended ? (byte)1 : (byte)0;
|
|
sendObj.ExternFlag = isExtended ? (byte)1 : (byte)0;
|
|
|
sendObj.RemoteFlag = isRemote ? (byte)1 : (byte)0;
|
|
sendObj.RemoteFlag = isRemote ? (byte)1 : (byte)0;
|
|
@@ -242,7 +240,7 @@ namespace CCDCount.DLL.CanBus
|
|
|
CanOpenFrame frame = new CanOpenFrame();
|
|
CanOpenFrame frame = new CanOpenFrame();
|
|
|
|
|
|
|
|
// 根据配置决定是否进行字节序转换
|
|
// 根据配置决定是否进行字节序转换
|
|
|
- frame.CobId = m_useByteSwapForId ? SwapUint32(receiveBuffer[i].ID) : receiveBuffer[i].ID;
|
|
|
|
|
|
|
+ frame.CobId = receiveBuffer[i].ID;
|
|
|
|
|
|
|
|
frame.IsExtended = receiveBuffer[i].ExternFlag == 1;
|
|
frame.IsExtended = receiveBuffer[i].ExternFlag == 1;
|
|
|
frame.IsRemote = receiveBuffer[i].RemoteFlag == 1;
|
|
frame.IsRemote = receiveBuffer[i].RemoteFlag == 1;
|
|
@@ -267,41 +265,6 @@ namespace CCDCount.DLL.CanBus
|
|
|
|
|
|
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
|
|
- #region 字节序转换辅助方法
|
|
|
|
|
-
|
|
|
|
|
- /// <summary>
|
|
|
|
|
- /// 设置CAN ID是否使用字节交换
|
|
|
|
|
- /// </summary>
|
|
|
|
|
- /// <param name="useByteSwap">true=启用字节交换, false=禁用(默认)</param>
|
|
|
|
|
- public void SetIdByteSwap(bool useByteSwap)
|
|
|
|
|
- {
|
|
|
|
|
- m_useByteSwapForId = useByteSwap;
|
|
|
|
|
- Console.WriteLine($"CAN ID字节交换: {(useByteSwap ? "启用" : "禁用")}");
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /// <summary>
|
|
|
|
|
- /// 获取当前字节交换配置
|
|
|
|
|
- /// </summary>
|
|
|
|
|
- public bool GetIdByteSwap()
|
|
|
|
|
- {
|
|
|
|
|
- return m_useByteSwapForId;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /// <summary>
|
|
|
|
|
- /// 32位无符号整数字节交换 (Little-Endian <-> Big-Endian)
|
|
|
|
|
- /// </summary>
|
|
|
|
|
- /// <param name="value">需要转换的值</param>
|
|
|
|
|
- /// <returns>转换后的值</returns>
|
|
|
|
|
- private uint SwapUint32(uint value)
|
|
|
|
|
- {
|
|
|
|
|
- return ((value & 0x000000FF) << 24) |
|
|
|
|
|
- ((value & 0x0000FF00) << 8) |
|
|
|
|
|
- ((value & 0x00FF0000) >> 8) |
|
|
|
|
|
- ((value & 0xFF000000) >> 24);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- #endregion
|
|
|
|
|
-
|
|
|
|
|
#region NMT - 网络管理
|
|
#region NMT - 网络管理
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|