C# Modbus CRC16校验
时间: 2023-07-12 17:21:29 浏览: 205
modbus CRC16 校验
下面是一个基于C#的Modbus CRC16校验的示例代码:
```csharp
public static ushort CalculateCrc(byte[] data, int length)
{
ushort crc = 0xFFFF;
for (int i = 0; i < length; i++)
{
crc ^= data[i];
for (int j = 0; j < 8; j++)
{
if ((crc & 0x0001) != 0)
{
crc >>= 1;
crc ^= 0xA001;
}
else
{
crc >>= 1;
}
}
}
return crc;
}
```
调用示例:
```csharp
byte[] data = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05 };
ushort crc = CalculateCrc(data, data.Length);
Console.WriteLine(crc.ToString("X")); // 输出校验结果的十六进制表示
```
注意:在使用Modbus协议时,CRC16校验通常是对数据帧的前面部分进行计算,不包括帧的起始符和地址等信息。具体实现需要根据协议规范进行调整。
阅读全文