AIS Daten (NMEA Format) über WLAN senden

  • Hallo PI-Freunde,

    ich habe einen PI (Typ B) mit einem WLAN-Stick und einem USB-Serial-Adapter.
    Folgendes Problem habe ich mit der Programmierung:
    1. der Pi empfängt AIS-Daten (NMEA-Format 0183, 38400 baud) über den USB-Serial-Adapter auf /dev/ttyUSB0 (funktioniert schon mit cat-Befehl)
    2. Diese empfangenen Daten möchte ich über TCP oder UDP über den WLAN-Stick für andere Geräte (z.B. IPAD) nutzbar machen (funktioniert auch schon)
    3. Der Pi hat die IP 192.168.100.1 und die externen Geräte können sich über den IP-Bereich 192.168.100.100 bis 192.168.100.110 mit dem Pi verbinden. Auf dem IPAD nutze das App iNAVX (Daten werden über TCP oder UDP eingelesen.

    Ich habe im Netz den Befehl netcat gefunden, aber habe mit der Syntax so meine Schwierigkeiten. Kann mit jemand vielleicht die Syntax mitteilen, damit die Daten mittels cat /dev/ttyUSB0 dann mit netcat weitergeleitet werden.

    Vielen Dank für eure Unterstützung.

    Manni2014

  • Ich hab so meine Zweifel ob netcat das Richtige ist.

    Besser waere ein Programm das das GPS ausliest und auf eine
    Verbindung wartet. Fuer einen der sich auskennt, ist das kein
    grosses Projekt ;)

    Fuer einen Versuch koennte es reichen:

    * Mit stty die Schnittstelle /dev/ttyUSB0 parametrieren
    * nc -l 1234 < /dev/ttyUSB0

    Und dann SCHNELL mit der iPad-App auf den PI connecten !

    Schnell deshalb, weil netcat ansonsten einen Rueckstau auf
    der seriellen Leitung verursacht.

    netcat bringt nichts weg und das GPS schickt dauernd Daten.
    Wenn der Buffer voll wird, versucht Linux vermutlich das
    GPS zu stoppen, mit Handshake und/oder XOFF.

    Und auch wenn sich das GPS nicht stoppen laesst, kommt
    nichts gescheites raus, denn vorne im Buffer sind dann etwa
    4096 Bytes alte Daten ...

  • Danke für Deine Antwort.
    Da ich den PI mit meinen Navigationsinstrumenten gleichgzeitig starte wäre es nicht gut, wenn netcat alte Daten sendet.

    Hast Du eine Idee wie ich das sonst lösen kann?

  • Warum nicht ein eigenes Programm schreiben ?
    Bietet sich doch direkt an.
    Dann kann mach auch die Daten evtl aufbereiten, also nur Daten die nicht älter als 10 Frames sind. Und du kannst es auch für andere Anwendungen aufbereiten --> Webbrowser.
    Mit Java sollte das relativ einfach zu machen sein - python kenne ich mich leider nicht aus.

    mfg

  • > Hast Du eine Idee wie ich das sonst lösen kann?
    Mit einem selbstgeschriebenen Programm.

    Die einfachere Version: ein Programm das die Daten von /dev/ttyUSB0 liest
    und sie dann als UDP-Broadcast verschickt.

    Broadcasts sind aber SEHR unbeliebt in groesseren Netzen.

    Oder dann ein Serverprozess der die Schnittstelle ausliest, und die Daten
    wegschmeisst bis er eine Verbindung zu einem Client hat.

    Welche Sprache soll's denn sein ?

    Einmal editiert, zuletzt von Tell (8. April 2014 um 13:03)

  • Ich habe leider wenig Kenntnisse mit der Programmierung.
    Der Pi wird in meinem Segelboot eingebaut und wird gestartet sobald die Navigationsgeräte eingeschaltet werden.

    Kannst Du mich bei der Programmierung unterstützen.

    Danke

  • Folgendes

    Der Pi liest die AIS-Daten über den USB-Serial-Adapter auf /dev/ttyUSB0 ein (baud 38400, 8 bit, 1 Stopbit, kein Handshake).
    Diese Daten sollen über den WLAN-Stick (Access Point) zur Verfügung gestellt werden.
    Der PI hat die IP 192.168.100.1. Das IPAD bekommt eine IP vom PI im Bereich 192.168.100.100 bis 110. In der App iNavX kann über TCP/IP Client sowohl TCP als auch UDP definiert werden mit einem Port (bei UDP ist der Port 10110).
    Mein Ziel:
    Die AIS-Daten werden am PI eingelesen und über den Access Point über WLAN weitergeleitet, ohne das der Pi die Daten speichert. Sobald sich das IPAD mit dem Pi verbindet werden die aktuellen Daten durch die App iNAVX angezeigt.

  • Super. Vielen Dank für das Programm. Ich werde es gleich morgen ausprobieren.
    Kannst Du mir noch verraten, wie ich das Programm compilieren muss und wie ich es beim booten des PIs automatisch starten kann.
    Ich habe nur sehr wenig (fast keine) Kenntnisse.

    Danke.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!