Forum: PC-Programmierung eingelesene Matlabdaten formatieren


von Großes F. (112)


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

: Verschoben durch User
von Guido C. (guidoanalog)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.