Ошибка отправки данных о температуре из Arduino в Matlab - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь отправить данные датчика температуры из Arduino в Matlab с помощью последовательной связи. Данные о температуре отображаются на серийном мониторе Arduino, но я не смог получить данные в Matlab. Произошла следующая ошибка. Я перепробовал все возможные способы получения данных, поставив pause (3) перед fscanf, но он все еще не работает.

Предупреждение: неудачное чтение: истекло время ожидания до достижения терминатора , «серийный» не может прочитать какие-либо данные. Для получения дополнительной информации о возможных причинах см. Предупреждения о последовательном чтении. NaN

Мой код Matlab выглядит следующим образом

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;

1 Ответ

0 голосов
/ 18 февраля 2020

fscanf вернется, когда будет найден первый терминатор. Обычно это возврат каретки (CR). Поскольку вы используете Serial.print(bme.readTemperature());, Arduino никогда не отправляет CR. Попробуйте Serial.println(bme.readTemperature());

...