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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.