Hallo zusammen, als nicht Informatiker gibt es Dinge die ich erst einmal nicht verstehe. Dann wird gesucht und "learning by doing" gemacht. Aber zu bestimmten Fragen finde ich einfach keine Antwort, darum dachte ich "Frag mal jemand der das gelernt hat". Sollte ich Begriffe wie "Funktion, Methode" durcheinander würfeln bitte ich nachsichtige Korrektur ;) 1. In diversen Quellen wird für Windows-DLLs ein Wrapper geschrieben z.B. ftd2xx... In allen Beispielen die ich bisher gesehen habe wurden die DLL-Funktionen als _einzelne_ Funktionen eingebunden und nicht als Methode einer Klasse, warum??? Mir erschien es sinnvoll eine DLL mit Ihren Funktionen in eine Klasse zu legen. Gibt es Nachteile, widerspricht das irgendeiner Regel, was gibt es zu beachten, ...? 2. Wie lädt man die Funktionen der DLL korrekt, sauber, elegant? Begonnen habe ich so: (Ich habe die Methoden in eine Klasse gelegt siehe 1. darum das "self") def __init__(self): self.__dllObject = windll.LoadLibrary("diomgr") self.DIOMGR_Setup = self.__dllObject.DIOMGR_Setup self.DIOMGR_Setup.argtypes=[ c_int, c_char_p, POINTER(c_long ), POINTER(c_short), POINTER(c_long ), c_char_p ] ... und dann gab es eine Methode der class DIOMGR: def Setup(self,ben): self.benchName = tool.GetStringBuffer(ben) self.DIOMGR_Setup( self.seqCon, self.benchName, byref(self.resourceID), self.pErrorOccurred, self.pErrorCode, self.errorMessage) ... Dann habe ich folgende "Schreibweise" gefunden: Setup_Para = par_cao + ((1, "pBench", None), (1,"pID",byref(self.RID)), ) + par_err Setup_Proto = WINFUNCTYPE ( None, *( pro_cao + (c_char_p, POINTER(c_long), ) + pro_err ) ) _self._Setup = Setup_Proto (("DIOMGR_Setup", __dllOb), Setup_Para)_ Diese Schreibweise finde ich wegen der "named Parameter" und den Default Parametern eleganter, Frage ist: "Macht es Sinn?", wo sind die "Fallstricke" Was ist besser/korrekter, geht es eleganter? So etwa "dict of para, dict of proto, function friss beides => Ergebnis dict of function" und wie funktioniert der call? Ich habe ca. 10-20 DLLs die ich in Python einbinden will und habe keine! Probleme damit den Kram komplett, auch mehrfach umzuschreiben (UltraEdit ist da eine grosse Hilfe, oder perl, oder...), ich möchte halt wissen warum, was bringt es und es muss (sofern das möglich ist) "Bomben fest" laufen. Ein entspanntes WE (sofern das am 14.12. möglich ist) Ralf
participants (1)
-
Scherer Ralf