我创建了一个 MATLAB 应用程序,该应用程序从 flex 传感器创建的数字信号中获取数据。当我尝试运行该应用程序时,它会提示警告:
警告:在“readline”的超时期限内未返回指定数量的数据。'serialport' 无法读取任何数据。有关可能原因的更多信息,请参阅串行端口读取警告。
我检查了硬件连接到哪个串口,我检查了 configureTerminator,以及串口对象是否创建正确。有人会碰巧知道究竟是什么导致了这个问题吗???
下面是我为 MATLAB 应用程序编写的代码,它应该在单击“开始”按钮时获取数据,并可以选择将数据保存到 .csv 文件。
app.SerialPortDropDown.Value 链接到 serialportlist("available")。
% Button pushed function: StartButton
function StartButtonPushed(app, event)
app.stopButtonPressed = false;
try
app.arduinoObj = serialport(app.SerialPortDropDown.Value, str2double(app.BaudRateDropDown.Value));
catch
warning('Problem with Serial Port');
delete(app.arduinoObj);
return;
end
configureTerminator(app.arduinoObj,"CR/LF");
app.arduinoObj.DataBits = 8;
app.arduinoObj.StopBits = 1;
flush(app.arduinoObj);
app.arduinoObj.UserData = struct("Data",[],"Count",1);
t0 = clock;
app.startTime = datetime;
i = 1;
while (etime(clock, t0) < app.RecordingDurationsSpinner.Value) && (app.stopButtonPressed == false)
app.data(i) = str2double(readline(app.arduinoObj));
app.times(i) = etime(clock, t0);
if not(isnan(app.data(i)))
app.DegreeofFlexGauge.Value = app.data(i);
percent = 100.*app.times(i)./app.RecordingDurationsSpinner.Value;
if round(percent) == 100
percent = 100;
end
app.ElapsedTimeLabel.Text = ['Elapsed time: ' num2str(percent) '%'];
i = i+1;
end
end
app.SavetoFileButton.Enable = true;