PC串口连续数据帧接收方法
[复制链接]
本帖最后由 lb8820265 于 2019-11-30 22:15 编辑
本次分享内容比较硬核,只有在使用串口做高速数据通信时候才会遇到。
串口可以说是目前最常用通信方式,双方约定好波特率,只需要一根线就能够传输数据,极大的简化了接线。串口传输的方式为一个字节一个字节的发送,完整版的串口有流控引脚,可以用来判断是否发送完成。但是简版的串口只有一根接收线或者发送线,也就没有无法知道串口是否发送一帧完成。
4.png (31.77 KB, 下载次数: 0)
2019-11-30 22:11 上传
之前我用写过两篇通信协议的文章,采用自己定制的通信协议进行数据的传输。
帖子里面介绍使用自己定义的协议,长时间间隔的传输一帧数据,例如每隔500ms发送一次数据,这样可以有效保障接收的数据为一帧或小于一帧,因为电脑有足够的时间来处理串口数据。但是如果想要一秒内传输更多的数据帧,就要减少一帧数据的间隔时间,那么就会面临许多问题,在PC中串口的数据的接收中断并不是理想的一个字节一个中断,而且就算设置了接收数量触发中断,也是不可靠的,这也许和Windows操作系统是非实时有关。
举个例子,一帧数据为100个字节,下位机连续或者短间隔连续发送,在PC上位机上无论设置为什么触发条件,每次触发接收都会有以下的