Wysyłaj dane GPS do UDP w trybie rozgłoszeniowym z Socat


1

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


dane to liczba mnoga odniesienia. Nic nie jest nazywane „
danymi

Odpowiedzi:


1

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.255zostało po cichu uspokojone, ale muszę to sprawdzić, żeby się upewnić.


Dzięki gmelis. Próbowałem, ale 1) klient musi utworzyć <ENTER> i ponownie <ENTER>, aby odczytać komunikat 2) klient musi być w standardowej formie (tzn. Pakiet nienadzorowany UDP, bez dostosowywania), aby był zgodny z danymi wejściowymi ploterów nawigacyjnych.
Frank Marinux,

Próbowałeś bez forkopcji?
gmelis

Tak, ale wszelkie dane pojawiają się po pierwszym <ENTER>
Frank Marinux

W trybie multiemisji działa to z serwera: 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:
Frank Marinux

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
Frank Marinux
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.