python - pySerial 程序无法正确读取串行

标签 python windows serial-port arduino pyserial

我在使用 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 上的 docs。)

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

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

关于python - pySerial 程序无法正确读取串行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16683952/

相关文章:

windows - Windows 上的 Psycopg 安装

ruby-on-rails - 从 Ruby on Rails 应用程序中的串口读取挂起

c++ - QSerialPort::readLine 在 MS Windows 上无法正常工作

python - 自定义 django 用户模型不一致的迁移历史错误

python - 在python中使用多线程读取txt文件

windows - 从批处理脚本中通过 FTP 传输文件而不以纯文本形式存储密码的选项

c++ - Qt - Dll相关问题

python - 无法计算列 python 的最小值/最大值/总和

python正则表达式返回非捕获组

c - 仅当我将 Serial.println ("") 行放入循环中时,Arduino 串行端 Eloquent 会打印所有行