eingelesene Matlabdaten formatieren

#2445267
Lesenswert?

Hallo Forum,

ich habe folgenden MATLAB Code:

>clc
>clear

>try
>s = serial('COM7','BaudRate',9600);
>catch
>clear(s)
>s = serial('COM7','BaudRate',9600);
>end

>try
>fopen(s);
>catch
>out = instrfind
>fclose('all')
>end

>fprintf(s,'*IDN?')

>A = str2num(fscanf(s,'%s'))

>fclose(s)
>delete(s)
>clear s


Dazu habe ich folgendes Verhalten meines Mikrocontrolers:

Es wird permanent gesendet und zwar exakt folgendes: 
>Zahl_1,Zahl_2,Zahl_3/n/r

wobei sich hinter den Zahlen natürlich numerische ASCII Zeichen 
verbergen.


Nun habe ich zwei Probleme:

Problem 1:
Wenn ich die Verbindung von MATLAB aus herstelle, dann passiert es 
manchmal, dass MATLAB erst in der Mitte oder am Ende der obigen Sequenz 
anfängt aufzuzeichnen. Ich möchte aber natürlich, dass ich stets alle 
drei Zahlen erhalte, bzw. ich möchte, dass MATLAB immer erst am Beginn 
einer neuen Sendung anfängt mitzuhören, damit die richtige Menge Daten 
eingeht...


Problem 2:
Wie kann ich den Code am sinnvollsten anpassen, um daraus einen 
Vektor(3xN) zu generieren, der am besten zyklisch gefüllt wird, damit 
ich aus jeder einzelnen Zahlenreihe einen Plott generieren kann?

Hat jemand schonmal etwas derartiges programmiert?


mfg
#2446161
Lesenswert?

Hallo,

zu Problem 1:
Kannst Du die eingelesenen Daten nicht über einen sog. Regulären 
Ausdruck (regular expression) auswerten? Vielleicht nach 
"/n/rZahl_1,Zahl_2,Zahl_3/n/r" suchen lassen?

zu Problem 2:
Definiere ein Timer-Objekt (timer), dass alles x Sekunden Deine 
Funktion zum Auslesen der seriellen Schnittstelle startet.

Mit freundlichen Grüßen
Guido

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren