用于测试目的的虚拟串行端口

用于测试目的的虚拟串行端口

我正在编写一个通过串行端口与外部电路板通信的应用程序。在这个阶段,我需要测试串行协议,但外部硬件尚不可用。有没有办法通过(虚拟)串行端口打开到我的应用程序的终端?

答案1

使用“ptmx”接口可能是最好的选择。这是一个示例程序,它将附加到设备节点/dev/ptmx并触发创建/dev/pts/N,您可以从您的应用程序附加到该设备节点。

详细信息请参阅“man pty”。

#!/usr/bin/python
# Spawn pseudo-tty for input testing.
# Copyright 2010, Canonical, Ltd.
# Author: Kees Cook <[email protected]>
# License: GPLv3
import os, sys, select

parent, child = os.openpty()
tty = os.ttyname(child)
os.system('stty cs8 -icanon -echo < %s' % (tty))

print tty

try:
    os.system('stty cs8 -icanon -echo < /dev/stdin')

    poller = select.poll()
    poller.register(parent, select.POLLIN)
    poller.register(sys.stdin, select.POLLIN)

    running = True
    while running:
        events = poller.poll(1000)
        for fd, event in events:
            if (select.POLLIN & event) > 0:
                chars = os.read(fd, 512)
                if fd == parent:
                    sys.stdout.write(chars)
                    sys.stdout.flush()
                else:
                    os.write(parent, chars)
finally:
    os.system('stty sane < /dev/stdin')

当你运行它时,它会告诉你要附加到你的应用程序的 pts 的名称,你只需在终端中输入即可模拟硬件。

相关内容