Matrix Sensor 1610にKitronyx Snowboard(Arduino Leonardoを使用しています)を使用しています。シリアルポートから自分のデータをMatlabに直接読み込んで可視化したいと考えています。ArduinoからMatlabへのリアルタイムデータのインポート。 BufferSizeとは何ですか?なぜ遅延するのですか?
私は、関連すると思う2つの問題があります: まず、私はマトリックスを読むことができますが、遅れがあります。長い私は遅延を長く待つ。すべての
第二に、しばらくして、私はいつも買ってあげる:シリアル/ fprintfのを使用して
エラー(ライン144)
予期しないエラー:タイムアウトが書き込み操作中に発生した。..
InputBufferSizeが大きければ長いほど私のデータをプロットすることができます(問題1のために問題はありません)
どのように便利なバッファサイズがわかりますか?なぜ誰が遅延とどのように私はそれを取り除くことができますか?
は、事前にどうもありがとうございますマイク
close all %close all figures
clear all %clear all workspace variables
fclose('all') %close all Files
delete(instrfindall) %Reset Com Port
delete(timerfindall) %Delete Timers
% setup serial
serialPort = serial('COM3');
command = 'A';
nrow = 16;
ncol = 10;
row_index = [9,10,11,12,13,14,15,16,8,7,6,5,4,3,2,1];
col_index = [1,2,3,4,5,6,7,8,9,10];
% 10x16 = 160 bytes
lendata = 160;
BaudRate = 11520;
InputBufferSize = 115200;
Timeout = 5;
set(serialPort , 'BaudRate', BaudRate);
set(serialPort , 'InputBufferSize', InputBufferSize);
set(serialPort , 'Timeout', Timeout);
fopen(serialPort);
while 1
% Request data
fprintf(serialPort, command);
% Get data
%Data is read as string (CSV)
data_string = fgets(serialPort);
data_string_array = strsplit(data_string, ',');
data = str2double(data_string_array);
% Reshape data (1D -> 2D array)
data2d = zeros(nrow, ncol);
k = 1;
for i = 1:nrow
for j = 1:ncol
data2d(row_index(i), col_index(j)) = data(k);
k = k + 1;
end
end
%resize 16x10 image to 160x100 image
data2d_resized = imresize(data2d,50);
imshow(data2d_resized,[0 100]);
end
あなたが「もっと長く私が待ちます」と言うとき、待ち時間が長くなるとタイムアウトが長くなることを意味しますか? – RPM
私はあなたが制御している機器が終了文字を期待しているか、またはMatlabが検知していない終了文字を送信していると推測する危険があります... – RPM
いいえ私は最初の10秒を意味しません。例えば、1分後よりも遅れている。だから私は長く私のコードを実行している私は私のセンサーからの応答を見るのを待つ必要があります。私は別の行列を次々に得ています。終了文字に何らかの問題があった場合、私の行列はスクランブルされませんか?どのようにそれを検出しますか?助けてくれてありがとう? –