Tengo un dispositivo bajo prueba (DUT) y mido su consumo de energía usando un Datalogger de Power Analyzer usando los datos de /dev/ttyUSB0
.
El problema es que el DUT ahora está remotamente desde la estación de trabajo con la que solía recopilar datos, pero en la misma red, necesito usar una segunda PC que está directamente conectada a través de USB al Power Anlayzer como una especie de proxy USB y SSH para crear una especie de enlace simbólico en la máquina de medición del USB de la máquina "proxy".
Dado el diagrama anterior, ¿cómo puede el 1 st PC el acceso /dev/ttyUSB0
de la 2 ª PC que está conectado directamente, de manera que un programa de lectura de la corriente desde el 1 st PC no notará la diferencia?
fuente
Puede usar una combinación de
ser2net
ysocat
. Por ejemplo, tengo un robot conectado a una frambuesa pi a través de un puerto serie. El raspberry pi está conectado 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 2da PC, y creo un archivo de dispositivo serial proxy usandosocat
en la 1ra PC.Esta configuración también puede funcionar para usted. Solución propuesta:
Paso 1: Instale el paquete ser2net en su 2da 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: configurar ser2net en la 2da PC
Por ejemplo, si tiene un dispositivo conectado
/dev/ttyACM0
con velocidad de transmisión115200
y desea servirlo desde el puerto local 3333, puede agregar la siguiente línea a/etc/ser2net.conf
3333:raw:0:/dev/ttyACM0:115200,remctl
Una vez creado el archivo de configuración, inicie ser2net ejecutándose 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 las opciones de conexión en serie libremente. 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 un terminal en la primera PC,
socat
creemos un puerto serie proxy que escuche desde el puerto tcp:socat pty,link=$HOME/MyProxySerialPort,waitslave tcp:$ip:$port,forever,reuseaddr,keepalive
Dónde, en este ejemplo
ip=<2nd-PC-IP-address>
yport=3333
(o lo que elija al configurar/etc/ser2net.conf
en la 2da PC).Paso 4: Conéctese a MyProxySerialPort
Ahora debería poder abrir una conexión en serie normalmente al dispositivo ubicado en
$HOME/MyProxySerialPort
la primera 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/
fuente
En los núcleos de Linux que usan un enlace simbólico desde / dev / bus / usb / BUS_ID / DEV_ID a / dev / char / MAJOR: ¡MENOR socat no puede abrir dichos dispositivos debido a un error IOCTL inapropiado!
Por lo tanto, este enfoque no parece funcionar directamente en dispositivos USB.
Probé usbip que es una implementación más cerca, pero sólo está soportado en los núcleos antiguos.
Como mi solución era sobre lectores de tarjetas conectados a través de pcsc-lite, había una mejor solución usando la variable de entorno para clientes libpcsclite .
De esta manera, se puede especificar un socket de dominio unix diferente. Y este puede reenviarse al socket del lector de tarjetas en un host remoto usando socat :
Ejecute esto en el host para reemplazar el lector de tarjetas
ejecute esto en el host CARD_READER_HOST con el lector de tarjetas pcsc conectado
fuente
/dev/ttyUSB0
o con un analizador de potencia que no utiliza PCSCLITE. Si desea publicar esta información, sería mejor como una pregunta por separado. Se le permite y alienta a publicar preguntas sobre el tema para las cuales tiene una respuesta inmediata de seguimiento.:
personaje en el camino? La página de manual de socat, sección "ESPECIFICACIONES DE DIRECCIÓN", tiene un párrafo sobre cómo escapar de los caracteres (v1.5.0 en adelante).