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?
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
Ich habe neulich etwas sehr Ähnliches (RS232 -> Daten überprüfen -> Spektrum bauen -> in Datei schreiben) gemacht. Mit Python. Funktioniert und ist sehr einfach.
> 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.
asd schrieb: > 115kBaud Das sind nicht mal 12 kByte/s. Ein z.B. 1 MByte Cache konnte also schon über 80 Sekunden Daten speichern.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.