私はUART経由で2つのラズベリーピスの間に文字列を送信しようとしています。これまでのところ、1つのPiは文字列を送信することができ、2つ目のPiは受信することしかできません。 1つのPiから別のPiに「コマンド」を送信しようとすると、2つ目のPiは「コマンド」を受信し、最初のPiに「センサーデータ」を返します。しかし、これは動作していないようです。私はデータを送受信することができません。Python UART between 2 Raspberry Pis
ご協力いただければ幸いです。
コマンドを送信しているラズベリーパイ:
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()
コマンドを受信し、センサデータを送信し、このRPI:
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()
ありがとうございます。残念ながら、あなたのコードは私のためには機能しませんでした。 – Patattack760
inter_byte_timeoutはコンパイルされません。簡単なGoogle検索の後、同じことをすると思われるinterCharTimeoutが見つかりました。その変更の後、プログラムはコンパイルされましたが、私の問題は解決しませんでした。最初のPiに「sen1」というコマンドを入力すると、2番目のPi(受信者)は「センサーデータ」を送信しません。不思議なことに、1つのコマンドを入力すると、2番目のコマンドは受信されません。私はこれを知っています。私は2番目のPi(受信者)に、最初のPiからのコマンドを受け取るすべてのものを印刷するように依頼するからです。 – Patattack760
@ Patattack760自分の編集を参照 – TisteAndii