logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 08-08-2011 13:11:01

zoroastre74
Membre
Distrib. : Debian Wheezy
Noyau : Linux 3.2
(G)UI : Awesome wm v3.4.13 (Octopus)
Inscription : 28-08-2010

[RESOLU] Configuration du port serie usb

Yep!

Je m'explique. Je pilote un microcontroleur par le port usb, en liaison série donc, et je me retrouve devant la difficulté où à chaque connection à celui-ci, il est redemarré, ce que naturellement je ne désire pas.
J'aimerais qu'à chaque requette auprés de mon microcontroleur, ce dernier continue normalement son travail, ce pour quoi il fût programmé, sans interruption.

Mon programme client est écrit en python et utilise la bibliothèque python-serial. La documentation de la librairie est succinte en définitive et les options qui seraient susceptible de m'interesser ne m'apportent pas beaucoup d'aide.

J'arrive donc à modifier les paramètres du port serie grâce à stty :

Je liste tout d'abord la configuration de base.

~/arduino/program 7/python/client serial$ stty --file=/dev/ttyUSB0 -a
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 0; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke


Les options qui m'interessent sont : hupcl et crtscts, toutes deux désactivés ici (le "-" devant l'option)
J'arrive à obtenir la configuration exigée en effectuant cette commande :

stty --file=/dev/ttyUSB0 crtscts -hupcl


Pour résumé, l'activation du crtscts permet l'écriture des paramètres de contrôle des données, et on désactive le hupcl afin de ne plus envoyer le bit d'initialisation du péripherique.

La bibliothèque python-serial permet de modifier un certain nombre d'option et d'écrire ainsi :

self.serialPort = serial.Serial(device, 9600, rtscts = 1)
self.serialPort.setDTR(0)
self.serialPort.setRTS(0)


(Le DTR est l'équivalent windows du hupcl.)

L'option crtscts s'active correctement lorsqu'elle est à la suite des options d'ouverture du port serie. En dehors, rien ne semble fonctionner comme il faut, le setDTR par exemple.

Le peu de ressource sur cette question m'interpelle et m'oblige à appeler vos compétences messieurs. D'ailleurs, à chaque redemarrage de mon pc, le port serie reprend sa configuration d'origine.

Alors, à tout hasard, est-ce que quelqu'un saurait comment désactiver le hupcl de manière software, script de configuration, programmation ???

Merci d'avance.

@+

Zoroastre.

PS : L'astuce la plus logique semble de créer un script shell détectant le port serie utilisé et de modifier les paramètres du port.

Dernière modification par zoroastre74 (10-08-2011 13:40:46)

Hors ligne

#2 10-08-2011 13:40:16

zoroastre74
Membre
Distrib. : Debian Wheezy
Noyau : Linux 3.2
(G)UI : Awesome wm v3.4.13 (Octopus)
Inscription : 28-08-2010

Re : [RESOLU] Configuration du port serie usb

Yep!

Je resouds mon problème simplement en executant une commande python :

status,output = commands.getstatusoutput("stty --file=%s crtscts -hupcl" %device)


Malgré la lecture de nombreuses documentattions, je n'ai pas trouvé le bon moyen de parametrer unilateralement le port série.

@+

Zoroastre.

Hors ligne

Pied de page des forums