Ich versuche, Strings zwischen zwei Raspberry Pis über UART zu senden. Bisher kann ein Pi eine Zeichenfolge übertragen und der zweite Pi kann nur empfangen. Ich versuche einen "Befehl" von einem Pi zum anderen zu senden, dann empfängt der zweite Pi den "Befehl" und sendet dann "Sensordaten" zurück zum ersten Pi. Dies scheint jedoch nicht zu funktionieren. Ich kann keine Daten senden und empfangen.Python UART zwischen 2 Raspberry Pis
Jede Hilfe würde sehr geschätzt werden.
The Raspberry Pi, der den Befehl sendet:
import serial
ser = serial.Serial(
port = '/dev/ttyAMA0',\
baudrate = 115200,\
bytesize = serial.EIGHTBITS,\
timeout = 0)
dat = ''
while True:
#asks user for input
command = raw_input()
#terminates command with null
ser.write(command + '\0')
#reads data per char
for c in ser.read():
#appends string
dat += c
#terminates at null char
if c == '\0':
print(dat)
dat = ''
break
ser.close()
Dieser RPi, die Befehl empfängt und sendet dann Daten Sensor:
import serial
ser = serial.Serial(
'/dev/ttyAMA0' ,\
baudrate = 115200 ,\
bytesize = serial.EIGHTBITS ,\
timeout = 0)
dat = ''
sen1 = 'sen1\x00'
sen2 = 'sen2\x00'
com1 = 'hello'
com2 = 'this thing works!'
com3 = 'error!'
while True:
#reads data per char
for c in ser.read():
#appends string
dat += c
#terminates at null char
if c == '\0':
#decides which sensor to choose
if dat == sen1:
print(com1)
ser.write(com1 + '\0')
dat = ''
break
elif dat == sen2:
print(com2)
ser.write(com2 + '\0')
dat = ''
break
else:
print(com3)
ser.write(com3 + '\0')
dat = ''
ser.close()
Vielen Dank für die Antwort. Leider hat dein Code bei mir nicht funktioniert. – Patattack760
inter_byte_timeout würde nicht kompilieren. Nach einer schnellen Google-Suche habe ich interCharTimeout gefunden, was dasselbe tun soll. Danach änderte das Programm, aber es löste mein Problem nicht. Wenn ich einen Befehl "sen1" auf dem ersten Pi einfüge, sendet das zweite Pi (der Empfänger) keine "Sensordaten" zurück zu ihm. Seltsamerweise, nachdem ich einen Befehl eingegeben habe, wird er keinen zweiten Befehl erhalten. Ich weiß das, weil ich den 2. Pi (Empfänger) frage, um alles auszudrucken, das er einen Befehl vom ersten Pi erhält. – Patattack760
@ Patattack760 Siehe meine Bearbeitung – TisteAndii