Você pode usar uma combinação de ser2net
e socat
. Por exemplo, eu tenho um robô conectado a um raspberry pi 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). Então eu uso o ser2net para encaminhar a porta serial via TCP a partir do 2º PC e criar um arquivo de dispositivo serial proxy usando socat
no 1º PC.
Essa configuração também pode funcionar para você. Solução proposta:
Etapa 1: Instale o pacote ser2net no seu 2º PC (seguindo o seu diagrama)
sudo apt-get install ser2net
O ser2net escuta uma porta TCP e pode canalizar dados de e para uma porta serial via porta TCP. Você pode configurar para quais portas seriais deseja criar "proxies" através do arquivo de configuração/etc/ser2net.conf
.
Etapa 2: configurar o ser2net no 2º PC
Por exemplo, se você tem um dispositivo conectado /dev/ttyACM0
com baudrate 115200
e deseja atendê-lo da porta 3333 do host local, é possível adicionar a seguinte linha a/etc/ser2net.conf
3333:raw:0:/dev/ttyACM0:115200,remctl
Após criar o arquivo de configuração, inicie o ser2net executando o segundo PC:
ser2net
ou (se já estiver em execução, basta reiniciá-lo como abaixo)
/etc/init.d/ser2net restart
Uma coisa importante aqui é a opção remctl. Ele permite que o lado do cliente (1º PC no seu diagrama) se conecte ao dispositivo e escolha as opções de conexão serial livremente. Penso que desta maneira a comunicação serial é completamente transparente da perspectiva do espaço de trabalho da coleta de dados. Vejo mais detalhes aqui .
Etapa 3: configurar o arquivo de dispositivo serial proxy na estação de trabalho de coleta de dados (1º PC)
(se você não tem socat, então sudo apt-get install socat
)
Finalmente, em um terminal no 1º PC, vamos socat
criar uma porta serial proxy que escutará da porta tcp:
socat pty,link=$HOME/MyProxySerialPort,waitslave tcp:$ip:$port,forever,reuseaddr,keepalive
Onde, neste exemplo ip=<2nd-PC-IP-address>
eport=3333
(ou o que você escolher ao instalar /etc/ser2net.conf
no 2º PC).
Etapa 4: conectar-se ao MyProxySerialPort
Agora você deve conseguir abrir uma conexão serial normalmente com o dispositivo localizado no $HOME/MyProxySerialPort
1º PC.
Esta publicação no blog também tem mais algumas informações sobre essa configuração: http://techtinkering.com/2013/04/02/connecting-to-a-remote-serial-port-over-tcpip/