Forum: PC-Programmierung Linux Device/API/Lib?


von Martin M. (capiman)


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)

: Bearbeitet durch User
von Programmierer (Gast)


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.

von 🐧 DPA 🐧 (Gast)


Lesenswert?

Dafür gibt es doch gpsd?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.