aboutsummaryrefslogtreecommitdiff
path: root/scratchpad.py
diff options
context:
space:
mode:
authorWolfgang Draxinger <Wolfgang.Draxinger@draxit.de>2011-12-02 18:17:56 +0100
committerWolfgang Draxinger <Wolfgang.Draxinger@draxit.de>2011-12-02 18:17:56 +0100
commit190d12960af991304da22bbec5522eea0e438689 (patch)
treed3342d14875a5f6411038ac8bb6924911020e31f /scratchpad.py
downloadPyMotionControl-190d12960af991304da22bbec5522eea0e438689.tar.gz
PyMotionControl-190d12960af991304da22bbec5522eea0e438689.tar.bz2
other scratchpad
Diffstat (limited to 'scratchpad.py')
-rw-r--r--scratchpad.py85
1 files changed, 85 insertions, 0 deletions
diff --git a/scratchpad.py b/scratchpad.py
new file mode 100644
index 0000000..4154651
--- /dev/null
+++ b/scratchpad.py
@@ -0,0 +1,85 @@
+# -*- coding: utf-8 -*-
+
+import Queue
+import threading
+
+class Action:
+ EXECUTING = 0
+ FINISHED = 1
+ ABORTED = 2
+ def execute(self):
+ self.aborted = False
+ self.do_execute()
+
+ def ended(self):
+ if self.aborted:
+ return True
+ return do_ended()
+
+ def abort(self):
+ self.do_abort()
+ self.aborted = True
+
+ def do_execute():
+ raise NotImplementedError
+
+ def do_abort():
+ raise NotImplementedError
+
+ def do_ended():
+ raise NotImplementedError
+
+
+class ActionMotion(Action):
+ def __init__(self, axes, target, speed = None):
+ if len(axes) != len(target):
+ raise ValueError()
+ if speed and len(speed) != len(axes):
+ raise ValueError()
+
+ self.axes = axes
+ self.target_position = target
+ self.motion_speed = speed
+
+ def do_execute(self):
+ for i, axis enumerate(self.axes):
+ if self.speed:
+ axis.
+
+class ActionExecuter(threading.Thread)
+ def __init__(self, action):
+ self.action = action
+
+ def start(self):
+ import threading, weakref
+ self.running = True
+ self.worker_thread = threading.Thread(target=ActionExecuter.run, args=(weakref.proxy(self),))
+
+ def abort(self):
+ self.running = False
+ self.worker_thread.join()
+
+ def run(self):
+ action = self.action
+ try:
+ action.execute()
+ except ReferenceError:
+ action.abort()
+
+
+class MotionControl(object):
+ def __init__(self, name):
+ self.name = name
+ self.active = True
+ self.worker_thread = threading.Thread(target = self.workerLoop, name = "MotionControl.worker_thread")
+ self.worker_thread.setDaemon(True)
+ self.worker_thread.start()
+
+ def __del__(self):
+
+ def workerLoop(self):
+ import time
+ while self.active:
+ print self.name
+ time.sleep(1)
+