繁体   English   中英

pySerial程序无法正确读取串行

[英]pySerial program doesn't read serial correctly

我使用pySerial有问题,我不知道从哪里开始寻找。 我有一个64位Windows 7操作系统,Python 2.7.5(32位),pySerial和Arduino(Arduino正常工作)已经安装。

我的Arduino代码如下:

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the serial in 19200 baud rate
  Serial.begin(19200);     
}

// the loop routine runs over and over again forever:
void loop() {
  delay(1000);               // wait for a second
  Serial.print("hello");
}

(Arduino在COM8中连接,使用串行监视器时我可以看到它敬礼)

我的PySerial代码如下所示:

import serial
import time

arduino = serial.Serial("COM8", 19200)
time.sleep(2)  

while True:
    print arduino.readline()

当我启动这个脚本时,程序运行,但我看不到串行输出(我认为Python脚本中的配置是正常的,因为如果有什么东西 - 例如端口 - 是错误的,它会崩溃)。

我不知道如何找到解决方案。 你能帮助我吗?

您可以尝试在Arduino / C端使用println而不是print ,和/或为Python端的串行读取设置超时。

由于serial.readline()等待\\n ,并且您从不使用print发送,因此串行读取将等待超时。 (但它比这更复杂,值得阅读readline和EOL上的文档 。)

如果这不起作用,至少将readline切换为只read并打印出您可能(或可能不)读取的每个字符,但不要因为等待readline所需的\\n而使其变得更复杂。

从演示文档
使用readline()时要小心。 在打开串口时指定超时,否则如果没有收到换行符,它可能永远阻塞。 另请注意,readlines()仅适用于超时。 readlines()取决于具有超时并将其解释为EOF(文件结束)。 如果端口未正确打开,则会引发异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM