我试图在Windows上使用pyserial从arduino读取数据。
import serial
device = 'COM3'
baud = 9600
with serial.Serial(device,baud, timeout = 0) as serialPort:
while True:
line = serialPort.readline()
line = line.decode("utf-8")
if line:
print(line)
void setup() {
Serial.begin(9600);
}
void loop() {
int x = 12;
int y = 34;
int z = 56;
Serial.print(x);
Serial.print(',');
Serial.print(y);
Serial.print(',');
Serial.println(z);
}
arduino串行监视器输出的正是我所期望的。
12,34,56
12,34,56
12,34,56
另一方面,python脚本正在输出:
1
2,34
,56
12,
34,5
6
1
2,34
,56
12,
34,5
6
我试图延迟Arduino的输出,我试图在arduino代码中创建一个缓冲区,并且仅在缓冲区已满时才输出数据,以为python可能有时间正确读取它。
我在该站点上看到很多人,其他人也编写了类似的代码,并建议它可以正常工作,但是我无法从python获取一致的数据。有人知道我的问题吗?
答案 0 :(得分:1)
尝试这样做
Python
import serial
device = 'COM3'
baud = 9600
with serial.Serial(device, baud) as port:
while True:
print(port.readline().decode("utf-8"))
Arduino
void setup() {
Serial.begin(9600);
}
void loop() {
int x = 12;
int y = 34;
int z = 56;
Serial.println(x + ',' + y + ',' + z);
}