WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

RS232 Daten empfangen

 

der_steffen
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 09.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.06.2010, 14:02     Titel: RS232 Daten empfangen
  Antworten mit Zitat      
Hallo,
Ich versuche mit folgendem Code von der seriellen Schnittstelle Daten zu empfangen. Das klappt auch, aber nicht so wie gewünscht und nicht lange genug... Wink
Ich bekomme alle 2s ein Paket aus 1000 Zeilen die mit CR abgeschlossen sind über COM1.
Das soll zunächst mal in ein Array zur Weiterverarbeitung abgelegt werden.

Code:

function s = serial_com ()
line =1
if length (instrfind) > 0
    fclose (instrfind);
end
s = serial('COM1','BaudRate', 115200,'Parity', 'none','DataBits', 8,'InputBufferSize', 1024,'OutputBufferSize', 1024,'Timeout', 2);
s.Terminator = 'CR';
s.BytesAvailableFcnMode = 'terminator';

disp ('COM-Port opened successfully');
while(s.BytesAvailable)
     receive = fscanf(s);
     ergebnis{line,1}=receive;
     line=line+1;
end
 


Der Code läuft irgendwie nur wiederwillig
Entweder läuft er gar nicht erst richtig an Very Happy oder er bricht irgendwo einfach ab.
Woran liegt das wohl?
Private Nachricht senden Benutzer-Profile anzeigen


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.06.2010, 14:52     Titel:
  Antworten mit Zitat      
Du bekommst mindestens 1000 Zeilen (=1000 mal LF) plus einmal CR. Das sind schon 1001 Zeichen. Dein Inputbuffer ist aber nur 1024 byte groß. Da müssen deine Zeilen schon sehr sporadisch mit Daten befüllt sein, damit das reicht...
Private Nachricht senden Benutzer-Profile anzeigen
 
Der__steffen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.06.2010, 16:32     Titel:
  Antworten mit Zitat      
Um genau zu sein sind es sogar 1000 mal CR sowie LF
Ich werde mal einen größeren Inputbuffer ausprobieren
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.06.2010, 16:45     Titel:
  Antworten mit Zitat      
Du beendest eine Zeile mit CR LF und benutzt CR als terminator-Zeichen für den Empfang in Matlab. Wenn nicht irgendwas falsch läuft, sollte matlab Dir dann eigentlich jede Zeile einzeln an den Kopf werfen.

Grundsätzlich ist es auch meistens sinnvoll mit einer Callback-Funktion zu arbeiten, die automatisch aufgerufen wird, sobald bytes verfügbar sind. Kann man IIRC direkt aus der Dokumentation rauskopieren...
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.