Virtual Serial Port para fins de teste

2

Estou escrevendo um aplicativo que se comunica através de uma porta serial para uma placa externa. Nesta fase eu preciso testar o protocolo serial, mas o hardware externo ainda não é utilizável. Existe uma maneira de abrir um terminal através de uma porta serial (virtual) para o meu aplicativo?

    
por andijcr 25.10.2010 / 16:51

1 resposta

2

Usar a interface "ptmx" é provavelmente a melhor aposta. Aqui está um exemplo de programa que será anexado a /dev/ptmx e acionará a criação de um nó de dispositivo /dev/pts/N ao qual você pode anexar a partir de seu aplicativo.

Para detalhes, veja "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')

Quando você executar isso, ele informará o nome dos pts a serem anexados ao seu aplicativo e você poderá simular o hardware apenas digitando o terminal.

    
por Kees Cook 26.10.2010 / 17:23