Bonjour

J'ai fait un programme qui lit l'entrée série RS232
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from twisted.internet import reactor
from twisted.internet.protocol import Factory, Protocol
from twisted.internet.serialport import SerialPort
 
COM_PORT='COM5'
BAUD_RATE=9600
 
DEBUG=True
class USBClient(Protocol):
    def __init__(self, network):
        self.network = network
    def dataReceived(self, data):
        print "Data received", repr(data)
        #check & perhaps modify response and return to client
        self.network.notifyAll(data)
    #...    
 
class CommandRx(Protocol):
    def connectionMade(self):
        self.factory.client_list.append(self)
    def connectionLost(self, reason):
        if self in self.factory.client_list:
            self.factory.client_list.remove(self)
 
class CommandRxFactory(Factory):
    protocol = CommandRx
    def __init__(self):
        self.client_list = []
 
    def notifyAll(self, data):
        for cli in self.client_list:
            cli.transport.write(data)
 
tcpfactory = CommandRxFactory()
reactor.listenTCP(8001, tcpfactory)
SerialPort(USBClient(tcpfactory), COM_PORT, reactor, baudrate=BAUD_RATE)
reactor.run()
Je connecte un lecteur RFID Innovative ID12 par USB qui envoie le code du badge à chaque fois qu'il est passé devant l'antenne

Sous Windows 7 la connexion de l'USB m'indique le port COM attribué et le code fonctionne correctement. La sortie m'indique le code de début, \x02 le code du badge en 12 octet suivi de \r\n et du caractère \x03 de fin
Code : Sélectionner tout - Visualiser dans une fenêtre à part
\x0251008FCFFDEC\r\n\x03
Sous Raspberry Pi et Rasbian, le port USB ou la RS232 est ttyUSB0 mais les trames reçues ne correspondent pas au codage du badge. On reçois 45 fois le caractère \x00
La commande sous le shell
Code : Sélectionner tout - Visualiser dans une fenêtre à part
pi@raspberrypi ~ $ cat >/dev/ttyUSB0
ne me retourne aucun caractere
La configuration du port est
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
pi@raspberrypi ~ $ stty -a < /dev/ttyUSB0
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
Est ce que le problème vient de l'encodage sous Linux, vitesse de transmission, paramétrage de la RS232

Merci de vos idées