class CommandMessage(object): OPERATION_UNKN = 0 OPERATION_START = 1 OPERATION_STOP = 2 OPERATION_RESET = 4 def __init__(self): self.payload = Payload(None, True) self.payload.set_control() self.payload.set_command('E') self.frame = Frame(self.payload) self.frame.set_terminating(True) self.message = Message() self.message.add_frame(self.frame) self._operation = self.OPERATION_UNKN def get_message(self): return self.message def set_operation(self, op): op = int(op) if not op in [ self.OPERATION_START, self.OPERATION_STOP, self.OPERATION_RESET ]: raise ValueError("operation not defined") self._operation = op str_op = str(op).zfill(2) self.payload.set_parameter(0, str_op) def __str__(self): return "CommandMessage: {}".format(self._operation)
class ReadOptionFuncMessage(object): def __init__(self): self.payload = Payload(None, True) self.payload.set_query() self.payload.set_command('=') self.frame = Frame(self.payload) self.message = Message() self.message.add_frame(self.frame) def get_message(self): return self.message def __str__(self): return "ReadOptions"
class ReadMeasMessage(object): def __init__(self): self.payload = Payload(None, True) self.payload.set_query() self.payload.set_command('D') self.frame = Frame(self.payload) self.message = Message() self.message.add_frame(self.frame) self.message.finish() def get_message(self): return self.message def __str__(self): return "ReadMeasurement"
class SetOptionFuncMessage(object): REMOTE_OPERATION_MODE_X2 = 0x01 REMOTE_OPERATION_MODE_X3 = 0x02 REMOTE_OPERATION_MODE_X5 = 0x05 REMOTE_OPERATION_MODE_POWER_SUPPLY = 0x06 REMOTE_OPERATION_MODE_COMMUNICATION_UNIT = 0x07 def __init__(self, readresponse): if not isinstance(readresponse, ReadOptionFuncResponse): raise TypeError( "resonse must be an instance of ReadOptionFuncResponse") read_payload = readresponse.get_response().get_frame( 0).get_payload().get_raw() self.payload = Payload(read_payload, True) self.payload.set_control() self.payload.set_command('=') self.frame = Frame(self.payload) self.message = Message() self.message.add_frame(self.frame) def set_remote_operation_mode(self, mode): mode = int(mode) if not mode in [ self.REMOTE_OPERATION_MODE_X2, self.REMOTE_OPERATION_MODE_X3, self.REMOTE_OPERATION_MODE_X5, self.REMOTE_OPERATION_MODE_POWER_SUPPLY, self.REMOTE_OPERATION_MODE_COMMUNICATION_UNIT ]: raise ValueError("mode not defined") str_mode = str(mode).zfill(2) self.payload.set_parameter(0, str_mode) def get_message(self): return self.message def __str__(self): return "SetOptions"