Serielle Kommunikation

Gast #5075492
Hey kurze Frage.
Ich möchte gerne von einen anderen Programm (Matlab) Daten zum Arduino 
senden und diese dementsprechend auswerten. Also über Serielle 
Kommunikation

Die Daten würden so aussehen:

Winkel:1,8 Schritt:5 getUmdrehung();  ...und so weiter

also ich bekomme double, int, boolean, String  Werte oder besser gesagt 
einen Text zurück.
Jetzt kann ich zwar den String bei einem Charakter trennen jedoch würden 
die anderen Daten verloren gehen.
zusätzlich sollen auch Methoden aufgerufen werden können.

Hat jemand eine Idee wie man das unsetzten könnte?
Wenn du die Funktionen auf dem Arduino ausführen willst: Die Funktionen 
mittels ihrer Namen zu übergeben kannst du dir schenken. Ein "richtiges" 
Call-By-Name zu implementieren wäre viel zu aufwendig. Du solltest sowas 
in der Art machen:

Func-ID;param_1;param_2;...;param_n;\r\n

Dann eine Zeile lesen, an ";" splitten, in einem switch-case statement 
die Funktionsnummer auswerten und dann an die entsprechende Funktion 
(nachdem du geprüft hast ob die Anzahl der Parameter stimmt) die Daten 
übergeben.

Wenn du die Funktionen in Matlab ausführen willst, ist es ja kein 
Problem, weil du da Call-By-Name nutzen kannst.

Beispiele für die Benutzung des seriellen Ports unter Matlab findest du 
hier: 
https://de.mathworks.com/help/matlab/matlab_external/getting-started-with-serial-i-o.html
(Firma: Q3)
Ich benutze in solchenFällen immer ein Datenformat mit fester Länge, 
z.B. "<CMD:DAT1:DAT2>" oder so ähnlich.

Jedes Empfangene Zeichen schiebe ich in ein Array fester Länge (das 
älteste fällt raus) und prüfe, ob im ersten und letzten Feldelement die 
Start- und Stopp-Zeichen (z.B. "<" und ">") erkannt werden.

Wenn ja, führe ich die zugehörige Funktion aus, das Array leere ich in 
jedem Falle. Die Erkennung bestätige ich mit einem "<OK>" zum Sender. 
Kommt das zu lange nicht, werden die Daten nochmal gesendet.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.