在后台进程中捕获串行数据

use*_*388 2 python subprocess serial-port pyserial

我目前正在尝试在python脚本中捕获串行数据.我打算开始捕获串行端口上捕获的所有数据的日志,同时脚本的其余部分继续与我正在测试的系统交互.

如果我使用pyserial,我相信它最终将阻止我想要执行的其余测试,直到我完成日志记录.

我考虑过的选择是:

  • 编写另一个脚本以使用pyserial捕获日志,使用subprocess.Popen()调用此脚本
  • 使用内置的unix工具,如tail或cat,并使用subprocess.Popen()调用它们

我相信我可以找到一种方法让其中任何一种工作,但如果有人知道更直接的方式,那么我很想知道.

先感谢您.

Vin*_*agi 6

为什么要创建另一个从pySerial读取数据的过程?对于非阻塞读取,您可以在串行类中配置超时.例如

ser = serial.Serial()
ser.baudrate = 19200
ser.port = 0
ser.timeout = 2 #By default, this is set to None
ser.open()
Run Code Online (Sandbox Code Playgroud)

另请参阅包装类以供参考.

http://pyserial.sourceforge.net/examples.html#wrapper-class

您可以运行一个线程来继续从串行读取数据并将其更新到缓冲区.

创建另一个进程会占用IPC的开销,不建议用于此任务.