Software Architektur für Live-Datenverarbeitung

Gast #3925267
Lesenswert?

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?
Gast #3928410
Lesenswert?

> 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
Lesenswert?

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

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