Script Shell pour écrire et lire des données à partir de la communication série
Je suis un simple script shell pour écrire et lire des données à un périphérique série.
Je suis à l'aide de ces commandes dans le terminal et ils répondent correctement:
Écrire que je suis en utilisant:
echo -en '\xAA\x04\xC2' > /dev/ttyUSB0
De lire, je suis à l'aide de lire:
cat -v < /dev/ttyUSB0
mais quand j'ai compris cela dans un script shell, il n'est pas de répondre. J'ai besoin d'aide à ce sujet.
Aussi je veux savoir que quand j'envoie la commande d'écriture, Il devrait me donner de sortie au format hex, mais il me donne de la sortie dans ce format M--*^NM^H
Également besoin d'aide dans cette.
Vous devez vous connecter pour publier un commentaire.
Je m'attends à ce que votre
cat
déclaration bloque en attente pour la fin-de-fichier. Il peut traiter votre entrée à l'ats comme un standard terminal, auquel cas il faudra une fin-de-fichier de caractère pour terminer la saisie (e.g, de Contrôle-D) et il pourrait s'appliquer à un autre traitement pour l'entrée et la sortie. Vous feriez mieux de vous familiariser avec lesstty
de commande et ses options (voir stty page de man). Essayez de fairestty -F /dev/ttyUSB0
pour voir quelles options sont définies.La façon la plus simple de la lecture de la contribution peut être de lire un seul caractère à la fois. Vous pouvez essayer avec le script suivant. Cela permettra de lire un seul caractère à la fois à partir de l'entrée jusqu'à ce qu'un " q " est entré.
Si -F n'a pas de travail, de rediriger stdin à l'appareil.
Pour votre problème, je pense que c'est un travail, mais vous voyez les caractères affichés en tant que personnages et non les codes hexadécimaux. Pour voir les codes hex (pour les essais de vérification seulement - je ne pense pas que vous voulez envoyer les codes hex pour le terminal), essayez:
Vous pouvez aussi avoir le mode raw jeu lors de la sortie pour éviter le conducteur de changer les caractères de sortie.
od
et voir ce qu'il dit.bash
vous pouvez ajouter à un tableaua
à l'aide dea+=$c
- voir ce lien: link