首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyserial readline()并等待,直到接收到值才能继续

问Pyserial readline()并等待,直到接收到值才能继续
EN

Stack Overflow用户
提问于 2021-02-16 04:32:21
回答 1查看 77关注 0票数 0

我正在使用Pyserial在python和arduino之间进行通信。我必须等到执行完arduino操作后才能继续我的python循环。我让arduino在完成它的操作后打印出"done“。我如何使用readline()来检查这一点。我目前正在尝试这样做,但是它永远不会中断循环:

代码语言:javascript
复制
arduino = serial.Serial(port='COM3', baudrate=9600, timeout=.2)

for coordinate in coordinates:
    c = str(coordinate[0]) + ", " + str(coordinate[1])
    arduino.write(bytes(c, 'utf-8'))
    while arduino.readline() != "Done":
          print(arduino.readline())
代码语言:javascript
复制
void loop() {
  while (!Serial.available()){
    MotorControl(100);
  }
  MotorControl(0);
  String coordinates = Serial.readString();
  int i = coordinates.indexOf(',');
  int x = coordinates.substring(0, i).toInt();
  int y = coordinates.substring(i+1).toInt();

//there will be some other actions here

  Serial.print("Done");

在终端中,我可以看到它打印出b‘don’,但是我不知道如何在我的python while循环中引用它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-16 04:37:04

看起来arduino.readline()返回的是bytes,但您将其与str进行比较,因此结果始终为False

代码语言:javascript
复制
>>> print("Done" == b"Done")
False

最简单的解决方案是将"Done"更改为b"Done",如下所示:

代码语言:javascript
复制
    while arduino.readline() != b"Done":
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66215015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档