Verfasst am: 15.08.2011, 21:33
Titel: Zugriff auf ComPort Timingproblem
Ich möchte die von einem Mikrokontroller gesendetet Werte über der Zeit auftragen LIVE!! Dazu habe ich folgende Schleife geschrieben:
Code:
while ~isequal(datestr(now,'mm/DD HH:MM'),stopTime)
time(count) = datenum(clock);
fprintf(serialObject,'a'); % To measure current the command is MEASURE:CURRENT:DC?
voltage(count) = fscanf(serialObject,'%c'); %#ok<SAGROW>
set(plotHandle,'YData',voltage,'XData',time);
set(figureHandle,'Visible','on');
datetick('x','mm/DD HH:MM');
pause(timeInterval);
count = count +1;
end
Der Mikrocontroller reagiert auf das 'a' was gesendet wird und sendet direkt darauf den gewünschten Wert. Nur das fscanf ist zu langsam. Ich bekomme in Matlab immer einen Timeout fehler!! Woran liegt das?! Hat einer eine idee?
Gast1
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 16.08.2011, 08:38
Titel:
Hi,
bekommst du einen Error oder eine Warnung?
Funktioniert es, wenn du es per Hand in die Console eingibst?
Wenn ja, hilft es vielleicht, eine kurze Pause zwischen fprintf und fscanf zu setzen.
Außerdem könntest du fread verwenden und die Anzahl der zu lesenden Bytes angeben, dann muss er nicht jedesmal auf das Timeout warten (welches du auch einstellen kannst)
mit fread könnte das so aussehen:
Code:
fprintf(serialObject,'a');
while serialObject.Bytesavailable==0 pause(0.05);
end
ergebnis=fread(serialObject,serialObject.Bytesavailable);
Ich merke schon, meine Programierkenntnis reicht noch nocht sonderlich weit!
Kann es sein, dass für den Printf und das fscanf der gleich buffer benutzt wird?
Ich teste den guten Vorschlag später nochmal und poste wie es gelaufen ist!
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.