从Arduino读取数据时Python readline()出现问题

时间:2020-06-06 16:39:19

标签: python arduino window

我试图在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获取一致的数据。有人知道我的问题吗?

1 个答案:

答案 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);  
}