Eu tenho um dispositivo em teste (DUT) e meço seu uso de energia usando um Datalogger do Power Analyzer usando os dados de /dev/ttyUSB0
.
O problema é que o DUT agora está remotamente da estação de trabalho com a qual eu costumava coletar dados, mas na mesma rede, preciso usar um segundo PC que esteja diretamente conectado via USB ao Power Anlayzer como uma espécie de proxy USB e ssh para criar um tipo de link simbólico na máquina de medição do USB da máquina "proxy".
Dado o diagrama acima, como o 1º PC pode acessar /dev/ttyUSB0
o 2º PC diretamente conectado, de forma que um programa que esteja lendo o fluxo do 1º PC não notará a diferença?
fonte
Você pode usar uma combinação de
ser2net
esocat
. 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 usandosocat
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 baudrate115200
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/
fonte
Nos kernels do linux que estão usando um link simbólico de / dev / bus / usb / BUS_ID / DEV_ID para / dev / char / MAJOR: MINOR SOCAT não pode abrir esses dispositivos devido a um erro IOCTL inadequado!
Portanto, essa abordagem não parece funcionar diretamente em dispositivos USB.
Eu tentei o usbip, que é uma implementação mais próxima, mas suportada apenas em kernels antigos.
Como minha solução era sobre leitores de cartão conectados via pcsc-lite, havia uma solução melhor usando a variável de ambiente para clientes libpcsclite .
Dessa forma, um soquete de domínio unix diferente pode ser especificado. E este pode ser encaminhado para o soquete do leitor de cartão em um host remoto usando socat :
Execute isso no host para substituir o leitor de cartão
execute isso no host CARD_READER_HOST com o leitor de cartão pcsc conectado
fonte
/dev/ttyUSB0
ou a um analisador de energia que não usa o PCSCLITE. Se você gostaria de postar essas informações, seria melhor como uma pergunta separada. Você tem permissão e é incentivado a postar perguntas sobre tópicos para as quais você tem uma resposta imediata imediata.:
personagem no caminho? A página de manual socat, seção "ESPECIFICAÇÕES DE ENDEREÇO", possui um parágrafo sobre como escapar de caracteres (v1.5.0 em diante).