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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren