Eigenes Modul / Klasse: Fremd-Modul pySerial - wie richtig?
Verfasst: Mittwoch 25. Februar 2009, 15:56
Für eine Reihe von seriell angeschlossenen Geräten brauche ich Module zur Kommunikation. Mittel der Wahl ist da wohl pySerial:
http://pyserial.wiki.sourceforge.net/pySerial
modul.py:
Die Klasse bekommt eine Methode in der der Port geöffnet wird und wo dann die Kommunikation stattfindet. Die Instanz liefert dann z.B. ein tuple mit Werten
Leider habe ich praktisch noch keine Erfahrung mit OO, deshalb würde ich mich über ein paar Tipps freuen, wie man das Ganze "besser" lösen kann (ich habe das ungute Gefühl, dass das geht :-).
Z.B. frage ich mich, ob es nötig ist, jedesmal den Port neu zu öffnen - in der Hinsicht, dass diese Module später mal irgendwie als Threads zusammenwerkeln sollen und dann quasi ständig aktiv sind.
Da muss ich mich noch einlesen.
Die unmittelbarere Frage ist, ob der Weg, innerhalb meiner Klasse eine Instanz von pySerial zu erzeugen, der richtige ist - unter welchen Umständen würde man pySerial "erweitern"?
Ist es ratsam, die Daten als Rückgabewert zu übergeben, oder sollten lieber Attribute verwendet werden? Oder sogar ein eigenes Objekt zur Datenübergabe?
Lassen sich Shebang, Kommentare und Docstring so gemischt in einem Modul benutzen?
http://pyserial.wiki.sourceforge.net/pySerial
modul.py:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# kommentar
"""
docstring
"""
import sys
import serial
class Device(object):
"""
docstring
"""
def __init__(self, port):
self.serial = serial.Serial() # pySerial
self.serial.port = port
self.serial.baudrate = 19200
self.serial.timeout = 2 # seconds
self.serial.bytesize = serial.EIGHTBITS
self.serial.parity = serial.PARITY_NONE
self.serial.stopbits = serial.STOPBITS_ONE
...
Code: Alles auswählen
dev = Device("/dev/ttyS0")
dev.read()
-> (datum1, datum2, ..)
Z.B. frage ich mich, ob es nötig ist, jedesmal den Port neu zu öffnen - in der Hinsicht, dass diese Module später mal irgendwie als Threads zusammenwerkeln sollen und dann quasi ständig aktiv sind.
Da muss ich mich noch einlesen.
Die unmittelbarere Frage ist, ob der Weg, innerhalb meiner Klasse eine Instanz von pySerial zu erzeugen, der richtige ist - unter welchen Umständen würde man pySerial "erweitern"?
Ist es ratsam, die Daten als Rückgabewert zu übergeben, oder sollten lieber Attribute verwendet werden? Oder sogar ein eigenes Objekt zur Datenübergabe?
Lassen sich Shebang, Kommentare und Docstring so gemischt in einem Modul benutzen?