Я использую fscanf для чтения данных из постоянного потока информации, поступающего с датчика, подключенного к ардуину, и для построения графика в реальном времени.Matlab, читающий сериал без паузы
Проблема заключается в том, что matlab занимает слишком много времени, чтобы построить живую информацию, и это связано с тем, что fscanf считывает последовательную информацию, а следующий вызов fscanf считывает следующие последовательные данные, а не тот, который в настоящее время отображается.
Я хотел бы знать, как я могу прочитать информацию последнее получил от последовательного порта, вместо следующего один. Любые идеи о том, как сделать показания более «реальными», будут очень полезными. Вот мой код:
clear;
yThresh = 2.5;
delete(instrfindall);
s = serial('COM7', 'BaudRate', 57600);
fopen(s);
arq = fopen('dados.txt', 'w');
i = 1;
while ~feof(arq) %end of file
a(i, 1:3) = fscanf(s, '%f%f%f')
xValMax = i+20;
xValMin = max(1,i-20);
subplot(3,1,1);
plot(max(1,i-20):length(a(:,1)) , a(max(1,i-20):length(a(:,1)),1));
title('AcelX','fontsize',13,'fontweight','bold');
xlabel('Tempo','fontsize',10,'fontweight','bold');
ylabel('AcelX','fontsize',10,'fontweight','bold');
axis([xValMin xValMax -yThresh yThresh])
end