Verständnisproblem module

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
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

Hi,
ich glaube ich mache mir das Leben einfach zu schwer. Ich möchte mir ein kleines Modul schreiben das sich mit Hilfe von PySerial über den Seriellen Port unterhält. Dieses Modul wird eine Verbindung herstellen, diese Verbindung speichern, und bei Gelegenheit über diese Verbindung Daten senden oder empfangen. Außerdem wird es wohl ein paar Daten (Strings und Zahlen) bereithalten die für das Kommunikationsprotokoll notwendig sind. Theoretisch sind das also nur ein paar Variablen die ich in dem Modul ablegen muss und ein paar Funktionen (Verbindung öffnen, schließen, daten senden...).

Mein Problem ist momentan einfach nur das Vorhalten der Seriellen Verbindung, die ja irgendwo gespeichert werden muss. Mir fallen ein paar Möglichkeiten ein wie ich das machen könnte.

1. OOP - Ich erstelle mir eine Klasse für das Ganze Modul. Die Verbindung wäre in diesem Fall einfach ein Attribut. So kann ich zu jeder Zeit darauf zugreifen. Allerdings scheint mir das nicht unbedingt notwendig das so zu erledigen.

2. Beim erstellen der Verbindung wird die serielle Verbindung als Rückgabewert zurückgegeben und ich übergebe die Verbindung den Funktionen die damit arbeiten sollen (daten senden, daten empfangen)

3. Die Verbindung wird als globale Variable im Modul abgelegt. So können alle Funktionen darauf zugreifen. Funktionen die die Verbindung öffnen oder schließen sollen müssen auf diese via `global` zugreifen.


bisher hätte ich das mit OOP erschlagen, da ich mich da recht wohl fühle. Allerdings gefällt mir Variante 3 immer besser, da das wesentlich weniger Code ergeben sollte. Allerdings lese ich hier im Forum zwischenzeitlich ein wenig mit, und weiß das ich `global` nicht verwenden soll. Vielleicht gibt es ja noch eine Möglichkeit die ich übersehe? Was wäre eine ordentliche Variante?

schon mal Danke für eure Ideen
Sebastian
BlackJack

@Lonestar: Ich würde OOP nehmen, denn es kann ja mehr als eine serielle Verbindung geben und wenn man das "global" im Modul ablegt, dann verbaut man sich (und vielleicht anderen) diese Möglichkeit.
deets

Ich wuerde das in jedem Fall OO-stylisch loesen. Denn die ideale API sieht ja sicher so aus, dass der Benutzer deines Moduls sich um die Details der Kommunikation keinen Kopf machen muss. Und insofern kannst du mittels OO schon am besten abstrahieren.

Und was ist denn ein permanent durchgereichter erster parameter "connection" anderes, als OO fuer arme? ;) Da nutz doch lieber die eingebauten Moeglichkeiten.

Und die globale Loesung ist deswegen doof, weil du - potentiell - ja mehrere serialle Verbindungen aufbauen koenntest.
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

danke für eure Rückmeldungen. Dann werde ich das doch mal so machen wie ich es von Anfang an vor hatte. Immerhin habe ich mal drüber nachgedacht was es für alternativen gibt :roll: auch wenn ich alles beim alten belassen habe...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Gut, dass wir drüber geredet haben :roll:
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

Leonidas hat geschrieben:Gut, dass wir drüber geredet haben :roll:
das erinnert mich ein wenig an so etwas :roll: http://www.youtube.com/watch?v=JAReq4WMmqI

...ach Simpsons passen einfach immer irgendwie...
Antworten