modbus crc16 c#
时间: 2023-08-23 09:06:44 浏览: 146
以下是 C# 中计算 Modbus CRC16 的示例代码:
```csharp
public static ushort CalculateCrc(byte[] data)
{
ushort crc = 0xFFFF;
for (int i = 0; i < data.Length; i++)
{
crc ^= (ushort)data[i];
for (int j = 0; j < 8; j++)
{
if ((crc & 0x0001) == 1)
{
crc >>= 1;
crc ^= 0xA001;
}
else
{
crc >>= 1;
}
}
}
return crc;
}
```
使用方法:
```csharp
byte[] data = new byte[] { 0x01, 0x03, 0x00, 0x10, 0x00, 0x01 };
ushort crc = CalculateCrc(data);
byte[] crcBytes = BitConverter.GetBytes(crc);
// crcBytes[0] 和 crcBytes[1] 分别为 CRC16 的高位和低位
```
在上面的例子中,我们使用 `CalculateCrc()` 方法计算 `data` 数组的 CRC16 校验值,并将结果存储在 `crc` 变量中。然后,我们可以使用 `BitConverter.GetBytes()` 方法将 `crc` 变量转换为字节数组,以便我们可以将其添加到 Modbus 数据包的末尾。
阅读全文