Ich mache ein Projekt, wo ich serielle Daten zwischen MATLAB und Arduino lesen und schreiben muss. Aber MATLAB liest Daten nicht immer erfolgreich. Ich habe Baudraten 9600 und meine Serien Setup ist wie folgt:Warum MATLAB nicht immer von der seriellen Schnittstelle lesen?
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 Daten sendet perfekt und Arduino es perfekt zu lesen. Aber ein Problem tritt auf, wenn ich warten möchte, um Daten von Arduino zu MATLAB zu lesen. Arduino sendet Daten durch diese Aussagen:
Serial.println("azyb");
Serial.flush();
if (Serial.available()>0) // to clear the buffer
Serial.read();`
Und Code-Anweisung in MATLAB ist:
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
Ich bin nicht sicher, aber wahrscheinlich ist es etwas, was ich in diesem Code verpassen. Was könnte ich falsch machen?
FYI: Interessanterweise funktionieren diese manchmal aber die meiste Zeit nicht. Besonders, wenn wir nur Arduino verwenden, aber die gesamte Schaltung nicht eingeschaltet ist, hat es im Allgemeinen funktioniert und wenn die gesamte Schaltung hochgefahren ist, funktioniert es nie.
Möchten Sie, dass diese Frage von Ihnen auf Arduino.SE oder StackOverflow migriert wird? –
Better StackOverflow dann Arduino.SE als ich denke, das Hauptproblem ist in Matlab – Anklon