Я пишу приложение, которое связывается через последовательный порт с внешней платой. На этом этапе мне нужно протестировать последовательный протокол, но внешнее оборудование еще не используется. Есть ли способ открыть терминал через (виртуальный) последовательный порт для моего приложения?
Лучше всего использовать интерфейс «ptmx». Вот пример программы, которая подключается к /dev/ptmx
и запускает создание узла устройства /dev/pts/N
, к которому вы можете подключиться из своего приложения.
Подробнее см. «Man pty».
#!/usr/bin/python
# Spawn pseudo-tty for input testing.
# Copyright 2010, Canonical, Ltd.
# Author: Kees Cook <kees@ubuntu.com>
# 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 для подключения к вашему приложению, и вы можете смоделировать оборудование, просто набрав в терминале.