Linux Device/API/Lib?

OP #6471982
Lesenswert?
• ▲
▼
Hi,

ich möchte unter Linux einem Device, in meinem Fall ein GPS Modul,
welches an einem seriellen Port hängt, Zusatzinformationen mitgeben.

Also z.B. GPS Modul überträgt laufend via einzelner Zeichen 
NMEA-Nachrichten, ich möchte aber z.B. bei einem Ausfall auch die letzte 
Position und Uhrzeit wissen, wann die letzte Position übermittelt wurde. 
Ich möchte mich in der App auch nicht um das Parsen der NMEA-Nachrichten 
kümmern.

Wie macht man dies "normal" unter Linux?

Ideen:

1) Ich könnte die Daten von /dev/ttyXY vermutlich in ein /dev/ttyXYext 
"weiterleiten". Und vielleicht eigene ioctls anbieten, um meine 
Informationen der App zur Verfügung zu stellen. Vermutlich brauch ich 
auch Lib, um die ioctls von der App zu extrahieren.

2) Ich könnte eine Lib erstellen. Die Lib öffnet den COM-Port und 
sammelt Daten, speichert was nötig ist und wertet sie aus. Die App kann 
via Function Calls diese Daten abfragen.

Tendiere aktuell zu 2)
Gast #6471989
Lesenswert?
• ▲
▼
Marie M. schrieb:
> Und vielleicht eigene ioctls anbieten,

Dazu müsstest du einen eigenen Kernel-Treiber implementieren. Das ist 
eher unpraktisch/aufwendig.

Marie M. schrieb:
> 2) Ich könnte eine Lib erstellen. Die Lib öffnet den COM-Port und
> sammelt Daten, speichert was nötig ist und wertet sie aus.

Dann kann aber auch immer nur 1 App gleichzeitig die Daten abfragen.

Der typische Unix/Linux-Ansatz ist:
Eine Anwendung (Daemon) implementieren, welche permanent im Hintergrund 
läuft, die NMEA-Daten empfängt, parst, und wie gewünscht speichert. Apps 
können sich dann mit dem Daemon verbinden (z.B. via UNIX-Socket oder 
auch DBus) und die Daten in einem beliebigen Format abfragen. Das ist 
die flexibelste Möglichkeit; über die UNIX-Berechtigungen kannst du den 
Zugang zum Daemon kontrollieren, und Apps & Daemon können in beliebigen 
Programmiersprachen und völlig unabhängig voneinander implementiert 
sein. Es ist bei Bedarf auch übers Netzwerk machbar.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 5 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.