Ich suche nach einer Befehlsschnittstelle in ein Projekt, das ich mache und das Befehle über seriell von einem PC akzeptiert.
Die Idee ist, dass das Gerät seine Sache macht, aber es erhält einen Befehl, es wird es ausführen. Dies unterscheidet sich von den meisten Beispielen, die ich gefunden habe und bei denen es sich nur um ein Leerlaufgerät handelt, das auf serielle Daten wartet.
So zum Beispiel ein Gerät, das LEDs steuert und eine Animation abspielt. Nehmen wir an, es gibt 3 voreingestellte Animationen, und wenn es eingeschaltet wird, wird immer die Nummer 1 abgespielt. Auf der PC-Seite würde ich den Befehl 'Preset 2 abspielen' oder 'Farbe in Grün ändern' oder eine Live-Echtzeitanimation an das Gerät senden auf den LEDs zu spielen.
Meine Frage ist also, dass ich nicht viele Informationen zu diesem "Entwurfsmuster" finden kann? Ich weiß nicht, wo ich anfangen soll zu suchen. Das nächste, was ich gekommen bin, sind vorgefertigte serielle Arduino-Parsing-Bibliotheken. Ich bin jedoch auf der Suche nach mehr C / Nicht-Arduino / theoretischem Ansatz.
Ich habe mich mit seriellen Protokollen befasst, aber das sind nur Dinge wie SPI und I2C usw., nicht wirklich, wie man eine Steuerungs- / Befehlsschnittstelle in Software implementiert.
Ich habe auch etwas über HDLC herausgefunden, obwohl es eher ein Standard / ein Protokoll zu sein scheint. Ein ähnlicher Thread ist /programming/1445387/how-do-you-design-a-serial-command-protocol-for-an-embedded-system, der einige sehr nette Informationen enthält, aber wieder zu tun ist mit dem Protokoll / der Kommunikation selbst.
Ich versuche herauszufinden, wie man dies codiert / implementiert, um einen Befehl oder eine Steuerungsfähigkeit zu erstellen.
Verwende ich eine Endlosschleife, um die Seriennummer für einen eingehenden Befehl zu überwachen und abzufangen, und verwende eine Liste von IF-Anweisungen, um auszuwählen, welcher Befehl ausgeführt werden soll, aber was passiert dann, wenn keine Befehle vorhanden sind und das System normal sein sollte oder wenn dies der Fall ist einen Befehl verpasst?
Interrupt angetriebene Zustandsmaschine?
Gibt es dafür einen offiziellen Namen, mit dem man recherchieren und Beispiele finden kann?
BEARBEITEN:
Für alle, die die gleiche Frage haben, fand ich dieses wirklich schöne Beispiel während der Recherche, http://www.adnbr.co.uk/articles/parsing-simple-usart-commands