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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Marie M. (capiman)


Bewertung
0 lesenswert
nicht 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)


Bewertung
2 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht lesenswert
Dafür gibt es doch gpsd?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.