我正在尝试读取从arduino获得的传感器值并使用脉冲传感器和DS18B20(温度传感器)在labview上显示它但是我需要while循环快速(大约50 ms)才能获得波形来自心脏脉冲的图表,但如果它慢于一分钟,则值混淆(我得到温度而不是模拟传感器值,反之亦然)任何建议来解决这个问题? 我在一个用逗号分隔的serial.print中获取值,所以我在LV上使用匹配模式将它们分开
答案 0 :(得分:1)
如果检查端口等待的字节数,并且只读取该字节数,则可能会收到不完整的消息。如果没有看到数据的示例以及发送它的Arduino代码行,很难确切地说出这是怎么回事,但总的来说为了让这种数据交换能够很好地工作我会建议你:
0x0A
)Bytes at Port
,但要将大值连接到串行读取功能的bytes to read
。串行读取将从串行缓冲区读取并返回字节,直至并包括终止字符,等待它们在必要时到达(直到为端口配置的超时设置)。这样你应该总是收到一个完整的字符串。要从收到的字符串中获取数据,我会使用Scan from String
函数。对于您的示例,看起来好像适当的扫描字符串类似于%f,%f\n
,它指定由逗号分隔的两个浮点值,并以换行符结束。 “从字符串扫描”具有错误输出,并且还允许您为尝试读取的每个值连接默认值,以便检测数据是否未正确接收。
在此处显示LabVIEW代码而不是截屏的最佳方法是在图表中选择它并选择Edit
> Create VI Snippet from Selection
。这样可以保存一个PNG图像,该图像中还嵌入了实际的LabVIEW代码。另外,请考虑安排您的程序框图,以便数据流尽可能从左到右,因为这个约定使它更容易阅读。