From 9ff05ac3625c727556ec7583a6844bbf8439f742 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Mon, 9 Jun 2008 23:10:22 +0200 Subject: * digital/io/tools: - added first version of test_simu.py without io. --- digital/io/tools/test_simu.py | 63 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 digital/io/tools/test_simu.py (limited to 'digital/io/tools') 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 () -- cgit v1.2.3