Software Architektur für Live-Datenverarbeitung

Gast #3925267
Hallo,

ich habe eine Frage wie man grundsätzlich die Architektur für folgende 
Aufgabe angehen würde:

Über die RS232 kommen mit 115kBaud Daten rein, z.Z. schreibe ich die mit 
einem Terminalprogramm auf Platte und später läuft ein Python-Programm 
zur Datenauswertung drüber. Jetzt will ich dass das "live" statt findet.

Wie würdet ihr ein Programm aufbauen das folgendes können soll (Linux 
oder Windows):
* Daten kommen über die RS232 rein
* diese werden optional auf Platte geschrieben
* 2-5x pro Sekunde wird ein Datensatz genommen (es kommen wesentlich 
mehr rein) und angezeigt um live die Qualität der Eingangsdaten zu 
prüfen. Z.z. wird dazu numpy und gnuplot verwendet (unabhängig vom Rest 
der Verarbeitung).
* Die Daten gehen zusätzlich in einen großen FIFO, der soll durchaus ein 
paar MByte aufnehmen können. Geht das mit einer normalen Pipe unter 
Linux? Pluspunkt wäre wenn man anzeigen lassen kann wie viele Daten im 
FIFO stecken.
* Dann gehen die Daten in die eigentliche Datenverarbeitung, die was mit 
den Daten tut, möglicherweise nicht schnell genug um die reinkommenden 
Daten in Echtzeit zu verarbeiten, weswegen der große FIFO wichtig ist. 
Optional soll der Dateneingang auch eine aufgezeichnete Datei sein.


Muss/sollte man das in verschiedene Threads aufteilen? Wenn ja, wie am 
besten? Geht das sinnvollerweise in Python? Oder besser C? Schreibe ich 
vielleicht die verschiedenen Teile als einzelne Programme in kopple sie 
als Pipe?
Habt ihr Vorschläge wie man sowas professionell angehen würde?
#3925471
Viele Fragen, die Antwort lautet immer ja ;)

Funktionieren wird alles, egal, ob mit Python oder C, ob alles in einem 
Programm mit Threads oder unabhängigen mit Pipes dazwischen.

Mach einfach, was du willst. So schwierig ist das ja alles nicht.

Oliver
Gast #3928410
> Ich habe neulich etwas sehr Ähnliches (RS232 -> Daten überprüfen ->
> Spektrum bauen -> in Datei schreiben) gemacht. Mit Python. Funktioniert
> und ist sehr einfach.

Wie schnell kamen die Daten über die RS232 rein? Ich mach mit bei einem 
Single-Thread Design nur sorgen dass die RS232 Daten verliert während 
Python gerade eine Grafik malt oder mit was anderem beschäftigt ist.
#3928465
Erst einmal die wichtigen Kriterien definieren. Beispiel: Wenn Daten 
keinesfalls verloren gehen dürfen, egal was sonst passiert, dann ist es 
sinnvoll, deren Aufzeichnung vom Rest abzukoppeln. Ein Prozess um die 
Daten reinlaufen lassen und zu speichern. Was immer man damit dann macht 
läuft in einem eigenen Prozess, um die Aufzeichnung nicht zu riskieren.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 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.