ModeBus_Qt crc校验

news/2025/2/13 3:43:25/

项目描述:
使用qt来进行串口ModeBus的相关通信。
网上查找相关的资料有ModeBus的相关的库。有第三方库,也有Qt自己的库。
但是ModeBus说到底只是一种协议,本质还是串口通信。所以为了方便自己日后修改代码,自己写协议的解析。
简单介绍:
我使用的是Modbus RTU(Remote Terminal Unit 远程终端单元)
这种方式常采用RS-485做为物理层,一般利用芯片的串口实现数据报文的收发,报文数据采用二进制数据进行通信。

Modebus相关的协议结构:
例如:01 03 02 03 E8 B8 FA
01:地址
03 02:功能码
03 E8:数据
B8 FA:crc校验
整体的结构相对简单,在工程运用上的命令也不会很长。这样解码的难点就在crc校验上了。

校验原理就不细说了。经过上网查找相关资料,以下是自己感觉比较好的crc校验的代码。
输入:命令和命令长度
输出:一个字符类型的CRC的值

// 计算crc校验值
QString MainWindow::CRC16_2(uchar *buf, int len) {unsigned short crc = 0xFFFF;for (int pos = 0; pos < len; pos++) {crc ^= (unsigned int)buf[pos]; // XOR byte into least sig. byte of crcfor (int i = 8; i != 0; i--) { // Loop over each bitif ((crc & 0x0001) != 0) { // If the LSB is setcrc >>= 1; // Shift right and XOR 0xA001crc ^= 0xA001;} else { // Else LSB is not setcrc >>= 1;    // Just shift right}}}//高低字节转换crc = ((crc & 0x00ff) << 8) | ((crc & 0xff00) >> 8);uchar high = (crc >> 8) & 0x000ff;uchar low = crc & 0xFF;QString str = QString("%1%2").arg(high, 2, 16, QLatin1Char('0')).arg(low, 2, 16, QLatin1Char('0'));return str;
}

http://www.ppmy.cn/news/224797.html

相关文章

MQTT与EMQ

文章目录 1 MQTT协议与EMQ中间件1.1 物联网消息协议MQTT1.1.1 什么是MQTT1.1.2 MQTT相关概念1.1.3 消息服务质量QoS——信息的可靠投递1.1.3.1 QoS0——消息服务质量为0&#xff0c;消息发送至多一次1.1.3.2 QoS1——消息发送至少一次1.1.3.3 QoS2——消息发送仅一次1.1.3.4 不…

【Mysql数据库从0到1】-入门基础篇--sql语句简单使用

【Mysql数据库从0到1】-入门基础篇--sql语句简单使用 &#x1f53b;一、数据库创建、删除、选择1.1 &#x1f343; create database 创建数据库1.2 &#x1f343; 使用 mysqladmin 创建数据库1.3 &#x1f343; drop 命令删除数据库--一般不建议在数据库执行delete、drop等命令…

益阳定制网站多少钱,益阳品牌网站建设多少钱

2021年做一个网站需要多少钱&#xff1f;这是大多数小企业在建立网站之前&#xff0c;最为关心的问题。在这里&#xff0c;我们将探讨创建小型商业网站的一次性成本和持续成本。 建立一个网站需要多少钱 1.域名费用 URL&#xff08;又名域名&#xff09;是人们在浏览器中输…

app开发公司:手机app开发多少钱

app开发公司&#xff1a;手机app开发多少钱&#xff1f; 作者&#xff1a;北京朗毓圣元科技 手机app开发多少钱&#xff1f;这是很多传统企业在布局移动互联网时经常思考的问题&#xff0c;app开发公司建议企业用户在进行手机app开发前&#xff0c;需要仔细了解自己的app功能…

iqoo5大概多少钱

iQOO 5提供了皓影与星溯两种配色版本&#xff0c;整体外观凝练而不张扬&#xff0c;颇具质感&#xff1b;iQOO 5 Pro则带来了赛道版与传奇版两种配色版本&#xff1a;赛道版打造出专属的碳纤维纹理后盖&#xff0c;采用AG工艺玻璃后盖&#xff0c;哑面凯夫拉带来如汽车内饰的高…

Excel-VLOOKUP函数

vlookup函数主要用于查找核对数据。 VLOOKUP(lookup_value, table_array, col_index_num, range_look) 上面参数的含义分别是&#xff1a; 参数含义lookup_value用谁去找table_array匹配对象范围col_index_num返回第几列的值range_look匹配方式 例子&#xff1a; 想要在 H2 单元…

ERP一套多少钱?

ERP企业资源计划管理&#xff0c;基于信息技术、互联网技术基础上&#xff0c;一体化整理管理企业资源&#xff0c;以系统化思想为企业以及员工的决策提供平台。目前国外ERP使用已经逐渐普遍化&#xff0c;国内也开始广泛起来&#xff0c;而根据企业选择的品牌、系统功能、购买…

Excel表格vlookup函数

Excel表格vlookup函数 一、基础用法1、精确匹配&#xff08;精确查找&#xff09;2、近似匹配&#xff08;区间查找&#xff09;3、反向查找4、多条件查找 二、进阶用法&#xff08;公式嵌套&#xff09;1、屏蔽错误值&#xff08;IFERROR&#xff09;2、关键字词查找&#xff…