Python 从 arduino 读取数据错误
Python reads data wrong from arduino
我刚开始使用串口,有个问题我真的无法解决。让我解释一下我一直在使用的代码的问题。
Python代码:
from time import sleep
import serial
ser = serial.Serial('COM8', 9600)
incoming=[10,15]
while True:
ser.write((incoming))
msg=(ser.readline())
print(msg.decode('utf-8'))
sleep(3)
int incoming[3];
arduino代码:
void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
Serial.println("Ready");
}
void loop() {
if(Serial.available()) {
for (int i = 0; i < 3; i++) {
incoming[i] = Serial.read();
}
if (incoming[1]==-1){
Serial.println(incoming[0]);
Serial.println(incoming[1]);
Serial.println(incoming[2]);
Serial.println(incoming[3]);
}
}
当这个 运行s(我首先加载 arduino 代码,然后 运行 来自 python 的脚本)
代码 运行s 成功但是输出结果是这样的;
准备好
10
-1
-1
15
-1
-1
10
就这样继续下去...
为什么会出现这些 -1?我在互联网上搜索过,但根本找不到任何可能解决问题的方法。
我将不胜感激在这个问题上的任何帮助。
非常感谢。
查看 Arduino 文档。
Serial.read()
中的 -1 表示 "no data available"。
稍微长一点:
您正在等待串行接口上的可用字符。之后你尝试读取 4 个字符,但没有人知道它们是否已经可用。 (串行接口没那么快,µC 快多了)
因此,在来自 Python 脚本的下一个字符到达之前,您会读取 "no character" 两次。
我刚开始使用串口,有个问题我真的无法解决。让我解释一下我一直在使用的代码的问题。
Python代码:
from time import sleep
import serial
ser = serial.Serial('COM8', 9600)
incoming=[10,15]
while True:
ser.write((incoming))
msg=(ser.readline())
print(msg.decode('utf-8'))
sleep(3)
int incoming[3];
arduino代码:
void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
Serial.println("Ready");
}
void loop() {
if(Serial.available()) {
for (int i = 0; i < 3; i++) {
incoming[i] = Serial.read();
}
if (incoming[1]==-1){
Serial.println(incoming[0]);
Serial.println(incoming[1]);
Serial.println(incoming[2]);
Serial.println(incoming[3]);
}
}
当这个 运行s(我首先加载 arduino 代码,然后 运行 来自 python 的脚本) 代码 运行s 成功但是输出结果是这样的; 准备好 10 -1 -1 15 -1 -1 10
就这样继续下去... 为什么会出现这些 -1?我在互联网上搜索过,但根本找不到任何可能解决问题的方法。 我将不胜感激在这个问题上的任何帮助。 非常感谢。
查看 Arduino 文档。
Serial.read()
中的 -1 表示 "no data available"。
稍微长一点:
您正在等待串行接口上的可用字符。之后你尝试读取 4 个字符,但没有人知道它们是否已经可用。 (串行接口没那么快,µC 快多了) 因此,在来自 Python 脚本的下一个字符到达之前,您会读取 "no character" 两次。