如何将 minicom 与 stdin 和 stdout 一起使用?

如何将 minicom 与 stdin 和 stdout 一起使用?

我需要通过 USB 到 RS-232 转换器与 Python 与设备进行通信。该应用程序minicom无缝连接,因此如果我可以在非交互模式下运行它,一切都会很棒。

阅读文档有一些有趣的选项,但我没有完全理解其中任何一个:

 -t   Terminal type. With this flag, you can override the environment 
      TERM variable. 

 -S   script.   Run  the named script at startup.

如何在我的应用程序和 之间传输数据minicom?我应该使用其他东西吗?

答案1

minicom非常适合交互式使用,但它不是编程 I/O 的正确工具。

您的本地 Python 程序应该简单地打开/dev串行端口的节点。它的工作原理就像写入文件一样:

fd = os.open('/dev/ttyUSB0', os.O_RDWR)
fd.write(...)

唯一棘手的一点是设置比特率等。为此,请使用Python 的 termios 库:

attr = termios.tcgetattr(fd)
attr[5] = attr[6] = termios.B9600
termios.tcsetattr(fd, termios.TCSANOW, attr)

有关此内容的 Python 文档几乎假设您已从 C 使用此 API,并且只需要转换为 Python 的帮助。所以,如果你走这条路,你应该使用史蒂文斯和拉戈这样的经典Unix 环境中的高级编程

一个更高级别的库可以让您超越级别termios并为您提供非 *ix 类型系统的可移植性py串口

答案2

沃伦·杨(Warren Young)上面的答案是正确的,但是为了懒惰,有一个更好的答案:

cat $file > /dev/ttyUSB0也有效。至于tc(g|s)etattr调用,这些是由stty命令处理的(例如stty -F /dev/ttyUSB0 9600)!

答案3

使用miniterm.py!它是包含在 pySerial 模块中沃伦在回答中提到。

输出始终在 stdout 上,因此您可以通过管道传输它、tee 它、grep 它、awk 它、sed 它、打印它、压缩、解压缩它。

使用 pip 为您的用户安装它,并且miniterm.py应该将其放置在您的 中~/.local/bin,这样您就可以执行它:

$ pip3 install pySerial
$ miniterm.py /dev/ttyUSB0
--- Miniterm on /dev/ttyUSB0  9600,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---

如果这不起作用,您也可以运行串行模块:

$ python3 -m serial /dev/ttyUSB0
--- Miniterm on /dev/ttyUSB0  9600,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---

记得使用Ctrl+]退出!

相关内容