求助!!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-18 23:44
sszx2007 发表于 2018-2-28 15:18
把你用串口调试助手接收到的数据以16进制给我看看

16进制的数据显示如前面板,这是其中一个数据的
呼呼721
2楼-- · 2019-07-19 03:18
sszx2007 发表于 2018-2-28 15:44

非常感谢修改了代码,整体代码结构更为简洁了,有两个地方没明白:
1、使用的 判定范围并强制转换 函数,如果数据超出设定的边界值(-10和10),用什么数据替换了这个超出边界的值了?如此替换,不就失真了吗?
2、下位机数据的速度是4ms一个数据,那LABVIEW的WHILE循环里没有加等待时间,如何做到时序上匹配的?

编程技巧有待提高~_~望指教,谢谢。
sszx2007
3楼-- · 2019-07-19 06:03
 精彩回答 2  元偷偷看……
sszx2007
4楼-- · 2019-07-19 10:03
呼呼721 发表于 2018-2-28 16:35
非常感谢修改了代码,整体代码结构更为简洁了,有两个地方没明白:
1、使用的 判定范围并强制转换 函数,如果数据超出设定的边界值(-10和10),用什么数据替换了这个超出边界的值了?如此替换,不就失真了吗?
2、下位机数据的速度是4ms一个数据,那LABVIEW的WHILE循环里没有加等待时间,如何做到时序上匹配的?

第一,请你看清楚,我替换了没有?边界值你自己设定,我只是把超出设定边界的值不要了而已。请你再次看清楚
第二,我什么要在WHILE循环里加等待时间?你每个数据过来不是带有结束码吗?我以接收到结束码作为一个完整的数据,在这个 采集WHILE循环里面,它会以每收到一次结束码才会进入下一循环,如果没收到,就会一直等待。也就是说,WHILE循环的时间间隔取决于发来的数据有多快。我做有个时间间隔在里面,你可以看到每次循环的时间间隔。
sszx2007
5楼-- · 2019-07-19 12:24
呼呼721 发表于 2018-2-28 16:35
非常感谢修改了代码,整体代码结构更为简洁了,有两个地方没明白:
1、使用的 判定范围并强制转换 函数,如果数据超出设定的边界值(-10和10),用什么数据替换了这个超出边界的值了?如此替换,不就失真了吗?
2、下位机数据的速度是4ms一个数据,那LABVIEW的WHILE循环里没有加等待时间,如何做到时序上匹配的?

第一,你再次看清楚代码。
第二,以结束码作为接收数据,可以不用加等待时间,因为每收到一次结束码,就证明有一帧完整的数据到来。
呼呼721
6楼-- · 2019-07-19 16:19
微信图片_20180228174845.png
串口助手显示的接收端16进制数据


一周热门 更多>