Explorar el Código

20260514003 CANOPEN从站,代码简化优化前备份

向羽 孟 hace 1 mes
padre
commit
43ede0d6ca
Se han modificado 2 ficheros con 11 adiciones y 43 borrados
  1. 2 39
      CanOpenSlaveTest/CanOpenManager.cs
  2. 9 4
      CanOpenSlaveTest/CanOpenSlaveDevice.cs

+ 2 - 39
CanOpenSlaveTest/CanOpenManager.cs

@@ -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>

+ 9 - 4
CanOpenSlaveTest/CanOpenSlaveDevice.cs

@@ -744,11 +744,17 @@ namespace CCDCount.DLL.CanBus
             // TODO: 根据映射表构建PDO数据
             // TODO: 根据映射表构建PDO数据
             // 此处数据长度不可以超过PLC中PDO映射的长度
             // 此处数据长度不可以超过PLC中PDO映射的长度
             // 这里使用示例数据
             // 这里使用示例数据
-            byte[] pdoData = new byte[4];
+            byte[] pdoData = new byte[8];
             
             
             // 示例: 填充一些测试数据
             // 示例: 填充一些测试数据
-            pdoData[0] = (byte)(1);
-            pdoData[1] = (byte)(3);
+            pdoData[0] = (byte)(255);
+            pdoData[1] = (byte)(255);
+            pdoData[2] = (byte)(255);
+            pdoData[3] = (byte)(255);
+            pdoData[4] = (byte)(255);
+            pdoData[5] = (byte)(255);
+            pdoData[6] = (byte)(255);
+            pdoData[7] = (byte)(255);
             uint cobId = m_tpdoConfigs[pdoNumber - 1].CobId;
             uint cobId = m_tpdoConfigs[pdoNumber - 1].CobId;
             m_canManager.SendCanFrame(cobId, pdoData);
             m_canManager.SendCanFrame(cobId, pdoData);
             
             
@@ -864,7 +870,6 @@ namespace CCDCount.DLL.CanBus
             Console.WriteLine($"[EMCY] 发送无错误报文 - COB-ID: 0x{emcyCobId:X3}");
             Console.WriteLine($"[EMCY] 发送无错误报文 - COB-ID: 0x{emcyCobId:X3}");
             m_canManager.SendCanFrame(emcyCobId, emcyData);
             m_canManager.SendCanFrame(emcyCobId, emcyData);
         }
         }
-        
         #endregion
         #endregion
         
         
         #region 辅助方法
         #region 辅助方法