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?
:
Verschoben durch User
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
:
Bearbeitet durch User
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.
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.