Rediriger un socket vers le port série

Toujours plus loin dans le MR-3020 et l’Arduino Nano connecté dessus !

Aujourd’hui j’ai pu mettre en œuvre mon afficheur à matrices de leds et le rendre accessible depuis mon réseau local. Je vous laisse regardé l’article précédent qui indiquait la prise en charge de l’Arduino Nano via sa connexion USB sur le MR-3020.

Socat

Installons ce fameux outils :

# opkg update && opkg install socat

Je vous laisse regarder la généreuse documentation du produit sur sa man page.

Et je vous propose une implémentation directe dans le /etc/rc.local, je sais c’est moche, mais comme ce fichier est exécuté en dernier au lancement de mon OpenWrt, c’est l’endroit idéal.

{
# init serial
        stty -F /dev/ttyUSB0 -hupcl

# wait for connection
        while : ;
        do
                socat TCP-LISTEN:8080 /dev/ttyUSB0,raw,echo=0,nonblock;
                sleep 1;
        done;
} &

C’est direct et violent, une boucle infinie qui est lancée en tache de fond avec le socat qui écoute sur le port 8080 du locahost. Comme à chaque fermeture de connexion socat s’arrête, il faut bien boucler pour lui demander de se mettre en attente d’une nouvelle connexion.

Évidemment, on aurait pu faire ça avec Python et un petit serveur d’application Web, mais là ça tient dans la flash interne et avec la distribution de base. En comme la distribution de base emporte uHTTPd, ça ouvre la porte à un autre article…

Une réflexion sur « Rediriger un socket vers le port série »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *