
Estou tentando estabelecer uma comunicação bidirecional onde pacotes Ethernet UDP entram em um sistema Linux (suponha um Raspberry pi) da interface eth0 e canalizados para o hardware UART do sistema, depois lidos pelo segundo sistema Linux, canalizados para a interface eth0 e transmitido novamente como pacotes UDP para um sensor e vice-versa.
Em outras palavras, estou tentando converter pacotes UDP em serial e novamente em UDP sem problemas.
Consegui fazer com que os pacotes UDP do PC chegassem ao segundo sistema Linux, mas eles não chegam ao sensor que é seu destino final.
Configuração: O PC está na mesma sub-rede do primeiro sistema Linux e envia pacotes constantemente no endereço de broadcast, porta 33000.
No primeiro sistema Linux usei o netcat para canalizar dados de eth0 para UART usando estes comandos:stty -F /dev/ttyS0para definir a taxa de transmissão do uart e entãonc -ul 172.31.255.255 33000 >/dev/ttyS0 </dev/ttyS0para canalizar dados de eth0 para ttyS0 (uart). Os dados são transmitidos com sucesso para o segundo sistema Linux, onde posso imprimir as cargas. Mas a partir daí os problemas aparecem.
No segundo sistema Linux usei os mesmos comandos do primeiro:stty -F /dev/ttyS0enc -ul 172.31.255.255 33000 >/dev/ttyS0 </dev/ttyS0. O problema é que os pacotes não chegam ao destino final que é o sensor. Eu monitoro o tráfego na interface eth0 do segundo sistema Linux com wireshark e nenhum pacote UDP é transmitido.
Estranhamente, com esta configuração, os pacotes do PC (porta 33000) não chegam ao sensor, MAS, se eu mudar a porta de escuta para 10021 (em ambos os sistemas Linux), então o caminho estará aberto para os pacotes do sensor e eles alcançam com sucesso o PC (software).
Estou pensando que isso pode ter a ver com as funções de servidor/cliente. O PC (através do software especial do sensor) inicia a comunicação com o sensor enviando pacotes SYN em 33000 e aguarda uma resposta. Esses pacotes não chegam ao sensor, mas o sensor envia dados de telemetria na porta 10021 e esses pacotes chegam com sucesso ao software (PC).
Qualquer ideia é bem-vinda.