Sous Linux, je souhaite envoyer une chaîne de commande (des données, par exemple) vers un port série (contenant des caractères de contrôle) et écouter la réponse (qui peut également contenir des caractères de contrôle).
Comment puis-je le faire le plus simplement possible sur Linux? Un exemple est apprécié!
serial-port
Alex
la source
la source
Réponses:
Tous les périphériques sous Unix sont mappés sur un fichier de périphérique, les ports série seraient
/dev/ttyS0
/dev/ttyS1
....D'abord, jetez un coup d'œil aux autorisations sur ce fichier, supposons que vous utilisez
/dev/ttyS1
.ls -l /dev/ttyS1
Vous voudrez avoir un accès en lecture / écriture. S'il s'agit d'un système partagé, vous devez tenir compte des conséquences de son ouverture pour tout le monde en termes de sécurité.
Une méthode brute très simple pour écrire dans le fichier utiliserait la
echo
commande simple .et lire
Vous pouvez avoir un chat qui court dans un terminal et un deuxième.
Si tout est du charabia, le débit en bauds peut être nécessaire avant de commencer l’envoi.
stty
Fera cela. !! REMARQUE: stty utilisera stdin comme descripteur de fichier par défaut à affecter.Commandes équivalentes.
Cela pourrait vous suffire pour écrire un script et vous connecter? Pas sûr de ce que vous essayez d'atteindre.
Pour une approche plus interactive, souvenez-vous que votre approche des paramètres par défaut serait de l’utiliser,
minicom
c’est juste un programme qui fait tout ce que j’ai déjà mentionné. (semblable à hyperterminal dans Windows, vous pourriez être familier).Une solution intermédiaire utiliserait un programme de terminal comme celui
screen
qui fonctionnera sur un périphérique série.man screen
man minicom
man stty
pour plus d'informationsla source
# stty -speed 38400 -f /dev/ttyUSB1
renvoiestty: invalid argument '-speed'
Tout ce que vous avez à faire est d'ouvrir deux terminaux. Dans le premier terminal,
cat
tout ce qui est à partir de l'appareil, par exempledans l'autre terminal, vous pouvez envoyer des caractères hexadécimaux arbitraires et du texte au terminal, par exemple comme suit:
La
echo -e
commande permet l'interprétation des échappements de barre oblique inverse.Il faut bien sûr s’assurer que (i) les paramètres série (vitesse, longueur du mot, contrôle du flux, etc.) sont corrects et (ii) que le périphérique série (à l’autre extrémité) ne bloque pas.
la source
Programmes qui parlent aux périphériques série:
ou de shell vous pouvez faire:
la source
exec 99<&-
ouexec 99>&-
devrait être utilisé. Ou peut-être les deux?Cela pourrait être une meilleure approche:
la source
Vous pouvez lire et écrire simultanément sur un périphérique de la manière suivante:
Votre message est envoyé à la seconde personne
cat
destdin
, et la premièrecat
relaie la réponsestdout
, transformant votre terminal en salle de discussion.Pour finir,
ctrl-c
, puis exécutezfg
ensuite àctrl-c
nouveau.la source