私は、MATLABとArduinoの間でシリアルデータを読み書きする必要があるプロジェクトを行っています。しかし、MATLABは常にデータを正常に読み取るわけではありません。私はボーレート9600を設定して、私のシリアルセットアップは、このようなものです:MATLABがシリアルポートから読み込むとは限りません。
delete(instrfind({'port'},{comPort})); %%delete if COM4 is setup for any ther usesr
obj=serial(comPort);
set(obj,'DataBits',8);
set(obj,'StopBits',1);
set(obj,'BaudRate',9600);
set(obj,'Parity','none');
set(obj,'InputBufferSize', 1024);
MATLABは完全にデータを送信し、Arduinoのは完全にもそれを読んで。しかし、問題はarduinoからMATLABにデータを読み込むのを待っているときに発生します。 Arduinoのは、このステートメントを介してデータを送信します:MATLABで
Serial.println("azyb");
Serial.flush();
if (Serial.available()>0) // to clear the buffer
Serial.read();`
、コード文は次のとおりです。
while(1)
Arduino.ReadAsyncMode = 'continuous';
% readasync(Arduino);
buf=Arduino.BytesAvailable;
if buf>0
bufData=bufData+fgets(Arduino);
bufFlag=strfind(bufData,'azyb');
if isempty(bufFlag)==0 %%means 'azyb' is found in buffer
flushoutput(Arduino);
break;
end
end
end
私はよく分からないが、おそらく、私はこのコードで欠場ものがあります。私は何が間違っていますか?
FYI:興味深いことに、これは時々動作しますが、ほとんどの時間は動作しません。特にArduinoのみを使用しているにもかかわらず、トータル回路の電源が入っていない場合は、一般的に動作し、トータル回路の電源投入時には動作しません。
Arduino.SE、またはStackOverflowに移行したあなたの質問をお聞かせください。 –
私は主な問題はmatlabにあると思うので、Arduino.SEを改善してください – Anklon