首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算CRC16 (Modbus)值的函数

计算CRC16 (Modbus)值的函数
EN

Stack Overflow用户
提问于 2013-08-30 14:51:01
回答 3查看 19.8K关注 0票数 9

使用C#.net,WPF应用我要连接一个设备(MODBUS协议),我必须计算CRC (CRC16)。我使用的函数calculate normal crc16和value是正确的,但我想要CRC16(modbus)的值。

帮我整理一下。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-30 15:07:53

网上有很多关于modbus协议的crc16计算的资源。

例如:

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

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

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

票数 7
EN

Stack Overflow用户

发布于 2020-03-02 14:28:47

你可以使用这个库:

https://github.com/meetanthony/crccsharp

它包含了包括ModBus在内的几种CRC算法。

用法:

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

代码语言:javascript
复制
public byte[] CalculateCrc16Modbus(byte[] bytes)
{
  CrcStdParams.StandartParameters.TryGetValue(CrcAlgorithms.Crc16Modbus, out Parameters crc_p);
  Crc crc = new Crc(crc_p);
  crc.Initialize();
  var crc_bytes = crc.ComputeHash(bytes);
  return crc_bytes;
}
票数 3
EN

Stack Overflow用户

发布于 2021-12-03 21:46:48

Boost CRC (因标题而增加)

代码语言:javascript
复制
auto v = std::vector< std::uint8_t > { 0x12, 0x34, 0x56, 0x78 };
auto result = boost::crc_optimal<16, 0x8005, 0xFFFF, 0, true, true> {};
result.process_bytes(v.data(), v.size());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18526685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档