DobotDll.dll
- Native Bibliothek (Windows-DLL) fuer den Zugriff auf den Roboter.
- Wird zur Laufzeit durch Python geladen.
- Muss zur Python-Architektur passen (32-Bit oder 64-Bit).
Grundlagen, Startbeispiel und typische Fehlerquellen beim Einsatz mit Python
Um den Dobot Magician aus Python zu steuern, werden zwei Ebenen benoetigt:
die native Windows-Bibliothek DobotDll.dll und die Python-Datei
DobotDllType.py, die diese Bibliothek kapselt.
dein Python-Programm
-> DobotDllType.py
-> DobotDll.dll
-> USB / serielle Verbindung
-> Dobot Magician
Kurz gesagt: DobotDll.dll spricht mit der Hardware,
DobotDllType.py macht diese Funktionen in Python nutzbar.
DobotDll.dllDobotDllType.pyimport DobotDllType as dType eingebunden.In unseren Projekten hat sich folgende Struktur bewaehrt:
Dobot-Projekt/
|- mein_programm.py
|- sdk64/
| |- DobotDllType.py
| |- DobotDll.dll
|- sdk32/
|- DobotDllType.py
|- DobotDll.dll
Das folgende Beispiel `mein_programm.py` registriert den DLL-Ordner sauber und baut danach die Verbindung auf.
from pathlib import Path
import os
from sdk64 import DobotDllType as dType
sdk_verzeichnis = Path(__file__).resolve().parent / "sdk64"
os.add_dll_directory(str(sdk_verzeichnis))
api = dType.load()
COM_PORT = "COM10"
zustand = dType.ConnectDobot(api, COM_PORT, 115200)
if zustand[0] == dType.DobotConnect.DobotConnect_NoError:
print("Dobot verbunden")
print(" - Seriennummer: ",dType.GetDeviceSN(api))
print(" - Positionsangaben: ",dType.GetPose(api))
else:
print("Verbindung fehlgeschlagen:", zustand)
dType.DisconnectDobot(api)
Bei dieser Variante kann DobotDll.dll in sdk64 liegen,
ohne dass sie im Systempfad eingetragen werden muss.
Befindet sich das folgende Beispiel `start.py` in einem Projektordner `projekt_01`, sind weitere Schritte notwendig, um die DLL korrekt zu laden.
Dobot-Projekt/
|- mein_programm.py
|- projekt_01/
|- start.py
|- ...
|- sdk64/
| |- DobotDllType.py
| |- DobotDll.dll
|- sdk32/
|- DobotDllType.py
|- DobotDll.dll
Das Beispiel zeigt, wie der Projektordner und der DLL-Ordner registriert werden.
from pathlib import Path
from pathlib import Path
import os
import platform
import sys
PROJEKTORDNER = Path(__file__).resolve().parent.parent
if str(PROJEKTORDNER) not in sys.path:
sys.path.insert(0, str(PROJEKTORDNER))
sdk_verzeichnis = PROJEKTORDNER / "sdk64"
dll_datei = sdk_verzeichnis / "DobotDll.dll"
from sdk64 import DobotDllType as dType
dll_verzeichnis_handle = os.add_dll_directory(str(sdk_verzeichnis))
COM_PORT = "COM10"
try:
api = dType.load()
zustand = dType.ConnectDobot(api, COM_PORT, 115200)
if zustand[0] != dType.DobotConnect.DobotConnect_NoError:
print("Verbindung fehlgeschlagen:", zustand)
sys.exit()
except Exception as fehler:
print("FEHLER beim Laden der DobotDll.dll:")
print(type(fehler).__name__ + ":", fehler)
sys.exit(1)
print("Dobot verbunden")
print(" - Seriennummer: ",dType.GetDeviceSN(api))
print(" - Positionsangaben: ",dType.GetPose(api))
dType.DisconnectDobot(api)
Die DobotDll.dll im sdk64 muss im Systempfad eingetragen werden.
FileNotFoundError: Could not find module 'DobotDll.dll'DobotDllType.py klappt, Laden der DLL aber nicht.os.add_dll_directory() registriert?Vor jeder Bewegung sollten Arbeitsraum, Werkzeug und Z-Hoehe geprueft werden. Tests zuerst mit kleinen Geschwindigkeiten und in sicherer Distanz durchfuehren.
Zurueck zur Uebersicht: Dobot Magician Projekte