
Ich versuche, eine bidirektionale Kommunikation herzustellen, bei der Ethernet-UDP-Pakete über die eth0-Schnittstelle in ein Linux-System (nehmen wir an, ein Raspberry Pi) gelangen und in die UART-Hardware des Systems weitergeleitet, dann vom zweiten Linux-System gelesen, in die eth0-Schnittstelle weitergeleitet und erneut als UDP-Pakete an einen Sensor übertragen werden und umgekehrt.
Mit anderen Worten, ich versuche, UDP-Pakete nahtlos in serielle und dann wieder in UDP umzuwandeln.
Ich habe es geschafft, dass die UDP-Pakete vom PC das zweite Linux-System erreichen, aber sie erreichen nicht den Sensor, der ihr endgültiges Ziel ist.
Konfiguration: Der PC befindet sich im selben Subnetz wie das erste Linux-System und sendet ständig Pakete an die Broadcast-Adresse, Port 33000.
Im ersten Linux-System habe ich Netcat verwendet, um Daten mit diesen Befehlen von eth0 an UART weiterzuleiten:stty -F /dev/ttyS0um die Baudrate des UART einzustellen und dannnc -ul 172.31.255.255 33000 >/dev/ttyS0 </dev/ttyS0um Daten von eth0 an ttyS0 (uart) weiterzuleiten. Die Daten werden erfolgreich an das zweite Linux-System übertragen, wo ich die Nutzdaten ausdrucken kann. Aber von da an treten Probleme auf.
Im zweiten Linux-System habe ich die gleichen Befehle wie im ersten verwendet:stty -F /dev/ttyS0Undnc -ul 172.31.255.255 33000 >/dev/ttyS0 </dev/ttyS0. Das Problem besteht darin, dass die Pakete ihr endgültiges Ziel, den Sensor, nicht erreichen. Ich überwache den Verkehr in der eth0-Schnittstelle des zweiten Linux-Systems mit Wireshark und es werden keine UDP-Pakete übertragen.
Merkwürdigerweise erreichen mit dieser Konfiguration Pakete vom PC (Port 33000) den Sensor nicht, ABER wenn ich den Abhörport auf 10021 ändere (in beiden Linux-Systemen), ist der Weg für die Pakete vom Sensor frei und sie erreichen erfolgreich den PC (die Software).
Ich denke, dass es mit den Server-/Client-Rollen zu tun haben könnte. Der PC (über die spezielle Software des Sensors) initiiert die Kommunikation mit dem Sensor, indem er SYN-Pakete an 33000 sendet und auf eine Antwort wartet. Diese Pakete erreichen den Sensor nicht, aber der Sensor sendet Telemetriedaten an Port 10021 und diese Pakete erreichen erfolgreich die Software (den PC).
Alle Erkenntnisse sind willkommen.