PySerial + Arduino MEGA 1 秒延迟/响应时间

问题描述 投票:0回答:2

我们遇到 PySerial 和 Arduino 之间的通信延迟问题。我们使用 Arduino 设置一些开关,并等待 Arduino 返回的 ACK,然后再继续。由于某种原因,使用 PySerial 而不是 Arduino 的串行监视器时会出现完美的 1 秒延迟。使用串行监视器,只有预期的几毫秒延迟。

在 MacOS、Python 3.8、Arduino 1.8.13 上运行

我做了一个简单的测试代码来显示问题:

Python

import serial
import datetime 

s = serial.Serial(port='/dev/cu.usbmodem1412301', baudrate=115200, timeout=2)

while 1:
    a = datetime.datetime.now()
    s.write(str.encode("marco"))
    data = s.readline()
    b = datetime.datetime.now()
    print(data)
    c = b-a
    print(c)

Python 输出

b'polo\r\n'
0:00:01.003257

b'polo\r\n'
0:00:01.003490

Arduino

void setup() 
{
  // Start Serial
  Serial.begin(115200);
  while (!Serial);
}

void loop()
{
  if(Serial.available())
  {
    String cmd = Serial.readStringUntil('\n');    

    if (cmd.equals("marco"))
    {
      Serial.println("polo");
    }
  }
}

知道这里可能存在什么潜在问题吗?

python arduino pyserial
2个回答
1
投票

@Jasonharper 是对的。 Str.encode 不添加任何 ' ’我是这么认为的。添加一个 ' ' 从 Python 发送的字符串解决了所有问题。


0
投票

添加' ' 到对我有用的字符串。

© www.soinside.com 2019 - 2024. All rights reserved.