我正在尝试在Python代码和Arduino代码之间来回传递信息。我希望定期(例如每分钟)向Arduino代码发送两个设定值,然后在Arduino上读取这些值并更新变量,最后周期性地(例如每30秒)将状态信息从Arduino发送回Python。最终,Python将从MySQL数据库中发送和提取信息(稍后开发)。
目前,我无法可靠地使信息来回反弹。在搜索中我没有找到任何接近的东西,而且我尝试修改的所有内容都不起作用。我最接近的是以下内容(它实际上不能在发送和接收之间切换):
Python
目前,我无法可靠地使信息来回反弹。在搜索中我没有找到任何接近的东西,而且我尝试修改的所有内容都不起作用。我最接近的是以下内容(它实际上不能在发送和接收之间切换):
Python
#!/usr/bin/python
import serial
import syslog
import time
#The following line is for serial over GPIO
port = '/dev/ttyS0'
ard = serial.Serial(port,9600,timeout=5)
i = 0
while (i < 4):
# Serial write section
setTempCar1 = 63
setTempCar2 = 37
ard.flush()
setTemp1 = str(setTempCar1)
setTemp2 = str(setTempCar2)
print ("Python value sent: ")
print (setTemp1)
ard.write(setTemp1)
time.sleep(4)
# Serial read section
msg = ard.readline()
print ("Message from arduino: ")
print (msg)
i = i + 1
else:
print "Exiting"
exit()
Arduino:
// Serial test script
int setPoint = 55;
String readString;
void setup()
{
Serial.begin(9600); // initialize serial communications at 9600 bps
}
void loop()
{
while(!Serial.available()) {}
// serial read section
while (Serial.available())
{
if (Serial.available() >0)
{
char c = Serial.read(); //gets one byte from serial buffer
readString += c; //makes the string readString
}
}
if (readString.length() >0)
{
Serial.print("Arduino received: ");
Serial.println(readString); //see what was received
}
delay(500);
// serial write section
char ard_sends = '1';
Serial.print("Arduino sends: ");
Serial.println(ard_sends);
Serial.print("\n");
Serial.flush();
}
我最终得到的只是重复的相同值(不是实际发送的内容,不确定是字符串还是字节问题),并且没有返回给Python脚本。非常感谢任何帮助或想法。谢谢。
编辑:按照下面的建议修改了代码。Arduino正常接收,并通过minicom验证了串行通信。但Python脚本仍然在“来自Arduino的消息:”后打印一个空行。