Was heißt denn registriert? Hast Du die DLL in einem Verzeichnis des path stehen? Kopier die DLL doch einmal in das Verzeichnis Deines Python-Scripts.
Das Test-Beispiel müsste eigentlich auch mit der tmctl.dll allein funktionieren. Die Header-Datei dient eher dazu, die Aufrufkonventionen der Funktionen zu kennen. Die sind aber schon aus der von BlackJack gelinkten Anleitung bekannt.
MfG
HWK
Probleme mit der IP Adresse
Habe ich bereits gemacht. trotz des kopierens der dll in meinem path sagt er mir das modul ist nicht vorhanden.
ich erkenn das auch wenn ich bei der zeile:
tmctl = ctypes.windll.tmctl
den zweiten punkt schreibe, dann gibt er mir zur auswahl LoadLibrary und Kernel32 an aber nicht meine tmctl. was mache ich falsch.
ich erkenn das auch wenn ich bei der zeile:
tmctl = ctypes.windll.tmctl
den zweiten punkt schreibe, dann gibt er mir zur auswahl LoadLibrary und Kernel32 an aber nicht meine tmctl. was mache ich falsch.
Zur besseren veranschaulichung hier die fehlermeldung:
Code: Alles auswählen
Traceback (most recent call last):
File "C:\Program Files\Common Files\dSPACE\Python25\lib\site-packages\Pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript
exec codeObject in __main__.__dict__
File "J:\Turbo\ar-VTA\ane\anev\Schin\Pyhton\Programme\Beispiel.py", line 35, in <module>
tmctl = ctypes.windll.tmctl
File "C:\Program Files\Common Files\dSPACE\Python25\Lib\ctypes\__init__.py", line 415, in __getattr__
dll = self._dlltype(name)
File "C:\Program Files\Common Files\dSPACE\Python25\Lib\ctypes\__init__.py", line 340, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126] Das angegebene Modul wurde nicht gefunden
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Mit Konsole meint er die `cmd.exe'.
Testscript und DLL in einen Ordner kopieren und auf der Konsole in das Verzeichnis wechseln. Danach python.exe testscript (Oder wie auch immer das Python Executable unter Windows heisst)
Testscript und DLL in einen Ordner kopieren und auf der Konsole in das Verzeichnis wechseln. Danach python.exe testscript (Oder wie auch immer das Python Executable unter Windows heisst)
@Ingo: Skript und DLL in ein Verzeichnis kopieren, im "DOS-Fenster" in dieses Verzeichnis wechseln, so dass man die beiden Dateien bei einem ``dir`` sieht, und dort dann das Skript starten.
Ich habe den Wrapper noch ein wenig erweitert, natürlich auch wieder ungetestet: http://paste.pocoo.org/show/89390/
Vorsicht: Mir sind beim Kopieren und Einfügen irgendwie '#' in den ersten beiden Zeilen abhanden gekommen.
Ich habe den Wrapper noch ein wenig erweitert, natürlich auch wieder ungetestet: http://paste.pocoo.org/show/89390/
Vorsicht: Mir sind beim Kopieren und Einfügen irgendwie '#' in den ersten beiden Zeilen abhanden gekommen.
Zeig doch mal den Inhalt Deines Verzeichnisses und ein Screencopy Deines Konsolenfenster, wenn Du versuchst das Beispielscript aufzurufen.
Etwa so:MfG
HWK
Etwa so:
Code: Alles auswählen
C:\Programme\Python24\Scripts\tmctl>dir
Datenträger in Laufwerk C: ist Preload
Volumeseriennummer: 4472-AE50
Verzeichnis von C:\Programme\Python24\Scripts\tmctl
29.10.2008 13:55 <DIR> .
29.10.2008 13:55 <DIR> ..
29.10.2008 13:54 267 test.py
21.01.2007 21:14 11.759 tmctl.dll
2 Datei(en) 12.026 Bytes
2 Verzeichnis(se), 172.411.248.640 Bytes frei
C:\Programme\Python24\Scripts\tmctl>type test.py
import ctypes
tmctl = ctypes.windll.tmctl
tmc_initialize = tmctl.TmcInitialize
# Ethernet
wire = ctypes.c_int(4)
adr = ctypes.c_char_p('172.28.12.145, anonymous')
id_ = ctypes.c_int()
ret = tmc_initialize(wire, adr, ctypes.byref(id_))
print ret, id_.value
C:\Programme\Python24\Scripts\tmctl>test.py
Traceback (most recent call last):
File "C:\Programme\Python24\Scripts\tmctl\test.py", line 4, in ?
tmc_initialize = tmctl.TmcInitialize
File "C:\Programme\Python24\lib\site-packages\ctypes\__init__.py", line 353, in __getattr__
func = self.__getitem__(name)
File "C:\Programme\Python24\lib\site-packages\ctypes\__init__.py", line 358, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function 'TmcInitialize' not found
HWK
C:\Python_Programm>dir
Volume in Laufwerk C: hat keine Bezeichnung.
Volumeseriennummer: 40E3-7779
Verzeichnis von C:\Python_Programm
2008-10-29 15:09 <DIR> .
2008-10-29 15:09 <DIR> ..
2008-10-29 13:51 982 Beispiel.py
2008-09-26 09:10 901.120 tmctl.dll
2 Datei(en) 902.102 Bytes
2 Verzeichnis(se), 30.440.673.280 Bytes frei
C:\Python_Programm>Beispiel.py
Mein Python Script heißt Beispiel so rufe ich auf, aber was hat das mit dem Aufrufen auf sich. warum glaubst du dass das so geht und im Pythonscript nicht?
Volume in Laufwerk C: hat keine Bezeichnung.
Volumeseriennummer: 40E3-7779
Verzeichnis von C:\Python_Programm
2008-10-29 15:09 <DIR> .
2008-10-29 15:09 <DIR> ..
2008-10-29 13:51 982 Beispiel.py
2008-09-26 09:10 901.120 tmctl.dll
2 Datei(en) 902.102 Bytes
2 Verzeichnis(se), 30.440.673.280 Bytes frei
C:\Python_Programm>Beispiel.py
Mein Python Script heißt Beispiel so rufe ich auf, aber was hat das mit dem Aufrufen auf sich. warum glaubst du dass das so geht und im Pythonscript nicht?
Code: Alles auswählen
C:\Python_Programm>dir
Volume in Laufwerk C: hat keine Bezeichnung.
Volumeseriennummer: 40E3-7779
Verzeichnis von C:\Python_Programm
2008-10-29 15:09 <DIR> .
2008-10-29 15:09 <DIR> ..
2008-10-29 13:51 982 Beispiel.py
2008-09-26 09:10 901.120 tmctl.dll
2 Datei(en) 902.102 Bytes
2 Verzeichnis(se), 30.440.673.280 Bytes frei
C:\Python_Programm>Beispiel.py
Code: Alles auswählen
import ctypes
tmctl = ctypes.windll.tmctl
tmc_initialize = tmctl.TmcInitialize
# Ethernet
wire = ctypes.c_int(4)
adr = ctypes.c_char_p('server name, user name, password')
id_ = ctypes.c_int()
ret = tmc_initialize(wire, adr, ctypes.byref(id_))
print ret, id_.value
Da Dein Beispiel.py 982 Bytes groß ist, dürfte es keinen Code enthalten, der hier bisher gepostet worden wäre. Zeig ihn uns also bitte einmal. Möglicherweise befindet sich dort doch ein Fehler.
MfG
HWK
Edit: Du warst schneller. Das ist aber nicht das Beispiel.py aus Deinem Verzeichnis, denn dies hier ist nur 277 Bytes groß. Du möchtest scheinbar kein Hilfe?
Edit2: Schreibfehler korrigiert.
MfG
HWK
Edit: Du warst schneller. Das ist aber nicht das Beispiel.py aus Deinem Verzeichnis, denn dies hier ist nur 277 Bytes groß. Du möchtest scheinbar kein Hilfe?
Edit2: Schreibfehler korrigiert.
Zuletzt geändert von HWK am Mittwoch 29. Oktober 2008, 19:32, insgesamt 1-mal geändert.
doch natürlich möchte ich hilfe ich habe noch alte sachen drin, die aber auskommentiert sind also das dürfte doch wohl nix machen.
Was meint ihr mit Zieg ihn uns. das ist der ganze Code der rest ist nur altes auskommetiertes zeug
Was meint ihr mit Zieg ihn uns. das ist der ganze Code der rest ist nur altes auskommetiertes zeug
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Naja, evtl. ist da halt doch noch etwas anderes drin, was nicht auskommentiert ist. Und Vor allem sagt das ja nichts darüber aus, ob der "einkommentierte" Teil exakt so ist, wie der von Dir hier gepostet
Was ich bei dieser ganzen Sache nicht verstehe ist die drastische Wendung: Zunächst einmal hieß es, dass in deinem Messgerät irgend ein Server sitzt, den man per irgend einem Protokoll ansprechen kann. Bevor das abschließend geklärt wurde hieß es von Dir, dass man eine DLL einbinden müsse und darufhin landeten wir hier. Ist der erste Punkt denn abschließend geklärt und unbrauchbar? Mich wunderte zwar die Aussage, dass da ein FTP-Server drin stecken würde, aber ok ... hätte man ja einfach mal testen können! Auch die Archtitekturfrage von Leonidas hast Du iirc nocht nicht beantwortet. Evtl. bringt es ja doch mehr Klarheit im Gesamtkonezpt diese Dinge noch einmal sauber, ausführlich und vor allem präzise abzuklären.
Was ich bei dieser ganzen Sache nicht verstehe ist die drastische Wendung: Zunächst einmal hieß es, dass in deinem Messgerät irgend ein Server sitzt, den man per irgend einem Protokoll ansprechen kann. Bevor das abschließend geklärt wurde hieß es von Dir, dass man eine DLL einbinden müsse und darufhin landeten wir hier. Ist der erste Punkt denn abschließend geklärt und unbrauchbar? Mich wunderte zwar die Aussage, dass da ein FTP-Server drin stecken würde, aber ok ... hätte man ja einfach mal testen können! Auch die Archtitekturfrage von Leonidas hast Du iirc nocht nicht beantwortet. Evtl. bringt es ja doch mehr Klarheit im Gesamtkonezpt diese Dinge noch einmal sauber, ausführlich und vor allem präzise abzuklären.