将温度数据从Arduino发送到Matlab时出错
我正在尝试使用串行通信将温度传感器数据从arduino发送到matlab。温度数据显示在Arduino串行监视器上,但我无法在Matlab中获取数据。出现以下错误。我已经尝试了各种可能的方法来获取数据,在fscanf之前暂停(3),但仍然不起作用 警告:读取失败:在到达终止符之前发生超时。 “串行”无法读取任何数据。有关可能原因的更多信息,请参阅串行读取警告。 楠 我的matlab代码如下将温度数据从Arduino发送到Matlab时出错,matlab,arduino,serial-port,Matlab,Arduino,Serial Port,我正在尝试使用串行通信将温度传感器数据从arduino发送到matlab。温度数据显示在Arduino串行监视器上,但我无法在Matlab中获取数据。出现以下错误。我已经尝试了各种可能的方法来获取数据,在fscanf之前暂停(3),但仍然不起作用 警告:读取失败:在到达终止符之前发生超时。 “串行”无法读取任何数据。有关可能原因的更多信息,请参阅串行读取警告。 楠 我的matlab代码如下 if ~isempty(instrfind) fclose(instrfind); del
if ~isempty(instrfind)
fclose(instrfind);
delete (instrfind);
end
waitTime = 10;
s = serial('COM4','BAUD',9600);
waitTime = duration(0,waitTime,0);
t = datetime('now') - startTime;
while t < waitTime
fopen(s);
pause(3);
idn = fscanf(s);
fclose(s);
serialData = str2double(idn);
corrData = serialData;
disp(corrData);
end
clear a;
clear s;
if~isempty(instrfind)
fclose(instrfind);
删除(instrfind);
结束
等待时间=10;
s=串行('COM4','BAUD',9600);
waitTime=持续时间(0,waitTime,0);
t=日期时间(“现在”)-开始时间;
而t 当找到第一个终止符时,fscanf将返回。这通常是回车(CR)。因为您使用的是Serial.print(bme.readTemperature())代码>Arduino从未发送过CR。尝试Serial.println(bme.readTemperature())代码>在循环中打开和关闭可能是错误的。通常,您打开连接并保持打开状态,直到所有内容都被读取。arduino正在发送什么样的数据?文本数据?我不确定arduino发送的是什么样的数据,因为我是arduino的绝对初学者,但我正在将温度传感器数据发送到matlab。数据是使用Serial.print(bme.readTemperature())在arduino中显示的;。你好谢谢你的回复。它显示错误信息,但温度ie 26.32度的数据从未发送到Matlab。相反,它显示了NaN。没有发送值的原因可能是什么?我已经通过将fopen和fclose放在while循环之外解决了这个问题。它显示的是值,但对于前几个值,它显示的是NaN。