

QT上位机开发(crc校验)
source link: https://blog.csdn.net/feixiaoxing/article/details/135567649
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
crc校验是数据校验中一种常用的方法。我们在上位机和下位机沟通的时候,有的时候需要检验数据在传输的时候有,没有发生数据被修改的情况。这个时候就需要添加crc校验。它本身和加密、解密不太一样。crc是能够判断出数据在传输的过程当中,数据是否发生了改变。而加解密是为了传输过程中,有意义的数据不会被人截取。所以,有的时候,两者是一起使用的。
1、创建一个widget的基础工程
这一次创建widget基础工程之后,我们还准备了一个简单的窗口设计,后面会提到。
2、构建基本的界面
起界面的目的,主要还是为了有一个简单的窗口、按钮界面,这样至少形式上,我们知道将来应该怎么使用。目前来说,界面还是非常简单的,主要就是两个label、两个lineEdit、两个button。

3、开始编写代码
代码部分主要就是QtWidgetsApplication1.cpp的编写。当然,因为界面中还涉及到了两个按钮,所以对应的private slots函数在头文件中需要单独添加一下。

声明了回调函数之后,就可以编写对应的函数内容了。这次为了偷懒,我们没有先将lineEdit中的数据转成16进制数据之后再计算,而是手动来转换的。但是crc的计算方法,我们保留了下来,这部分可以看一下。

代码内容略多,主要看ok_clicked即可。首先,我们将需要计算的数据copy到lineEdit_1。接着这部分数据,我们手动转到了p_char当中。转完之后,p_char和长度被送到了函数calculate_crc。得到计算结果之后,通过补0,重新copy到lineEdit_2。整个处理就是这么一个过程。
上面的两个数组和calculate_crc函数都是标准c/c++的写法,这部分大家可以port到自己的项目当中灵活运用。
4、测试和验证
测试主要分成两部分,第一部分,就是确认数据是不是真的可以计算出来。比如我们单击按钮后,就可以得到这样的显示效果,

接下来呢,我们可以去找一下在线计算crc的网站,看一下依次输入12、34、56、78、90的时候,得到的crc校验值是不是真的是这个数值。比如https://www.23bei.com/tool/59.html,

Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK