Ввод данных из com порта в matlab

Есть ардуино, который в com порт шлет информацию с датчика раз в 100 мс. Хочу сглаживать шумы в matlab и строить графики. Как в массив записать поток данных? Или, еще лучше, может можно это делать в realtime?
Как открыть порт знаю, получаю одно значение с помощью fgets(s). Как в массив несколько значений отправить не соображу. Прошу помощи.

  • Вопрос задан
  • 6641 просмотр
Решения вопроса 1
Korogodin
@Korogodin
Примерно так:
NB.BaudRate = BaudRate;
NB.IOFileName = IOFileName;
try
    s = serial(NB.IOFileName);
end
system(sprintf('stty -F %s %d', NB.IOFileName, NB.BaudRate));
NB.IOid = fopen(NB.IOFileName, 'w+');

k = 0;
while(1)
    b = fread(NB.IOid, 1, 'uint8'); % Один байт с порта
    k = k + 1;
    byte_array(k) = b;
end


Но в этом примере byte_array динамически растягивается. Лучше переваривать данные на лету, а не писать их в массив.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы