使用labview从arduino快速获取缓冲区

时间:2017-04-23 22:17:10

标签: arduino arduino-uno labview

我正在尝试读取从arduino获得的传感器值并使用脉冲传感器和DS18B20(温度传感器)在labview上显示它但是我需要while循环快速(大约50 ms)才能获得波形来自心脏脉冲的图表,但如果它慢于一分钟,则值混淆(我得到温度而不是模拟传感器值,反之亦然)任何建议来解决这个问题? 我在一个用逗号分隔的serial.print中获取值,所以我在LV上使用匹配模式将它们分开Code on labview to read buffer from arduino where the different values are separated by a comma

1 个答案:

答案 0 :(得分:1)

如果检查端口等待的字节数,并且只读取该字节数,则可能会收到不完整的消息。如果没有看到数据的示例以及发送它的Arduino代码行,很难确切地说出这是怎么回事,但总的来说为了让这种数据交换能够很好地工作我会建议你:

  • 确保Arduino代码发送终止字符,例如每对值之后的换行符(0x0A
  • 在LabVIEW中配置串口时,设置并启用它作为读取的终止字符 - 无论如何应该是默认值。然后,我会在进入循环之前清除读缓冲区,以删除在LabVIEW代码未运行时累积的任何旧数据。
  • 在循环中,请勿检查Bytes at Port,但要将大值连接到串行读取功能的bytes to read。串行读取将从串行缓冲区读取并返回字节,直至并包括终止字符,等待它们在必要时到达(直到为端口配置的超时设置)。这样你应该总是收到一个完整的字符串。

要从收到的字符串中获取数据,我会使用Scan from String函数。对于您的示例,看起来好像适当的扫描字符串类似于%f,%f\n,它指定由逗号分隔的两个浮点值,并以换行符结束。 “从字符串扫描”具有错误输出,并且还允许您为尝试读取的每个值连接默认值,以便检测数据是否未正确接收。

在此处显示LabVIEW代码而不是截屏的最佳方法是在图表中选择它并选择Edit> Create VI Snippet from Selection。这样可以保存一个PNG图像,该图像中还嵌入了实际的LabVIEW代码。另外,请考虑安排您的程序框图,以便数据流尽可能从左到右,因为这个约定使它更容易阅读。