Versionsdaten
Ziel der Version
Version 3.1 machte aus einer ausschließlich automatisch laufenden Queue eine während der Ausführung bedienbare Befehlskette. Die Dobot-Bewegungen blieben weiterhin Queue-Befehle; zusätzlich entstand jedoch eine unabhängige Tastatureingabe.
Wesentlicher Entwicklungsschritt: Der Nutzer konnte die laufende Befehlskette erstmals anhalten, fortsetzen, endgültig abbrechen und ihren Zustand abfragen.
Änderungen und Erweiterungen
- Ein eigener Daemon-Thread liest Tastatureingaben, ohne die Dobot-Ausführungsschleife zu blockieren.
- Die Tastatur schreibt ausschließlich in eine
queue.Queue. Nur die Hauptschleife greift aufDobotDllType.pyund damit auf den Dobot zu. - Neue Steuerbefehle:
pfür Pause,wfür Weiter,hfür Halt und?für Status. - Die Funktion
befehlskette_ausfuehren_steuerbar()ergänzt die bisherige automatische Ausführung. - Der jeweils nächste Bewegungsbefehl wird vor seiner Ausführung mit Text und Queue-Index angekündigt.
- Die bereits vorhandenen individuellen Pausen bleiben echte Dobot-Queue-Befehle und werden nicht mit
time.sleep()erzeugt. - Die während einer Bedienpause verstrichene Zeit wird nicht als reguläre Ausführungszeit behandelt.
- Nach einem Halt wird die Befehlskette nicht fortgesetzt; der Zustand lautet dauerhaft
Halt.
Bedienung
p + Enter Pause
w + Enter Weiter
h + Enter Halt
? + Enter Status
Die Statusabfrage zeigt den aktuellen Betriebszustand sowie den aktuellen und den letzten Queue-Index.
Technische Umsetzung
Die Trennung zwischen Eingabe und Robotersteuerung war sicherheitsrelevant:
- Der Tastaturthread liest nur Zeichen ein.
- Er legt den Steuerbefehl in einer gemeinsamen Queue ab.
- Die Hauptschleife entnimmt den Befehl.
- Erst die Hauptschleife führt
SetQueuedCmdStopExec(),SetQueuedCmdStartExec()oderSetQueuedCmdForceStopExec()aus.
Damit gab es nur eine Stelle, die gleichzeitig mit der Dobot-API arbeitete.
Bekannte Probleme und Grenzen
- Ein Halt ist absichtlich endgültig. Vor einem Neustart müssen Dobot, Werkzeug und Arbeitsbereich kontrolliert und gegebenenfalls in eine sichere Ausgangsstellung gebracht werden.
- Für den sofortigen Halt wird
SetQueuedCmdForceStopExec()benötigt. Fehlt diese Funktion in der verwendetenDobotDllType.py, kann der Halt nicht wie vorgesehen ausgeführt werden. - Ein Dobot-Alarm führte weiterhin zu einer Ausnahme und damit zum Abbruch des normalen Programmlaufs; ein kontrollierter Fehlerbetrieb war noch nicht vorhanden.
- Steuerbefehle konnten nur über die PC-Tastatur eingegeben werden. Externe Geräte waren noch nicht angebunden.
- Der Eingabethread wartet intern auf
input(). Als Daemon-Thread verhindert er zwar nicht das Programmende, lässt sich aber nicht wie ein normaler nicht blockierender Eingabekanal behandeln.
Bedeutung für die weitere Entwicklung
Version 3.1 führte die zentrale Steuerbefehls-Queue ein. Diese Architektur war später die Voraussetzung dafür, Tastatur, ESP32-COM und weitere Steuerquellen zusammenzuführen.