MUPLEX jest skryptem Linux używającym SOCAT, który może mieszać różne przepływy wejściowe rzeczywistych lub emulować szeregowe dane NMEA i współdzielić je między wieloma aplikacjami za pomocą wirtualnych portów szeregowych i / lub TCP. Teraz wysyłałbym dane do wielu terminali w trybie emisji UDP; Próbowałem wielu kombinacji adresu / opcji i szukam przykładów z Internetu, ale bez rezultatu.
np. w prostej formie:
# parameters port for standard NMEA
params_port="b4800,raw,clocal=1,cs8,cstopb=0,parenb=0,crtscts=0,echo=0,icanon"
# GPS port
dev_gps=/dev/ttyUSB0
# network is 192.168.127.0, GPS is on the 192.168.127.1 machine
# testing broadcast
# first enable ping
echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
ping -c5 -b 192.168.127.255
# result OK
# send datas to 10110 UDP port
socat -d -v FILE:$dev_gps,$params_port UDP4-DATAGRAM:192.168.127.255:10110,broadcast
Brak błędów, ale wszelkie dane po stronie klienta z:
netcat -u 192.168.127.1 10110
lub
socat -d UDP:192.168.127.1:10110 -
Jeśli ktoś ma rozwiązanie, jest mile widziany!
Kompletny skrypt Muplex znajduje się na stronie: http://marinux.tuxfamily.org
linux
networking
Frank Marinux
źródło
źródło
Odpowiedzi:
Pamiętam, że kiedyś miałem podobny problem, a rozwiązaniem było przejście do składni „multiemisji”, tj .:
socat -d -v FILE:$dev_gps,$params_port UDP4-RECVFROM:10110,ip-add-membership=224.1.0.1:192.168.127.10,fork
Koniec odbioru,
socat UDP4-DATAGRAM:224.1.0.1:10110,range=192.168.127.0/24 -
Myślę, że coś
x.x.x.255
zostało po cichu uspokojone, ale muszę to sprawdzić, żeby się upewnić.źródło
fork
opcji?socat -d FILE:$dev_gps,$params_port UDP4-DATAGRAM:230.0.0.1:23001,bind=:23000,reuseaddr,ip-add-membership=230.0.0.0:127.0.0.1
Od klienta:socat -d UDP4-DATAGRAM:230.0.0.0:23000,bind=:23001,reuseaddr,ip-add-membership=230.0.0.1:127.0.0.1 -
Ale nie jest czytane przez oprogramowanie nawigacyjne (np. PolarView), które potrzebuje standardowego pakietu emisji UDP jako 192.168.xx: 23001