串口接收数据帧有冲突且数据丢失
时间:10-02
整理:3721RD
点击:
小编做了一个串口接收数据的上位机,由于功能需求需要,串口接收数据的数据帧比较长,所以在接收大量数据时就会有出现一帧数据还未接收完,下一帧数据就再发过来把上一帧数据冲掉的情况出现,具体如面的示意图所示:
正常的数据帧为aaddssee01032045189128,但是因为接收数据帧有重叠,上一帧数据接收到aaddssee01032045时就被下一帧数据覆盖了,这2个拼成了aaddssee01032045aaddssee01032045189128 变成一个异常帧。
串口接收部分的程序如下:
尝试了加长串口接收循环延时、加入帧头判断等等的办法都没有能解决。求问万能的电子发烧友,有么有朋友遇到同样情况的,怎么解决?
正常的数据帧为aaddssee01032045189128,但是因为接收数据帧有重叠,上一帧数据接收到aaddssee01032045时就被下一帧数据覆盖了,这2个拼成了aaddssee01032045aaddssee01032045189128 变成一个异常帧。
串口接收部分的程序如下:
尝试了加长串口接收循环延时、加入帧头判断等等的办法都没有能解决。求问万能的电子发烧友,有么有朋友遇到同样情况的,怎么解决?
1.检查串口的缓冲区
2.调整时序
3.调整程序架构
两个方案,1 循环时间缩短点,改到20或10,,2 用VISA事件触发读取试试
循环时间缩短试过了,还是会有这个问题。用VISA事件的话整个软件的构架都要改,我还没用过呢,恐怕没那么快搞定,尝试一下吧……
你这一帧数据还不算太长,正在做的一帧57字节,频率50HZ没问题。这个你首先得看你下位机频率多大,注意不要有冲突。然后可以考虑用在采集的地方加顺序结构,确保读取完了再进行后续的处理和提取等操作。
下位机约1.8s发一帧数据,因为时序不是很严格,所以很难不冲突啊。我正在考虑把丢帧的异常数据舍弃掉算了,反正少几帧数据影响也不大
那你上位机的采样周期不应该小于1.8s,不然也没有意义。
小编用的什么串口
谢谢分享,好东西
采样周期比发送周期时间还要长不行的吧,这样发送的数据不是更加会丢失吗
把配置串口关掉试试吧
遇到相同的问题了··同学·你解决了没
每次发送的字节数是不是相同?如果相同的话可以设置每次读取字节总数