summaryrefslogtreecommitdiff
path: root/digital/io
diff options
context:
space:
mode:
authorNicolas Schodet2008-06-09 23:10:22 +0200
committerNicolas Schodet2008-06-09 23:10:22 +0200
commit9ff05ac3625c727556ec7583a6844bbf8439f742 (patch)
treed09d552213454f930682af03bd666df135716e51 /digital/io
parentd981b201c53226c3c900dc486bf8d7360c93be26 (diff)
* digital/io/tools:
- added first version of test_simu.py without io.
Diffstat (limited to 'digital/io')
-rw-r--r--digital/io/tools/test_simu.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/digital/io/tools/test_simu.py b/digital/io/tools/test_simu.py
new file mode 100644
index 00000000..b6bae7b2
--- /dev/null
+++ b/digital/io/tools/test_simu.py
@@ -0,0 +1,63 @@
+import sys
+sys.path.append (sys.path[0] + '/../../../host')
+sys.path.append (sys.path[0] + '/../../asserv/tools')
+
+import mex.hub
+import utils.forked
+
+from asserv import Asserv
+import asserv.init
+from proto.popen_io import PopenIO
+
+from inter.inter_node import InterNode
+from Tkinter import *
+
+class TestSimu (InterNode):
+ """Inter, with simulated programs."""
+
+ robot_start_pos = ((200, 2100 - 70, -90),
+ (3000 - 200, 2100 - 70, -90))
+
+ def __init__ (self, asserv_cmd, io_cmd):
+ # Hub.
+ self.hub = mex.hub.Hub (min_clients = 2)
+ self.forked_hub = utils.forked.Forked (self.hub.wait)
+ # InterNode.
+ InterNode.__init__ (self)
+ def time ():
+ return self.node.date / self.TICK
+ # Asserv.
+ self.asserv = Asserv (PopenIO (asserv_cmd), time, **asserv.init.host)
+ self.asserv.async = True
+ self.tk.createfilehandler (self.asserv, READABLE, self.asserv_read)
+ # Color switch.
+ self.change_color ()
+ self.colorVar.trace_variable ('w', self.change_color)
+
+ def close (self):
+ self.forked_hub.kill ()
+ import time
+ time.sleep (1)
+ app.asserv.close ()
+
+ def asserv_read (self, file, mask):
+ self.asserv.proto.read ()
+ self.asserv.proto.sync ()
+
+ def step (self):
+ """Overide step to handle retransmissions, could be made cleaner using
+ simulated time."""
+ InterNode.step (self)
+ self.asserv.proto.sync ()
+
+ def change_color (self, *dummy):
+ i = self.colorVar.get ()
+ self.asserv.set_simu_pos (*self.robot_start_pos[i]);
+
+if __name__ == '__main__':
+ app = TestSimu (('../../asserv/src/asserv/asserv.host', '-m', 'giboulee'),
+ ('../src/io.host'))
+ try:
+ app.mainloop ()
+ finally:
+ app.close ()