我试图读取从arduino获得的传感器值,并使用脉冲传感器和DS18B20(温度传感器)在labview上显示它,但是我需要while循环快速进行(大约50 ms ),以便从心脏脉搏中获得波形图,但是如果它比一分钟慢,那么这些值就会混合起来(我得到温度而不是模拟传感器值,反之亦然)有什么建议可以解决这个问题? 我得到一个以逗号分隔的serial.print中的值,所以我在LV上使用了一个匹配模式来分隔它们使用labview从arduino快速获得缓冲区
1
A
回答
1
如果您检查端口上有多少个字节正在等待并且只读取了该字节数,你可能会收到不完整的消息。如果没有看到数据的例子以及发送它的Arduino代码的线路,很难说这是怎么回事,但总的来说,要让这种数据交换工作的很好,我建议你:
- 确保Arduino代码发送终止字符eg在每对值后换行(
0x0A
) - 当您在LabVIEW中配置串口时,设置并启用它作为读取的终止字符 - 无论如何,这应该是默认值。在进入循环之前,我会清除读取缓冲区,以清除LabVIEW代码未运行时累积的任何旧数据。
- 在循环中,不要检查
Bytes at Port
,但将串行读取函数的大数值连接到bytes to read
。串行读取将读取串行缓冲区中的字节并将其返回并包括终止字符,并等待它们在必要时到达(达到为端口配置的超时设置)。这样你应该总是收到一个完整的字符串。
要从接收到的字符串中获取数据,我将使用Scan from String
函数。对于您的示例,它看起来好像合适的扫描字符串将是类似于%f,%f\n
的那样,它指定由逗号分隔并以换行符结尾的两个浮点值。从字符串扫描有一个错误输出,并且还允许您为每个要读取的值默认连线,以便您可以检测数据是否未被正确接收。
在此处显示LabVIEW代码而不是截图的最佳方式是在图中选择它并选择Edit
>Create VI Snippet from Selection
。这样可以保存一个PNG图像,其中嵌入了实际的LabVIEW代码。另外请考虑安排你的程序框图,以便数据流尽可能地从左到右,因为这个约定使得它更容易阅读。
相关问题
- 1. 如何从Emacs编译缓冲区获得快速状态?
- 2. 在labview上快速读取arduino的数据但是获得ceros
- 3. 快速切换缓冲区?
- 4. 用于DMA的快速缓冲存储器缓冲区
- 5. 快速响应正文到缓冲区
- 6. 快速修改OpenGL VAO缓冲区
- 7. Arduino清除缓冲区
- 8. LabVIEW中快速VI
- 9. 如何快速读取OpenGL颜色缓冲区和深度缓冲区?
- 10. arduino串行缓冲区如何工作?
- 11. nginx无缓冲区高速缓存
- 12. 如何使用OpenGL获得最大恒定缓冲区大小?
- 13. 快速切换到最后编辑的缓冲区
- 14. 用临时缓冲区使用ofstream写入临时缓冲区
- 15. SQL缓冲区页面快速增加SQL Server内存使用率
- 16. 使用缓冲区竞争编程的Python快速输入输出
- 17. 快速缓冲图像压缩
- 18. 从`NSValue`获取缓冲区指针
- 19. 从rgb8_view_t获取缓冲区提升gil
- 20. OpenCV从缓冲区获取缩略图
- 21. 从CImage获取缓冲区数组AtlImage
- 22. 从QGLPixelBuffer获取深度缓冲区
- 23. 从缓冲区获得最清晰的iplimage
- 24. 如何从std :: string获得可写的C缓冲区?
- 25. 处理从rs232端口获得的缓冲区数据
- 26. 使用缓冲区的ReadLine()?
- 27. 缓冲区使用示例
- 28. OpenGL中的缓冲区究竟是什么,我如何使用多个缓冲区以获得优势?
- 29. 使用子缓冲区绘制缓冲区webgl
- 30. 加快IIS/.NET/LINQ从网络缓冲区检索数据的速度