我正在制作一个系统,其中有一个树莓派将通过UDP发送字符串到具有Wifi的Arduino。 然后,Arduino将向Pi发送一些数据。这部分工作得非常出色。然后,Pi将通过串行中继相同的数据到没有Wifi的Arduino Mega上。 这是我的问题。 我能够通过UDP接收所有数据,但当我尝试接收数据并将其发送到串行端口时,它会出现故障,什么也不起作用,并且只接收空值。 我之所以知道这一点,是因为在Arduino Mega 上,我设置了一个系统,它只需要接收到的数据并在上面签署“ACK”字母,以便我知道已成功接收。但我只得到null值。 但是,当我仅通过串行端口发送字符串“HI”并禁用UDP功能时,它就神奇地运行...有时候。可能出了什么问题?
树莓派代码
树莓派代码
#!/usr/bin/env python3
import serial
import time
import socket
serialData = 'null \n'
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
message = b'pi'
addr = ("192.168.71.146", 2390)
def wifirecv():
global serialData
s.sendto(message, addr)
data, address = s.recvfrom(10240)
#print(data.decode())
angle = data.decode()
serialData = angle + ' \n'
while(True):
ser = serial.Serial('/dev/ttyACM0', 115200, timeout=1)
ser.flush()
ser.close()
ser.open()
while True:
try:
wifirecv()
print(serialData)
ser.write(serialData.encode('utf-8'))
#ser.write(b'hi')
line = ser.readline().decode('utf-8').rstrip()
print(line)
except(KeyboardInterrupt):
ser.close()
print("Serial Closed")
exit()
在Mega上编码
void setup() {
Serial.begin(115200);
}
void loop() {
while(Serial.available() != 0){
String data = Serial.readStringUntil('\n');
Serial.println(data + ": ACK");
}
}