lecture de série à partir de la ligne de commande linux

51

Je souhaite tester un périphérique à port série à l’aide de la ligne de commande linux.

Je peux utiliser stty et echo pour envoyer des commandes au port série, mais lorsque le périphérique répond, je n'ai aucun moyen de lire ce qui sort du port série. j'utilise

stty -F /dev/ttyS0 speed 9600 cs8 -cstopb -parenb && echo -n ^R^B > /dev/ttyS0

envoyer une commande à l'appareil. L'appareil fonctionne et envoie une réponse en 300 ms. Comment imprimer cette réponse sur la console en ligne de commande?

erin c
la source

Réponses:

56

Identique à la sortie. Exemple:

cat /dev/ttyS0

Ou:

cat < /dev/ttyS0

Le premier exemple est une application qui ouvre le port série et relaie ce qu'elle lit à sa stdout(votre console). La seconde est le shell qui dirige le trafic du port série vers n'importe quelle application de votre choix. cette application particulière relance alors juste stdinà sa stdout.

Pour obtenir une meilleure visibilité du trafic, vous préférerez peut-être un vidage hexadécimal:

od -x < /dev/ttyS0
Jirka Hanika
la source
ousocat stdio /dev/ttyS0
pstanton
J'ai envoyé une commande à un périphérique avec lequel je travaille. La commande est la suivante: echo "1GAINS" | sudo tee / dev / ttyUSB0 ... et en réponse, je reçois un flux infini qui répète le même message. Des idées? L'appareil lui-même devrait faire écho à la commande que j'ai envoyée une fois, mais ici, c'est comme si je recevais des commentaires étranges.
user391339
J'ai vérifié que le retour n'est pas "réel" à l'aide d'un analyseur en série. L'appareil renvoie seulement la commande une fois, mais en utilisant les commandes ci-dessus, je reçois une répétition folle sans fin sur la sortie du terminal.
user391339
Cela fonctionne-t-il avec des données binaires?
Ransh
@ransh - Voir la partie hexagonale de la réponse. En fin de compte, vous aurez besoin d’un humain ou d’un outil qui comprend ou qui peut procéder au reverse engineering de ces données binaires.
Jirka Hanika