0

我创建了一个 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;
4

0 回答 0