求助!!labview生产者与消费者模式,串口读取并显示成波形不成功!

2019-07-17 08:49发布

目的是冲串口读取数据,然后用波形的形式化画出来。采用生产者消费者的模式。
串口的数据是250Hz的心电图,一共2500个数据,要求从串口读取后能先缓存500个数据后再以250Hz的速度画出波形来,同时串口继续接受读取后面剩下的数据。
目前问题是
1、串口只能读取6000个字节大约800个数据,剩下的数据都没有读出来,串口的buffer里后面全是0了。
2、缓存了500个数据后,画波形,实现不了250Hz的方式画波形
3、500个数据需要花好长时间才能读出来;

程序框图如下:



期待高手帮忙看看,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
呼呼721
1楼-- · 2019-07-17 10:41
串口读取有时会出现-1073807252的错误。
sszx2007
2楼-- · 2019-07-17 11:42
有几个问题需要反问你:
第一,你怎么知道串口只能接收6000个字节?
第二,既然你都知道串口的数据是以250Hz(也就是4ms)速度更新数据过来,那么请问,你采集循环里面至少时间延迟都在200ms以上了(即采集速度比数据更新速度慢),你又如何确保能采集到每个数据(即2500个数据你能采集到吗)?
第三,你有没有先用串口助手采集数据看看?确认一下能否采集到2500个数据,还有每个数据字符串的16进制是什么,每个数据后面有没有结束码?如果有,那么你的程序就不是这样写了,如果没有,那么你的程序也不是这样写的。
第四,你对于队列的用法用错了,你对于接收到的字符串数据也没有去判断数据的有效性。
wyq95361977
3楼-- · 2019-07-17 17:35
数据可以直接连波形图
呼呼721
4楼-- · 2019-07-17 23:26
昨天将生产者的while循环的等待时间改成了8ms,99%可以读出完整的数据,原始数据发送时间是4ms一个数据,这样在速度上就可以高度匹配,但是这样的高速,引起了另一个问题,是偶尔出现一个异常数据,大约-10左右,但原始的TXT文件中没有该数据,所以应该是while刷新速度加快后导致的BUG。
呼呼721
5楼-- · 2019-07-18 03:03
 精彩回答 2  元偷偷看……
呼呼721
6楼-- · 2019-07-18 03:10
出现异常数据,可能还是时序配合上,导致的缓存存满后,一个数据被拆成了2部分存储在两个缓存中,造成了读取的数据错误或丢失。

一周热门 更多>