Je cherche à intégrer une interface de commande dans un projet que je fais et qui acceptera les commandes en série d'un PC.
L'idée est que l'appareil fera son travail mais qu'il reçoit une commande, il l'exécutera. Ceci est différent de la plupart des exemples que j'ai réussi à trouver, qui n'est qu'un appareil au ralenti en attente de données série.
Ainsi, par exemple, un appareil qui contrôle les LED et joue une animation. Disons qu'il y a 3 animations prédéfinies, et quand il s'allume, il joue toujours le numéro 1. Du côté PC, j'envoie une commande `` jouer le préréglage 2 '', ou `` changer la couleur en vert '' ou envoyer une animation en temps réel en direct à l'appareil pour jouer sur les LED.
Ma question est donc que je ne trouve pas beaucoup d'informations sur ce "modèle de conception"? Je ne sais pas par où commencer. Le plus proche que je suis venu est des bibliothèques d'analyse série arduino pré-faites. Cependant, je cherche plus d'approche C / non arduino / théorique.
J'ai étudié les protocoles série, mais ce ne sont que des choses telles que SPI et I2C, etc., pas vraiment comment implémenter une interface de contrôle / commande dans le logiciel.
J'ai également découvert HDLC, encore une fois, il semble qu'il s'agisse davantage d'un protocole standard / a. Un fil similaire est /programming/1445387/how-do-you-design-a-serial-command-protocol-for-an-embedded-system qui a de très belles informations mais encore une fois à faire avec le protocole / communication lui-même.
Im essayant de trouver comment coder / implémenter cela pour créer une capacité de commande ou de contrôle.
Dois-je utiliser une boucle infinie pour surveiller et attraper la série pour une commande entrante, et utiliser une liste d'instructions IF pour choisir la commande à exécuter, mais ensuite ce qui se passe lorsqu'aucune commande et que le système ne devrait être normal, ou si elle manque une commande?
Entraînée par interruption, machine d'état?
Y a-t-il un nom officiel pour cela qui peut être utilisé pour rechercher et trouver des exemples?
ÉDITER:
Pour tous ceux qui ont la même question, j'ai trouvé cet exemple vraiment sympa en cherchant, http://www.adnbr.co.uk/articles/parsing-simple-usart-commands