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
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.