diff --git a/lib/python/labcomm2014/LabComm.py b/lib/python/labcomm2014/LabComm.py index 4b536ace9e7ffb626d1c17385e94ecbe337fd467..98981275e0edc14e79004686fe6b13b2397cebca 100644 --- a/lib/python/labcomm2014/LabComm.py +++ b/lib/python/labcomm2014/LabComm.py @@ -874,7 +874,11 @@ class Decoder(Codec): super(Decoder, self).__init__() self.reader = reader self.version = version - + self.handlers = {} + + def register_handler(self, sig, handler): + self.handlers[str(sig)] = handler + def unpack(self, format): size = packer.calcsize(format) data = "" @@ -903,6 +907,17 @@ class Decoder(Codec): else: raise Exception("Invalid type index %d" % index) + def runOne(self): + data,decl = self.decode() + if decl: + if data: + if str(decl) in self.handlers: + handler = self.handlers[str(decl)] + handler(data) + else: + print ("No handler for %s" % decl.name ) + + def decode(self): while True: index = self.decode_type_number()