Виртуальный последовательный порт для тестирования

Я пишу приложение, которое связывается через последовательный порт с внешней платой. На этом этапе мне нужно протестировать последовательный протокол, но внешнее оборудование еще не используется. Есть ли способ открыть терминал через (виртуальный) последовательный порт для моего приложения?

2
задан 10 October 2011 в 21:46

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 <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 для подключения к вашему приложению, и вы можете смоделировать оборудование, просто набрав в терминале.

0
ответ дан 10 October 2011 в 21:46

Другие вопросы по тегам:

Похожие вопросы: