Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在labview上快速从arduino读取数据,但得到零_Arduino_Labview_Temperature - Fatal编程技术网

在labview上快速从arduino读取数据,但得到零

在labview上快速从arduino读取数据,但得到零,arduino,labview,temperature,Arduino,Labview,Temperature,我试图从labview读取一些数据,它们是用逗号分隔的整数,但是当我在while循环中等待时间不到100毫秒时,指示灯一直闪烁,我得到了CERO 这是我的arduino代码: #include <OneWire.h> #include <DallasTemperature.h> #define Pin 2 int ecg = 0; OneWire ourWire(Pin); DallasTemperature sensors(&ourWire); { dela

我试图从labview读取一些数据,它们是用逗号分隔的整数,但是当我在while循环中等待时间不到100毫秒时,指示灯一直闪烁,我得到了CERO

这是我的arduino代码:

#include <OneWire.h>
#include <DallasTemperature.h>
#define Pin 2 
int ecg = 0;
OneWire ourWire(Pin); 
DallasTemperature sensors(&ourWire);
{
delay(1000);
Serial.begin(9600);
sensors.begin(); 
}
void loop()
{
  int corazon= analogRead(0);
sensors.requestTemperatures();
Serial.print(sensors.getTempCByIndex(0)); 
Serial.print(",");
Serial.println(corazon);
delay(1);
}

首先,您有两个并行运行的循环,在每个循环中,您从同一个串行端口读取数据。从端口读取数据会将其从串行输入缓冲区中删除,因此到达缓冲区的每个字符只能由一个循环或另一个循环读取,而不是两个循环都读取。循环之间没有任何同步,所以哪个角色去哪里是随机的。每个循环大部分时间都会读取一条不完整的消息,因此您的代码无法将其解码为数字,因此返回零

其次,如中所述,不要在端口使用字节,在配置端口时使用读取终止字符设置。这样,每次串行读取将返回一条完整的消息。如果您这样做,您就不需要在循环中使用wait函数——它只会以与传入数据保持同步所需的速度运行

如果Serial.println发送一个回车符,然后在数据末尾发送一个换行符,那么您希望使用换行小数10作为终止字符。这实际上是默认值,所以只要删除重复循环和端口上的字节,它就可能开始工作

在您的示例代码中,我看不出两个并行循环的任何原因,但是如果您确实需要在LabVIEW的两个不同循环中使用Arduino中的数据,请使用诸如队列或通知程序之类的通信技术将其从一个循环传递到另一个循环。在LabVIEW中有关于这些的示例和帮助


顺便说一下,循环中不需要序列结构的前两帧-由于数据流的原因,代码将以该序列执行。

非常感谢我删除端口上的字节后,它开始工作,很抱歉,我还在学习