7
votes

Comment envoyer une séquence de commandes à un port série de Bash?

sous Linux, je dois envoyer une séquence de commandes à un port série par ex. / dev / ttys0 , qui doit attendre une réponse OK avant que la commande suivante soit envoyée. Je pouvais imaginer faire quelque chose comme xxx

mais cela n'évalue pas la réponse de l'appareil sur ce port.

Y a-t-il un très de manière simple à automatiser dans un script Bash, probablement à l'aide de Socat et / ou microcom mais aucun outil non trouvé sur le système Linux le plus simple .


2 commentaires

À quel point? La plupart des outils peuvent avoir n'importe quel nombre d'outils installés très facilement.


Je ne peux vraiment pas dire avec certitude. Nommez-moi un outil et je peux vous dire si je suis capable d'utiliser cela.


5 Réponses :


0
votes

Vous avez une erreur: xxx

signifie affichage au fichier qui n'existe pas, je suppose.

Au lieu de cela, essayez de faire: xxx

qui utilise ici-doc


1 commentaires

UPS, je voulais dire écho bien sûr. De plus, votre réponse ne répond pas à mon problème. Comment puis-je automatiser afin que toutes les commandes sont envoyées automatiquement.



12
votes

Si vous installez le package PPP, vous pouvez utiliser le programme chat code> fourni avec elle. Ou vous pouvez utiliser kermit code>. Ou le programme Cu code> fourni avec UUCP. Mais pour le faire avec une coquille pure est plus délicate. Vous pourrez peut-être utiliser les fonctions Lecture et Printf, avec Stdio redirigé vers le port.

Quelques extraits: p>

stty -F /dev/ttyS0 38400 raw
chat -f script.txt < /dev/ttyS0 > /dev/ttyS0


3 commentaires

Ok, ça a du sens. Mais j'ai essayé de faire sudo bash -c "chat -v -f chat.txt / dev / ttys0" avec l'action verbeuse et le fichier constitué de '' Sur OK à OK , mais n'a aucune sortie du tout. Est-ce que ça marche ou non? Est-ce que j'ai supervué quelque chose?


Vous ne verrez rien normalement, mais il vous apparaît, vous pouvez utiliser les options -Sv pour le voir connectées à starr. Le -v en elle-même se connecte à Syslog. BTW, vous pouvez également utiliser l'outil attendre .


Je fais la même chose, mais sur mobile Android. cette réponse peut-elle m'aider? Si oui, quel est le paquet PPP et qui puis-je l'installer?



3
votes

Voici un très un moyen simple de automatiser dans un script Bash: xxx

en utilisant le ATINOUT programme écrit spécifiquement avec cette fonctionnalité comme objectif unique. La sortie ci-dessus assume ate1 ; Sans écho, la réponse du modem sera "\ r \ n \ r \ nok \ r \ n \ r \ nok \ r \ n" .

dans l'exemple ci-dessus , ATINOUT enverra la première commande à (terminer correctement la ligne de commande avec \ r ), attendez jusqu'à ce qu'il reçoive un code de résultat final (par exemple, OK ) Et continuez d'abord, continuez à traiter la commande suivante.

Vous pouvez donner une entrée à partir d'un fichier en spécifiant qu'au lieu du premier - , et si vous souhaitez capturer le donneur de sortie. un nom de fichier au lieu du dernier - . Vous pouvez utiliser ici DOC au lieu de commandes d'écho groupées si vous le souhaitez.


0 commentaires

1
votes

Pour afficher les messages de: xxx pré>

ou toute autre commande de modem type qui code> pour trouver le numéro de terminal puis exécutez: p>

cat /dev/ttyACM0 >& /dev/pts/8 &


1 commentaires

Vous pouvez utiliser / dev / tty pour votre TTY actuel et évitez le détour de vérifier le bon de qui .



0
votes
  1. aller au terminal
  2. Entrez "sudo minicom -s"
  3. Allez à "Configuration du port série" et définissez les paramètres du port série
  4. Entrez "Changer avec le réglage?"
  5. Entrez "Enregistrer la configuration en DFL". Par dfl, cela signifie par défaut
  6. Entrez "Quitter"
  7. Écrivez une commande à la commande sur le nouveau terminal Minicom ouvert.

0 commentaires