Clonando / dividindo uma porta serial (COM) no Ubuntu

0

Tudo está funcionando com minha porta serial. Eu conectei meu conversor FTDI ao meu computador, configurei minha porta COM ...
ln -s /dev/ttyUSB0 ~/wine/dosdevices/COM1

Mas agora eu gostaria de "clonar" essa porta.

Estou usando o wine para rodar o visualizador de GPS e tenho um computador Linux rodando Ubuntu | Alguém poderia ajudar?

    
por avitex 07.05.2011 / 18:07

2 respostas

1

A comunicação da porta serial está sempre entre dois dispositivos e o não pode ser compartilhado . Apenas um aplicativo pode segurar o dispositivo por vez. Mas é possível espionar a comunicação, ou seja, monitorar a transmissão de dados.

    
por 08.05.2011 / 10:05
1

Embora uma resposta anterior tenha dito que não pode ser compartilhada, isso está parcialmente errado.

Uma porta TTY do Linux pode ser aberta com aplicativos diferentes (se eles não usarem ou verificarem bloqueios), no entanto, os dados serão consumidos por quem ler primeiro, porque há apenas um buffer, portanto, os dados não estarão disponíveis para ambos os processos. Há alguns casos em que isso é aceitável e alguns casos em que isso não é aceitável, mas geralmente as pessoas não querem isso.

Como é possível criar um TTY a partir do userspace, nada impede que alguém crie um aplicativo de espaço de usuário que crie 2 portas seriais virtuais / falsas e as conecte a uma porta serial física.

ttybus faz exatamente isso (do readme):

Use case 1: Multiplexing serial input only or output only device attached to /dev/ttyS0, for use with multiple applications.
- step 1: create a new tty bus called /tmp/ttyS0mux:

    tty_bus -s /tmp/ttyS0mux &
    sleep 1


- step 2: connect the real device to the bus using tty_attach:

    tty_attach -s /tmp/ttyS0mux /dev/ttyS0 &
    sleep 1

- step 3: create 2 fake ttyS0 devices, attached to the bus:

    tty_fake -s /tmp/ttyS0mux /dev/ttyS0fake0 &
    tty_fake -s /tmp/ttyS0mux /dev/ttyS0fake1 &
    sleep 1

- step 4: start your application and force it to use the new serial device for input or output

    /bin/foo /dev/ttyS0fake0 &
    /bin/bar /dev/ttyS0fake1 &

Nota: Eu tive que bifurcar em background todos os binários tty_ * terminando os comandos com & porque os binários estão bloqueando e alguns dormem para evitar que os binários atropelem uns aos outros.

Boa sorte!

    
por 03.08.2018 / 17:18