Este equipo de expertos pasados ciertos días de trabajo y de recopilar de datos, dimos con los datos necesarios, queremos que resulte útil para ti en tu proyecto.
Solución:
socat
podría funcionar aquí.
En la segunda PC podrías dejar socat
escuchar datos sobre /dev/ttyUSB0
y servirlo en un puerto tcp, por ejemplo:
socat /dev/ttyUSB0,raw,echo=0 tcp-listen:8888,reuseaddr
Luego, en la 1.ª PC, puede conectarse a la 2.ª PC con socat y proporcionar los datos en un pseudo terminal /dev/ttyVUSB0
para su aplicación:
socat PTY,raw,echo=0,link=/dev/ttyVUSB0 tcp::8888
Esto no está probado y socat
admite muchas opciones, por lo que es posible que se necesiten ajustes.
Puedes usar una combinación de ser2net
y socat
. Por ejemplo, tengo un robot conectado a una raspberry pi a través de un puerto serie. La raspberry pi está conectada a mi red local (equivalente a su segunda PC). Y mi computadora portátil está conectada a la misma red local (equivalente a su primera PC). Luego uso ser2net para reenviar el puerto serie a través de TCP desde la segunda PC, y creo un archivo de dispositivo serie proxy usando socat
en la 1ra PC.
Esta configuración también puede funcionar para usted. Solución propuesta:
Paso 1: Instale el paquete ser2net en su segunda PC (siguiendo su diagrama)
sudo apt-get install ser2net
ser2net escucha un puerto TCP y puede canalizar datos hacia y desde un puerto serie a través del puerto TCP. Puede configurar para qué puertos serie desea crear “proxies” a través de su archivo de configuración /etc/ser2net.conf
.
Paso 2: configure ser2net en la 2da PC
Por ejemplo, si tiene un dispositivo conectado en /dev/ttyACM0
con velocidad de transmisión 115200
y desea servirlo desde el puerto localhost 3333, puede agregar la siguiente línea a /etc/ser2net.conf
3333:raw:0:/dev/ttyACM0:115200,remctl
Una vez que haya creado el archivo de configuración, inicie ser2net ejecutándolo en la segunda PC:
ser2net
o (si ya se está ejecutando, simplemente reinícielo como se muestra a continuación)
/etc/init.d/ser2net restart
Una cosa importante aquí es la opción remctl. Permite que el lado del cliente (primera PC en su diagrama) se conecte al dispositivo y elija libremente las opciones de conexión en serie. Creo que de esta manera la comunicación en serie es completamente transparente desde la perspectiva del espacio de trabajo de recopilación de datos. Ver más detalles aquí.
Paso 3: Configure el archivo del dispositivo serie proxy en la estación de trabajo de recopilación de datos (primera PC)
(si no tienes socat, entonces sudo apt-get install socat
)
Finalmente, en una terminal en la 1ra PC deje socat
cree un puerto serie proxy que escuchará desde el puerto tcp:
socat pty,link=$HOME/MyProxySerialPort,waitslave tcp:$ip:$port,forever,reuseaddr,keepalive
Donde, en este ejemplo ip=<2nd-PC-IP-address>
y port=3333
(o lo que elijas al configurar /etc/ser2net.conf
en la 2ª PC).
Paso 4: Conéctese a MyProxySerialPort
Ahora debería poder abrir una conexión en serie normalmente al dispositivo ubicado en $HOME/MyProxySerialPort
en la 1ra PC.
Esta publicación de blog también tiene más información sobre esta configuración: http://techtinkering.com/2013/04/02/connecting-to-a-remote-serial-port-over-tcpip/