Python serial.write() 不向Arduino发送串口数据
Python serial.write() does not send serial data to Arduino
我正在编写一个 Python 脚本,它向 Arduino 发送一个字符,然后 Arduino 打印回接收到的字符。但在这种情况下,Arduino 总是给出垃圾值。执行 Python 脚本时也没有错误。
我查看了多个博客、文章和教程并按照确切的步骤进行操作,但没有找到解决方案。
这是我的 Python 脚本:
import serial
ser = serial.Serial("/dev/ttyACM0",9600)
ser.write('8')
read=ser.readline()
print(read)
这是 Arduino 代码:
int temp;
void setup() {
Serial.begin(9600);
temp=5;
}
void loop() {
temp=Serial.read();
Serial.println(temp);
delay(1000);
}
Arduino 总是打印 -1 作为响应。
您需要添加Serial.available()
。
void loop()
{
if (Serial.available() > 0)
{
temp=Serial.read();
Serial.print(" I received:");
Serial.println(temp);
}
}
关于 Serial.read()
的文档:
Returns
the first byte of incoming serial data available (or -1 if no data is available) - int
按照 Ivan Sheigets 的建议去做,或者
void setup() {
Serial.begin(9600);
Serial.print("You sent: ");
}
void loop() {
int temp=Serial.read();
if(temp>=0)
Serial.print((char)temp);
}
确保将传入值转换为 char (char)temp
。
我正在编写一个 Python 脚本,它向 Arduino 发送一个字符,然后 Arduino 打印回接收到的字符。但在这种情况下,Arduino 总是给出垃圾值。执行 Python 脚本时也没有错误。
我查看了多个博客、文章和教程并按照确切的步骤进行操作,但没有找到解决方案。
这是我的 Python 脚本:
import serial
ser = serial.Serial("/dev/ttyACM0",9600)
ser.write('8')
read=ser.readline()
print(read)
这是 Arduino 代码:
int temp;
void setup() {
Serial.begin(9600);
temp=5;
}
void loop() {
temp=Serial.read();
Serial.println(temp);
delay(1000);
}
Arduino 总是打印 -1 作为响应。
您需要添加Serial.available()
。
void loop()
{
if (Serial.available() > 0)
{
temp=Serial.read();
Serial.print(" I received:");
Serial.println(temp);
}
}
关于 Serial.read()
的文档:
Returns
the first byte of incoming serial data available (or -1 if no data is available) - int
按照 Ivan Sheigets 的建议去做,或者
void setup() {
Serial.begin(9600);
Serial.print("You sent: ");
}
void loop() {
int temp=Serial.read();
if(temp>=0)
Serial.print((char)temp);
}
确保将传入值转换为 char (char)temp
。