Ich lese von einem Sensor Meßwerte über die serielle Schnittstelle ein und zeige sie in einem Textfeld an. Das funktioniert soweit einwandfrei. Allerdings ist der Prozeß schon nach kurzer Zeit ausgelastet und die Daten können kaum noch verarbeitet werden. Es werden zur Zeit einige hundert Werte pro Sekunde gesendet. Eine Darstellung in einem Diagramm ist dadurch so gut wie garnicht möglich.
Ist Matlab einfach so langsam oder ist meine Programmierung schlecht? Hier mal der Quelltext der eventgesteuerten RS232-Routine:
popupmenu_Obj=findobj('Tag','popupmenu'); %Com-Port aus dem Popupmenü auslesen
val = get(popupmenu_Obj,'Value');
string_list = get(popupmenu_Obj,'String');
selected_string = string_list{val}
iflength(instrfind) > 0 %noch geöffnete Ports schließen
fclose(instrfind);
end
Sehr gut, dass Du gleich mit "BytesAvailableFcn & Co" arbeitest!
Ich vermute die Hohe Last kommt Zustande, da die Datenportion (nur 1 Byte) viel zu klein ist. Der Overhead pro eingelesenen Byte ist dagegen sehr hoch (Callback aufrufen, Daten abholen, Grafik aktualisieren, ...) Das Kostet Zeit und in der Zeit kommen weitere Daten an, die gepuffert werden müssen. Wenn der Rechner nicht hinterher kommt (was offensichtlich ist) stockt der...
Ich würde an Deiner Stelle nicht 1 Byte auslesen, sondern etwas mehr. Versuche mit 1 KByte, oder paar Tausend bytes und checke wie Dein Rechner sich verhält - ich denke bei größeren Daten-Portionen wird der mehr "Luft zum Atmen" haben...
MfG
cis
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 10.07.2008, 00:29
Titel:
Hi, outsider!
Ich habe das selbe Problem unter Matlab.
auf den COM-Port greife ich aber etwas anders zu:
bei mir dauert die fprinf() etwa 30ms, fscanf dagegen ca.1ms.
wie lange dauert der zugraif bei Ihnen ?
(auf C++ kann ich alle 4ms eine Antwort bekommen, ohne probleme. Liegt also nicht am RS232 Gerät)
Haben Sie vielleicht schon eine Lösung oder erklärung für das Problem?
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.