L'automatisation de la communication de port série sur Linux
J'ai un serveur linux (Red Hat 4) avec une connexion de port série d'un linux embarqué l'appareil, et une autre connexion de port série d'un régulateur de puissance pour ce périphérique. Ma méthode de lutte est d'ouvrir deux minicom séances, chacune dans sa propre fenêtre. Je voudrais automatiser cette communication par le biais de scripts. Au début, j'ai commencé à penser comment je pourrais automatiser à l'aide de minicom, alors réalisé que je ne devrait pas essayer d'automatiser à l'aide d'une application de console quand un script doit être en mesure de parler au port directement.
Je sais que certains Perl et python. Je n'ai pas d'expérience antérieure de la communication par modem (à l'aide de commandes AT). Perl a de Périphérique: Modem, si c'est seulement la bêta, et Perl semble être un bon choix parce que je préfère son texte d'extraction et de querelles capacités. Mais, si j'ai besoin d'apprendre à contrôler un modem et d'écriture/déboguer un script, qui ajoute plus de temps à ma tâche.
Est-il possible/commune de contrôler de manière interactive une application console comme minicom avec un script? Si non, quelles sont les bonnes ressources pour m'apprendre à utiliser de modem À commandes? Ou est-il une autre ressource qui pourrait simplifier les choses pour moi?
OriginalL'auteur jasper77 | 2010-10-06
Vous devez vous connecter pour publier un commentaire.
Kermit est une série de la communication app comme minicom et il a son propre langage de script, et je l'ai utilisé pour certains de téléchargement automatique sur les appareils embarqués. Cependant, il est assez limitée et/ou buggy, donc je suis finalement passé à l'aide de python et pyserial.
Chaque fois que vous faites affaire avec mode texte, comme AU jeu de commandes ou de parler à un shell sur une ligne série, il est vraiment puissant.
Si j'ai besoin de faire de transfert binaire à l'aide de certains de protocole standard, habituellement, j'utilise des outils de ligne de commande en mode non-interactif, et se reproduisent à partir de mon script python.
Voici une partie des outils que j'ai construit : en attente d'une entrée, d'envoyer des données via xmodem, l'envoi d'un commandement de l'u-boot et le démarrage d'un transfert en utilisant le protocole kermit. Je l'utilise pour automatique clignotants et les essais des appareils embarqués.
OriginalL'auteur shodanex
J'ai découvert runscript ("$ homme runscript"), un utilitaire qui ajoute un s'y attendre-comme script capacité de minicom. Le fait de s'attendre comportement est utile pour moi depuis cet appareil utilise un propriétaire interactif de la séquence d'amorçage. C'est rudimentaire mais suffisant. Un script peut être invoquée lors du démarrage de minicom avec l'option "-S scriptname" drapeau, et un texte spécifique à partir du script peut être envoyé à un fichier journal, ce qui est utile lors de l'exécution de minicom à partir d'un script. Je n'ai pas trouvé un moyen d'envoyer la console le contenu d'un journal, afin d'avoir un script externe savoir ce qui se passe à l'intérieur de minicom implique l'écriture d'un journal et d'avoir le script de surveiller le journal. J'ai l'intention d'utiliser runscript seulement de redémarrer et d'obtenir un shell, ssh à l'appareil pour une réelle interaction, dans un langage de plus haut niveau de script comme Python ou Perl. Si minicom n'étaient pas déjà en place, je prendrais shodanex.
Runscript ne peut pas avoir imbriqués attend. J'ai eu autour de ce par l'utilisation de goto et les étiquettes, ce qui est sans doute plus lisible que imbriquée s'attend de toute façon:
Vous avez des fautes de frappe dans votre script, "label" vs "étiquette".
runscript semble OK, mais je ne pouvais pas voir un moyen pour envoyer un fichier, de sorte pyserial c'est pour moi.
OriginalL'auteur jasper77
Si c'est seulement de contrôler les appareils et rien d'autre (comme le traitement des messages, l'interaction avec les autres services du système d'exploitation, etc), vous pouvez utiliser le chat programme. Il est écrit exactement pour cela.
Vous pouvez le trouver dans la ppp paquet sur n'importe quelle distribution Linux.
OriginalL'auteur user237419
Je suis en utilisant par exemple un contrôleur de puissance que j'utilise RS232 pour contrôle.
Je le script bash simplement par l'émission d':
l'appareil que j'utilise aussi utilise 300 bauds j'ai donc question:
avant de la main.
OriginalL'auteur Mcradle
Python a maintenant la PySerial bibliothèque: http://pyserial.sourceforge.net/
Ruby SerialPort gem: http://rubygems.org/gems/serialport
Perl a probablement une bibliothèque semblable, mais j'ai été incapable de le trouver.
J'ai découvert ces deux de la très utile Arduino Aire de jeu:
http://playground.arduino.cc//Main/Interfacing
CJ
OriginalL'auteur CJ.