请教,如何在串口通讯编程中如何加入CRC检验程序

请教,如何在串口通讯编程中如何加入CRC检验程序,第1张

串口通讯中,发送的是字符串或者说是字节数组。接收或发送的总字节数已知,一般最后一个或两个字节为CRC校验字节。你可以做一个子函数,以该字节数组作为函数变量,返回值为CRC校验字节。对于发送数据,将返回的校验字节放在发送字节的最后,然后发送即可;对于接收数据校验,则将子函数返回的校验字节与接收到的校验字节比较,相等即校验通过,不相等则校验失败。

CRC校验码的获取有两种方法,可以用查表法,也可以用多项式法计算。

初学者的思路一般是:收到B4就计数加1,当收到2个后开始读后面的

SS

xx

之类。

但是这个路子问题很多,容错性很差,容易出现错误死锁。

专业做法是开辟一块缓冲区(简单的话定义一个足够大的数组即可),然后将读取数据和处理数据分开。有能力的可以用双线程,初学者也最好采用事件驱动的模式。

一段代码负责将收到的数据存入缓冲区;另一段代码负责解析处理缓冲区中的数据。

看上去好像挺高大上,其实实现起来真没多难。按照这个思路钻研一下吧,会有提高的。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8069373.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存