Seite 1 von 1

Testen der seriellen Schnittstellen (UART)

Verfasst: Mittwoch 7. Oktober 2015, 19:03
von Daniel7
Hallo,
der folgende Programmcode ist aus dem Internet und soll die Funktionstüchtigkeit der seriellen Schnittstelle testen. Dabei wird der GPIO-Pin 14 (TXD0) mit dem GPIO-Pin 15 (RXD0) "kurzgeschlossen". Vorab habe ich zudem die serielle Schnittstelle freigeschalten.

Code: Alles auswählen

import serial

port = serial.Serial("/dev/ttyAMA0", baudrate=115200, timeout=3.0)

while True:
    port.write("\r\nSay something:")
    rcv = port.read(10)
    port.write("\r\nYou sent:" + repr(rcv))
QUELLE: http://elinux.org/Serial_port_programming

Denoch wird folgende Fehlermeldung angezeigt

Code: Alles auswählen

Traceback (most recent call last):
  File "/home/pi/Desktop/7.py", line 6, in <module>
    port.write("\r\nSay something:")
  File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 471, in write
    n = os.write(self.fd, d)
TypeError: 'str' does not support the buffer interface
MfG
Daniel

Re: Testen der seriellen Schnittstellen (UART)

Verfasst: Mittwoch 7. Oktober 2015, 19:13
von Sirius3
@Daniel7: Du kannst nur Bytes über eine Schnittstelle übertragen, nicht Strings. Du mußt also Deinen String encodieren. Z.B. so:

Code: Alles auswählen

port.write("\r\nYou sent: {0:!r}".format(rcv).encode('utf-8'))

Re: Testen der seriellen Schnittstellen (UART)

Verfasst: Mittwoch 7. Oktober 2015, 20:14
von Daniel7
@Sirius3: Vielen Dank für die schnelle Antwort!
Habe jetzt das Programm geändert, dennoch wird eine Fehlermeldung (diesmal eine andere) ausgegeben.

Code: Alles auswählen

import serial
 
port = serial.Serial("/dev/ttyAMA0", baudrate=115200, timeout=3.0)
 
while True:
    port.write("\r\nSay something:" .format(rcv).encode('utf-8'))
    rcv = port.read(10)
    port.write("\r\nYou sent: {0:!r}".format(rcv).encode('utf-8'))
Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "/home/pi/Desktop/7.py", line 6, in <module>
    port.write("\r\nSay something:".format(rcv).encode('utf-8'))
NameError: name 'rcv' is not defined

Re: Testen der seriellen Schnittstellen (UART)

Verfasst: Mittwoch 7. Oktober 2015, 20:24
von Sirius3
@Daniel7: Programmieren lernt man nicht durch raten, Du mußt auch verstehen was Du schreibst.