Hallo,
ich habe folgendes vor:
Ich will von einem Raspberry Pi über die RS232 Daten an eine
Steuerzentrale senden. Die Zentrale erwartet ein Byte mit der Adresse
und ein zweites Byte mit den 8-Bit-Daten.
Konfiguration des Pi:
Python 3.4.2
Pyserial 3.2.1
Raspbian
Hier mein Code:
1 | import serial
|
2 |
|
3 | adresse=0b10000001
|
4 | daten=0b10101010
|
5 |
|
6 | ser=serial.Serial('/dev/ttyUSB0', 19200)
|
7 |
|
8 | ser.write(adresse)
|
9 | ser.write(daten)
|
10 | ser.close
|
11 |
|
12 | print('fertig')
|
Mit diesem Code bekomme ich folgende Fehlermeldung:
1 | Traceback (most recent call last):
|
2 | File "serialtest.py", line 8, in <module>
|
3 | ser.write(adresse)
|
4 | File "/usr/local/lib/python3.4/dist-packages/pyserial-3.2.1-py3.4.egg/serial/serialposix.py", line 558, in write
|
5 | TypeError: object of type 'int' has no len()
|
Zum Testen habe ich einen String gesendet.
Hier läuft das Programm ohne Fehler durch. Ob die Daten auch korrekt
ankommen, kann ich aber nicht sagen. Die Steuerzentrale wertet nur die
Bytedaten aus. Mit dem Text kann die natürlich nichts anfangen und schon
gar nicht anzeigen. Für ein Terminalprogramm am PC fehlt mir momentan
eine RS232 oder ein weiterer USB-RS232-Adapter.
An dem Raspberry ist ein RS232-USB-Wandler angeschlossen. Dieser sollte
korrekt funktionieren und die Rechte entsprechend vergeben sein. Mit
einer "fertigen" Software läuft die Kommunikation ohne Probleme.
In der Doku zu Pyserial steht, daß nur Byte-Werte gesendet werden
können.Wie kann ich den int-Wert in ein Byte umwandeln?
Für Hilfe wäre ich dankbar.
Gruß Rüdiger