DobotDll.dll und DobotDllType.py

Grundlagen, Startbeispiel und typische Fehlerquellen beim Einsatz mit Python

Warum diese beiden Dateien wichtig sind

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.

Aufgabe der einzelnen Dateien

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).

DobotDllType.py

  • Python-Wrapper um die Funktionen der DLL.
  • Enthaelt Datentypen, Konstanten, Modi und API-Funktionen.
  • Wird im Code meist als import DobotDllType as dType eingebunden.

Empfohlene Ordnerstruktur

In unseren Projekten hat sich folgende Struktur bewaehrt:

Dobot-Projekt/
|- mein_programm.py
|- sdk64/
|  |- DobotDllType.py
|  |- DobotDll.dll
|- sdk32/
   |- DobotDllType.py
   |- DobotDll.dll

Minimales Startbeispiel (Windows, 64-Bit)

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.

Erweitertes Startbeispiel (Windows, 64-Bit)

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.

Typische Fehler und schnelle Pruefung

Fehlerbild

  • FileNotFoundError: Could not find module 'DobotDll.dll'
  • Import von DobotDllType.py klappt, Laden der DLL aber nicht.
  • Verbindung wird nicht hergestellt, obwohl COM-Port vorhanden ist.

Pruefpunkte

  • Passt 32/64-Bit von Python und DLL zusammen?
  • Liegt die DLL wirklich im erwarteten Ordner?
  • Wurde der DLL-Ordner mit os.add_dll_directory() registriert?
  • Ist der Roboter eingeschaltet und per USB korrekt verbunden?
Gute Praxis: zuerst nur Laden und Verbinden testen, danach erst Bewegungsbefehle einbauen.

Weiterfuehrende Seiten

Hinweis zur Sicherheit

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