Forum: PC-Programmierung Software Architektur für Live-Datenverarbeitung


von asd (Gast)


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?

von Oliver S. (oliverso)


Lesenswert?

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

von Gustl B. (-gb-)


Lesenswert?

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

von asd (Gast)


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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

asd schrieb:
> 115kBaud

Das sind nicht mal 12 kByte/s. Ein z.B. 1 MByte Cache konnte also schon 
über 80 Sekunden Daten speichern.

von (prx) A. K. (prx)


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.

: Bearbeitet durch User
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.