Bonjour,
Je suis face à un problème et je ne trouve plus de piste pour le résoudre
Je possède deux ordinateurs embarqués (identiques) à base d'un processeur ARM et d'une distrib Debian, je dois faire communiquer ces machines via un port série de type RS485 (la puce est câblée directement aux sorties processeur et pilotable via le ttyS2).
J'utilise la librairie pySerial afin d'ouvrir le port, d'écrire et lire dessus.
Ce que j'écris passe bien par les câbles et arrive de l'autre côté (visualisation via oscilloscope...), cependant lorsque j'accède au buffer, aucun caractère n'est disponible. Ce n'est que lorsque j'écris sur le port que j'ai accès aux données précédentes...
Lorsque j'écris plus de 500 Bytes, un certain nombre apparaît (pas tous !) dans le buffer et y sont lisibles.
J'espère que quelqu'un pourra aura une idée !
Voici une partie du code source pour aider à la compréhension :
Partie commune
Peer 1 (écrit une requête et doit lire la réponse)
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 import serial,fcntl, struct ser = serial.Serial( port='/dev/ttyS2', baudrate=115200, timeout=10, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, rtscts=True ) # Use system driver fd=ser.fileno() serial_rs485 = struct.pack('hhhhhhhh', 1, 0, 0, 0, 0, 0, 0, 0) fcntl.ioctl(fd,0x542F,serial_rs485) ser.flushInput() ser.flushOutput()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ser.write(request) s = ser.read(len(request)) # Read char by char until /r/n ( complete=false while not complete: ... c = ser.read() ...
Partager