Hallo Forum,
ich habe da einen merkwürdigen Fehler mit PySerial. Wenn ich den Port
konfiguriere und dann öffne und 3 Zeichen sende, kommen beim ersten Mal
nur 2 Zeichen an. Das erste Zeichen wurde verloren.
Wenn ich den Port dann schließe und ein 2. mal öffne und 3 Zeichen
sende, kommen 3 Zeichen an.
Wenn ich den Port dann schließe und ein 3. mal öffne und 3 Zeichen
sende, kommen wieder nur 2 Zeichen (ohne das erste) an.
So geht es immer im Wechsel.
Wenn ich allerdings eine gerade Anzahl Zeichen sende, geht niemals ein
Zeichen verloren.
Auf dem Oszilloskop ist zu sehen, dass immer alle Zeichen korrekt
gesendet werden.
Ich hatte schon "timeout" und "write_timeout" von None auf 0 umgestellt,
das hat aber keine Wirkung.
OS: LinuxMint 21.2
Port: USB-TTL-Seriellwandler
Python: 3.8
PySerial: 3.5
Minimalbeispiel:
1 | ser = serial.Serial()
|
2 | ser.port = '/dev/ttyUSB0'
|
3 | ser.baudrate = 9600
|
4 | ser.parity = serial.PARITY_NONE
|
5 | ser.bytesize = serial.EIGHTBITS
|
6 | ser.timeout = 0
|
7 | ser.write_timeout = 0
|
8 |
|
9 | result = ser.open()
|
10 | print(result)
|
11 | time.sleep(0.1)
|
12 |
|
13 | if result is None:
|
14 | for i in range(1):
|
15 | string = bytes('Hal', 'ascii')
|
16 | print(string)
|
17 | ser.write(string)
|
18 | # Selbes Verhalten mit:
|
19 | # ser.write("Hal".encode("utf-8"))
|
20 |
|
21 | time.sleep(0.2)
|
22 |
|
23 | print(f'SerOut: {ser.out_waiting}, SerIn : {ser.in_waiting}')
|
24 | print(f'Lesen: {ser.read(10)}')
|
25 |
|
26 | time.sleep(0.2)
|
27 | else:
|
28 | print('Fehler beim Öffnen')
|
29 |
|
30 | ser.close()
|
Kann mir da jemand helfen? Danke im Voraus.