Programmaufbau, Programmablauf, Exceptions, Threads

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
whaeva
User
Beiträge: 66
Registriert: Mittwoch 25. Februar 2009, 15:30

Ich möchte ein Programm schreiben, das über ein paar serielle Geräte einen Abauf steuert und auswertet. In diesem Fall bedeutet Programm im wahrsten Sinne des Wortes auch einen zeitlichen Ablauf ("Waschmaschinenprogramm").
Ich habe bereits Klassen für die serielle Kommunikation mit den seriell angeschlossenen Geräten, kann also relativ einfach damit kommunizieren.

Bislang habe ich jedoch weder von Threads und Exceptions Gebrauch gemacht, so dass der erste Ansatz für das Programm wahrscheinlich in einem hardcoded linearen Ablauf endet, unübersichtlich und mit redundantem Code (z.B. Timoutprüfung für serielle Komm.) - und eine GUI (sowie http-Interface) soll auch noch dazukommen.

Bei sowas hilft einem auch das Buch von Michael Weigend nicht weiter, die Beispiele sind eben relativ einfach gehalten.
Da ich leider auch sonst auf mich alleine gestellt bin, würde ich mich freuen, wenn mir jemand für den Aufbau auf die Sprünge helfen kann.

Vielleicht kann mir jemand ein Beispiel nennen, das ähnlich meinem Problem ist? Oder ein paar Worte zu einem allgemeinen Ansatz schreiben?
whaeva
User
Beiträge: 66
Registriert: Mittwoch 25. Februar 2009, 15:30

OK ich versuche es nochmal mit konkreteren Fragen:

Ist es guter Stil, mit eigenen Exceptions (sofern das geht, "OOP mit Python" schweigt sich darüber eher aus) zu arbeiten, wenn das prinzipiell auch mit Rückgabewerten (=Fehler) funktioniert?

Funktionen/Methoden oder Objekte können mit den Modulen Thread oder Threaded als weiterer Prozess gestartet werden.
In meinem Fall soll ein Gerät zyklisch in einem Thread abgefragt werden, und das Hauptprogramm unterbrechen, bzw. dem Hauptprogramm oder einem anderen Thread eine Nachricht schicken - wie geht das?
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

Moin,
whaeva hat geschrieben:Ist es guter Stil, mit eigenen Exceptions (sofern das geht, "OOP mit Python" schweigt sich darüber eher aus) zu arbeiten, wenn das prinzipiell auch mit Rückgabewerten (=Fehler) funktioniert?
Ja, prinzipiell es ist guter Stil. Kommt aber auch auf den Kontext an. Wenn eine Funktion mir nur mitteilen soll, ob was geklappt hat, dann wäre hier eine Exception wohl oversized.
Funktionen/Methoden oder Objekte können mit den Modulen Thread oder Threaded als weiterer Prozess gestartet werden.
In meinem Fall soll ein Gerät zyklisch in einem Thread abgefragt werden, und das Hauptprogramm unterbrechen, bzw. dem Hauptprogramm oder einem anderen Thread eine Nachricht schicken - wie geht das?
Threads sind keine Prozesse. Wenn du echte Prozesse willst, dann kannst du ab Python 2.6 auf das multiprocessing-Module zurückgreifen. Eine Kommunikation zwischen Threads kannst zu z.B. über Event-Objekte steuern oder über eine Queue.

Gruß,
Manuel
whaeva
User
Beiträge: 66
Registriert: Mittwoch 25. Februar 2009, 15:30

Hi Manuel,

ich dachte Prozess = Thread. Aber egal, ich suche mal weiter nach event und qeue.
Ich glaube mittlerweile, dass das Buch eigentlich nicht besonders gut ist (OOP mit Python, 3. Auflage). Danke für deine Hilfsbereitschaft!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

whaeva hat geschrieben:Ist es guter Stil, mit eigenen Exceptions (sofern das geht, "OOP mit Python" schweigt sich darüber eher aus) zu arbeiten, wenn das prinzipiell auch mit Rückgabewerten (=Fehler) funktioniert?
Mit Fehler-Rückgabewerten zu arbeiten ist schlechter Stil. BlackJack nannte das erst letztens "Programmiersprachen-Mittelalter" und damit hat er gar nicht mal so unrecht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
whaeva
User
Beiträge: 66
Registriert: Mittwoch 25. Februar 2009, 15:30

Die Frage nach Methoden für einen übersichtlichen Programmaufbau stellt sich mir wieder, da mein "Waschmaschinenprogramm" mittlerweile 400 Zeilen hat und ich mit meinem bottom-up approach nicht besonders schnell vorankomme.
Von Threading ganz zu schweigen.

Gibt's zufällig irgendwo einen Artikel zum Thema "Programmaufbau"? Das Meiste, was ich bislang gesehen habe, ist entweder zur Syntax oder zu Algorithmen.
Kann auch gerne Englisch sein.
Antworten