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
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()
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
 
ser.write(request)
s = ser.read(len(request))
 
# Read char by char until /r/n (
complete=false
while not complete:
   ...
   c = ser.read()
   ...