用于计算CRC16(Modbus)值的函数

问题描述 投票:6回答:2

使用C#.net,WPF应用程序。我要连接到设备(MODBUS协议),我必须计算CRC(CRC16)。我使用的函数计算出正常的crc16值是正确的,但我想将CRC16(modbus)的值设为1。

帮我整理一下。

c# modbus crc16
2个回答
5
投票

关于Modbus协议的crc16的计算,有很多在线资源。

例如:

http://www.ccontrolsys.com/w/How_to_Compute_the_Modbus_RTU_Message_CRC

http://www.modbustools.com/modbus_crc16.htm

我认为在C#中翻译该代码应该很简单。


0
投票

您可以使用此库:

https://github.com/meetanthony/crccsharp

它包含ModBus包含的几种CRC算法。

用法:

下载源代码并将其添加到您的项目中:

public byte[] CalculateCrc16Modbus(byte[] bytes)
{
  CrcStdParams.StandartParameters.TryGetValue(CrcAlgorithms.Crc16Modbus, out Parameter crc_p)
  Crc crc = new Crc(crc_p);
  crc.Initialize();
  var crc_bytes = crc.ComputeHash(bytes);
  return crc_bytes;
}
© www.soinside.com 2019 - 2024. All rights reserved.