LabVIEWwilliam hill官网
直播中

jf_37350755

1年用户 21经验值
擅长:接口/总线/驱动
私信 关注
[问答]

关于Labview蓝牙传输与监控数据问题

各位大佬,我想询问一个关于labview的蓝牙传输和监控的问题。我在stm32里面设置的发送间隔为1毫秒,然后通过蓝牙把数据发送到电脑的labview上位机,但是最后在波形图里面显示频率只有1s 20个左右。
后面试着排除了各种原因,发现蓝牙1秒传20个包,一个包里面有十几组数据,上位机虽然设置的1毫秒循环,但在一个包里面只读取了一个数据,然后其他数据都被废弃了,后面时间属于无数据传输循环停止,直到第二个包传入,然后又从第二个包里面只取了一个数据。image.png
设置的每组数据传入字符串为E 数据1;数据2,数据3;数据4;数据5;数据6 e
我又怀疑是这个读取的字节总数有问题,检测了一下,这个字节总数,就从0~70循环跳,输出的字符串,也就是读取9组数据、4组数据、0 数据、0数据 然后又回到了0组数据跳动。
第三次我把总数据固定为20字节,传入的频率快了,大概5s能显示400个数据,试了一下输出的字符串变成了一组全的数据+另一组不全的数据传入;
后续把字节数调到低于20字节,就会出现每隔几组就会有一组读不出来,那组的里面也没有一组完整的字符串;
但是搞到着就不太明白怎么解决这个问题哇?
我想问问各位大佬,怎么才能让蓝牙传入一个数据包全部读取出来?
我开始想法是先创建一边暂存数据,把每次输入的每个包的数据存上,然后1毫秒的输出到处理,然后显示,但是想了半天没想明白怎么表述,想问一下各位大佬。能这么做吗,还是如何解决这个问题,感谢!

回帖(6)

roki

2023-5-26 16:02:41

最佳答案

应该是数据处理速度不够快,读取数据和处理数据可以分2个循环执行
1 举报
  • jf_37350755: 感谢,试了一遍,改成了双循环,双线程,确实每个数据都读取到了,虽然会字符串传递不完整,漏数据,但是整体速度一下快了好多

李海民

2023-5-26 17:35:35
缓冲区会把所有数据存好,不会丢失数据的。所以你丢失数据的原因大概率是你在读取的同时还在那初始化。
编写LabVIEW程序一定要理解数据流编程的原因,没有数据交互的两个子VI是不会顺序执行的。
2 举报
  • jf_37350755: 具体设置Visa缓冲区设置连接是怎么搞的哇,感谢大佬,弄了半天缓冲区结果没有数据显示
  • 李海民 回复 jf_37350755: 把串口初始化拉到循环体外去

李海民

2023-5-26 17:50:48

初始化就和打电话拨号一样,只做一次就好。
举报

李海民

2023-5-27 09:06:07
1 举报
  • jf_37350755: 我这样改了之后,确实频率上升了,但是还没有达到数据的传输频率呀,大佬,我把串口的数据和实际读取的数据对比了一下,实际计时5秒只读取了200个数据左右,串口检测1秒就有280个数据,图片我放在下面评论里面

更多回帖

发帖
×
20
完善资料,
赚取积分