Probleme mit der IP Adresse

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.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

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
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

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.
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

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
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Kopiere doch einmal Dein Testscript und die DLL in ein Verzeichnis und starte das Script aus der Konsole, nicht aus einer IDE o.ä.
MfG
HWK
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

Was meinst du mit konsole und was meinst du mit ide?
Benutzeravatar
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)
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

ich habe alles in einem ordner meint ihr mit cmd.exe mein dos fenster oder das command fenster von python?
BlackJack

@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.
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

Geht leider auch nicht was kann ich tun?
wenn die initialisierung net geht dann siehts schlecht für mich aus.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Zeig doch mal den Inhalt Deines Verzeichnisses und ein Screencopy Deines Konsolenfenster, wenn Du versuchst das Beispielscript aufzurufen.
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
MfG
HWK
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

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?
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

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
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Zeig bitte einmal Beispiel.py und die Ausgabe nach Starten von Beispiel.py.
MfG
HWK
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

Sobald ich Beispie.py eingebe öffnet er mir nur Python win.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Lies die FAQ, Punkt "Wie starte ich Skripte".
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

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
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

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? :wink:

Edit2: Schreibfehler korrigiert.
Zuletzt geändert von HWK am Mittwoch 29. Oktober 2008, 19:32, insgesamt 1-mal geändert.
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

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
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Warum zeigst Du nicht einfach einmal den Code von Beispiel.py und die Ausgabe, wenn Du das Script aufrufst?
MfG
HWK
Benutzeravatar
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.
Antworten