我需要帮助计算功能代码1的modbus CRC检查。即读取线圈寄存器。我有功能代码3的CRC检查示例代码,即模拟输入的保持寄存器。
# Read Coil Status (FC=01)
## Request
该命令从地址为17的从设备请求分立线圈#20至56的通/关状态。
11 01 001 3 002 5 0E84
11 01 05 CD6BB20E1B 45E6
11 03 06 AE41 5652 4340 49AD
读线圈寄存器识别
unsigned int crc_fn(unsigned char *dpacket,unsigned int len) { // CRC Function(Error calcualtion)
unsigned int crc = 0xffff,poly = 0xa001;
unsigned int i=0;
for(i=0; i<len; i++) {
crc^= dpacket[i];
for(j=0; j<8; j++) {
if(crc & 0x01) {
crc >>= 1;
crc ^= poly;
} else
crc >>= 1;
}
}
return (crc);
}
CRC通常首先附加到消息的最高有效字节。您需要交换两行代码,在低阶字节之前发送16位crc的高阶字节。尝试此更改:
Serial_1_Send_byte((unsigned char)(crc1>>8));
Serial_1_Send_byte((unsigned char)crc1);
因此,我的问题是:如何从整数结果到所需的双十六进制结果?我试了几个选择,都没有成功。 注意:我使用的是Qt,所以如果有人能找到实现QByteArray或其他Qt友好代码的解决方案,我会很高兴的。无论哪种方式,不使用Qt、C或C++的解决方案都是无用的:P
我有字符串:。我需要计算这个字符串的CRC。 我有一个计算CRC的函数: 我想将一个字符串强制转换为ushort数组: 但是返回给我的是这样一个数组:。 请告诉我为了正确计算CRC我应该做些什么。
我目前正在建立步进电机控制器和计算机之间的通信,用C#编写一个应用程序(这是我第一次使用这种编程语言,虽然我不是计算机科学家,而是工业工程师,但我肯定有一些优化功能的方法,我不知道,关于这一点的任何建议也将非常感谢)。因此,我一直使用控制器必须与其通信的RS-485,并实现了一个生成所需CRC(循环冗余校验)字节的算法。 使用附加的测试数组和多项式0xA001的预期结果对于CRC_Register
我需要帮助试图验证CRC-16值(也需要帮助与CRC-32值)。我试图坐下来了解CRC是如何工作的,但我一片空白。 更多信息如下: --编辑-- 我已经包括了更多的信息。我引用的文档是TIA-102.BAAA-A(来自TIA标准)。以下是文档陈述的内容(试图尽可能避免侵犯版权): FM(x)的系数被放置在CRC字段中,其中CRC的第0个八位元组的MSB对应于x^31,而CRC的第3个八位元组的LS
本文向大家介绍微信小程序收藏功能的实现代码,包括了微信小程序收藏功能的实现代码的使用技巧和注意事项,需要的朋友参考一下 需求 点击收藏后显示已收藏,在另一个页面出现目前点击收藏的项目 需要解决的问题 点击收藏后需要显示已收藏,并且文字状态改变 另一个页面如何知道你点击了收藏,并且获得你点击收藏的数据 如何解决? 数据状态绑定,并且由状态控制样式(三元运算符) 缓存(setStorageSync,g
本文向大家介绍微信小程序聊天功能的示例代码,包括了微信小程序聊天功能的示例代码的使用技巧和注意事项,需要的朋友参考一下 效果 初始化滚动条高度 数据格式 wxml对话框 wxml底部输入框 css js 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。