mercredi 9 juillet 2014

Émuler un port de communication RS232 sur Linux et le lier à TCP/IP



Article intéressant pour comprendre les ports série sous linux : http://pficheux.free.fr/articles/lmf/serial/



1 - Solution à essayer avec Socat :
socat -d -d PTY,ignoreeof,echo=0,raw,link=f1 PTY,ignoreeof,echo=0,raw,link=f2 &

options :
-d -d : affiche les messages fatal, erreur, warning et notice
PTY : ouvre un pseudo terminal (pty)
ignoreeof : ne ferme pas le 'tunnel' si eof est rencontré
echo=0 : ???
raw : à priori, passe les infos input/output sans traitement (pas de mode canonique => pas d'attente de line feed [LF] pour envoyer/recevoir les caractères)
link=f1 : nomme le lien f1

La solution 1 fonctionne en faisant :
- la commande
- puis deux terminaux
- dans l'un : cat f2
- dans l'autre cat «<fichier> > f1


Utilisation de minicom

Une fois installé, minicom est simple d'utilisation. Il faut le lancer avec -s afin d'obtenir un écran de configuration qui permette de configurer le port série à utiliser et beaucoup d'autres options.

En démarrant minicom dans deux terminaux indépendant et sur les /dev/pts/12 et 14 (selon liens proposés sous f1 et f2), nous pouvons communiquer en liaison série entre les deux minicom.

Essai de lier une interface TCP/IP à un port série

socat -d -d PTY,ignoreeof,echo=0,raw,link=f1 TCP-LISTEN:22021,ignoreeof

Cela fonctionne ensuite en utilisant minicom d'un côté :
minicom -p /dev/pts/12

et netcat de l'autre :
netcat 127.0.0.1 22021

Essai de lier une interface TCP/IP à un device système (/dev/urandom)

socat -d -d /dev/urandom TCP-LISTEN:22021,ignoreeof

et netcat de l'autre :
netcat 127.0.0.1 22021

Essai pour lier une RS (ex /dev/ttyS0) existante à un port TCP/IP:

socat -d -d /dev/ttyS0 TCP-LISTEN:22021,ignoreeof

attention: il faut au préalable configurer la liaison série par exemple avec stty

Des exemples intéressants :
A cette adresse des exemples intéressants d'usage de socat :

Aucun commentaire:

Enregistrer un commentaire