Probleme mit der IP Adresse
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
ctypes gibt es für Python 2.3, für ältere Python-Versionen nicht mehr. Aber 2.2 ist schon uralt, du solltest inzwischen mindestens 2.5 nutzen, wo es schon dabei ist oder gleich 2.6, was aktuell ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
http://www.python.org wäre doch gar nicht abwegig. Alternativ hättest du auch eine Suchmaschine befragen können.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hallo zusammen
ich habe jetzt python 2.5 und habe auch meine tmctl.dll registriert. also wenn windows hochläuft müsste mein pc diese dll erkennen.
ich habe mal einer der beispiele probiert,
aber er findet fehler in der zeile
tmctl=ctypes.windll.tmctl
er sagt er findet das modul nicht.
Ihr habt auch gesagt, dass ich eine header datei dazu brauche und eine API. Ich habe eine tmctl.h und eine TmctlAPINet.dll soll ich die auch registrieren ? sind das überhaupt die richtigen dateien
folgendes beispiel habe ich probiert:
ich habe jetzt python 2.5 und habe auch meine tmctl.dll registriert. also wenn windows hochläuft müsste mein pc diese dll erkennen.
ich habe mal einer der beispiele probiert,
aber er findet fehler in der zeile
tmctl=ctypes.windll.tmctl
er sagt er findet das modul nicht.
Ihr habt auch gesagt, dass ich eine header datei dazu brauche und eine API. Ich habe eine tmctl.h und eine TmctlAPINet.dll soll ich die auch registrieren ? sind das überhaupt die richtigen dateien
folgendes beispiel habe ich probiert:
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('172.28.12.145, anonymous')
id_ = ctypes.c_int()
ret = tmc_initialize(wire, adr, ctypes.byref(id_))
print ret, id_.value
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
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
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