Você pode usar uma combinação de ser2net
e socat
. Por exemplo, eu tenho um robô conectado a um pi de framboesa através de uma porta serial. O raspberry pi está conectado à minha rede local (equivalente ao seu segundo PC). E meu laptop está conectado à mesma rede local (equivalente ao seu primeiro PC). Em seguida, uso o ser2net para encaminhar a porta serial via TCP do segundo PC e criar um arquivo de dispositivo serial proxy usando socat
no primeiro PC.
Esta configuração pode funcionar para você também. Solução proposta:
Etapa 1: instale o pacote ser2net no seu segundo PC (seguindo o diagrama)
sudo apt-get install ser2net
O ser2net escuta uma porta TCP e é capaz de enviar dados de e para uma porta serial através da porta TCP. Você pode configurar quais portas seriais você deseja criar "proxies" através de seu arquivo de configuração /etc/ser2net.conf
.
Passo 2: configure o ser2net no 2º PC
Por exemplo, se você tiver um dispositivo conectado em /dev/ttyACM0
com baudrate 115200
e quiser veiculá-lo na porta 3333 do host local, você poderá adicionar a seguinte linha a /etc/ser2net.conf
3333:raw:0:/dev/ttyACM0:115200,remctl
Tendo criado o arquivo de configuração, inicie o ser2net executando no segundo PC:
ser2net
ou (se já estiver sendo executado, reinicie-o como abaixo)
/etc/init.d/ser2net restart
Uma coisa importante aqui é a opção remctl. Ele permite que o lado do cliente (primeiro PC em seu diagrama) se conecte ao dispositivo e escolha livremente as opções de conexão serial. Eu acho que desta forma a comunicação serial é completamente transparente a partir da perspectiva do espaço de trabalho de coleta de dados. Veja mais detalhes aqui .
Etapa 3: configurar o arquivo de dispositivo serial do proxy na estação de trabalho de coleta de dados (1º PC)
(se você não tiver socat, então sudo apt-get install socat
)
Finalmente, em um terminal no primeiro PC, deixe socat
criar uma porta serial proxy que escutará a partir da porta tcp:
socat pty,link=$HOME/MyProxySerialPort,waitslave tcp:$ip:$port,forever,reuseaddr,keepalive
Onde, neste exemplo, ip=<2nd-PC-IP-address>
e port=3333
(ou o que você escolheu ao configurar /etc/ser2net.conf
no segundo PC).
Etapa 4: conecte-se a MyProxySerialPort
Agora você deve conseguir abrir uma conexão serial normalmente no dispositivo localizado em $HOME/MyProxySerialPort
no primeiro PC.
Esta postagem do blog também tem mais algumas informações sobre essa configuração: link