From 0443ae6a587e083db400c25e52c9a2fff3d1a582 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Mon, 26 Mar 2012 00:56:16 +0200 Subject: digital/io-hub: add support for several robots --- digital/ai/tools/robospierre.py | 2 +- digital/io-hub/tools/io_hub/__init__.py | 2 +- digital/io-hub/tools/io_hub/io_hub.py | 19 ++++++++++++------- digital/io-hub/tools/io_hub/mex.py | 24 +++++++++++++----------- 4 files changed, 27 insertions(+), 20 deletions(-) (limited to 'digital') diff --git a/digital/ai/tools/robospierre.py b/digital/ai/tools/robospierre.py index 0d258b34..3b63f7ce 100644 --- a/digital/ai/tools/robospierre.py +++ b/digital/ai/tools/robospierre.py @@ -41,7 +41,7 @@ class Robot: asserv.init.host['robospierre']) self.mimot = proto (mimot.Proto, mimot_cmd, mimot.init.host['robospierre']) - self.io = proto (io_hub.Proto, io_hub_cmd, + self.io = proto (io_hub.ProtoRobospierre, io_hub_cmd, io_hub.init.host['robospierre']) self.protos = (self.asserv, self.mimot, self.io) diff --git a/digital/io-hub/tools/io_hub/__init__.py b/digital/io-hub/tools/io_hub/__init__.py index e84cb000..f46d072f 100644 --- a/digital/io-hub/tools/io_hub/__init__.py +++ b/digital/io-hub/tools/io_hub/__init__.py @@ -1,2 +1,2 @@ -from io_hub import Proto +from io_hub import * from mex import Mex diff --git a/digital/io-hub/tools/io_hub/io_hub.py b/digital/io-hub/tools/io_hub/io_hub.py index 06d237e9..bf038cf2 100644 --- a/digital/io-hub/tools/io_hub/io_hub.py +++ b/digital/io-hub/tools/io_hub/io_hub.py @@ -23,6 +23,8 @@ # }}} import proto, time +__all__ = [ 'Proto', 'ProtoRobospierre' ] + class Proto: def __init__ (self, file, time = time.time, **param): @@ -47,6 +49,16 @@ class Proto: def goto (self, x, y, backward): self.proto.send ('m', 'hhB', x, y, backward) + def close (self): + self.reset () + self.proto.wait (lambda: True) + self.proto.file.close () + + def fileno (self): + return self.proto.fileno () + +class ProtoRobospierre (Proto): + def clamp_move (self, pos): self.proto.send ('c', 'B', pos) @@ -69,11 +81,4 @@ class Proto: def clamp_openclose (self, open_): self.proto.send ('d', 'BB', 0xff, (0, 1)[open_]) - def close (self): - self.reset () - self.proto.wait (lambda: True) - self.proto.file.close () - - def fileno (self): - return self.proto.fileno () diff --git a/digital/io-hub/tools/io_hub/mex.py b/digital/io-hub/tools/io_hub/mex.py index 9b72ccde..a86a5b2d 100644 --- a/digital/io-hub/tools/io_hub/mex.py +++ b/digital/io-hub/tools/io_hub/mex.py @@ -28,10 +28,8 @@ import simu.mex.msg ADC_NB = 8 -PWM_NB = 6 PWM_VALUE_MAX = 1024 -CONTACT_NB = 10 CONTACT_INIT = 0xffffffff class Mex: @@ -200,16 +198,20 @@ class Mex: self.pos[id] = p self.notify () - def __init__ (self, node, instance = 'io-hub0'): + def __init__ (self, node, instance = 'io-hub0', + pwm_nb = 0, contact_nb = 0, codebar = False): self.adc = tuple (self.ADC (node, instance, i) for i in range (0, ADC_NB)) - self.pwm = tuple (self.PWM () for i in range (0, PWM_NB)) - self.__pwm_pack = self.PWM.Pack (node, instance, self.pwm) - self.__contact_pack = self.Contact.Pack (node, instance) - self.contact = tuple (self.Contact (self.__contact_pack, i) - for i in range (CONTACT_NB)) - self.__codebar_pack = self.Codebar.Pack (node, instance) - self.codebar = tuple (self.Codebar (self.__codebar_pack, i) - for i in (0, 1)) + if pwm_nb: + self.pwm = tuple (self.PWM () for i in range (0, pwm_nb)) + self.__pwm_pack = self.PWM.Pack (node, instance, self.pwm) + if contact_nb: + self.__contact_pack = self.Contact.Pack (node, instance) + self.contact = tuple (self.Contact (self.__contact_pack, i) + for i in range (contact_nb)) + if codebar: + self.__codebar_pack = self.Codebar.Pack (node, instance) + self.codebar = tuple (self.Codebar (self.__codebar_pack, i) + for i in (0, 1)) self.path = self.Path (node, instance) self.pos_report = self.PosReport (node, instance) -- cgit v1.2.3