def execute(self, *args): """ Execute the diagnostic request on the given device :returns: The initialized response message """ # if _MCB.isListenOnly(): register = pack_bitstring(_MCB.get_diagnostic_register()) return ReturnDiagnosticRegisterResponse(register)
def encode(self): """ Encodes response pdu :returns: The encoded packet message """ result = pack_bitstring(self.bits) packet = struct.pack('>B', len(result)) + result return packet
def encode(self): """ Encodes the status bits to an event message :returns: The encoded event message """ bits = [False] * 3 bits += [self.overrun, self.listen, self.broadcast, True] packet = pack_bitstring(bits) return packet
def encode(self): """ Encodes write coils request :returns: The byte encoded message """ count = len(self.values) self.byte_count = (count + 7) // 8 packet = struct.pack('>HHB', self.address, count, self.byte_count) packet += pack_bitstring(self.values) return packet
def add_bits(self, values): """ Adds a collection of bits to be encoded If these are less than a multiple of eight, they will be left padded with 0 bits to make it so. :param values: The value to add to the buffer """ value = pack_bitstring(values) self._payload.append(value)
def encode(self): """ Encodes the status bits to an event message :returns: The encoded event message """ bits = [ self.read, self.slave_abort, self.slave_busy, self.slave_nak, self.write_timeout, self.listen ] bits += [True, False] packet = pack_bitstring(bits) return packet
def encode(self): """ Encodes the status bits to an event message :returns: The encoded event message """ bits = [self.read, self.slave_abort, self.slave_busy, self.slave_nak, self.write_timeout, self.listen] bits += [True, False] packet = pack_bitstring(bits) return packet
def from_coils(cls, coils, endian=Endian.Little): """ Initialize a payload decoder with the result of reading a collection of coils from a modbus device. The coils are treated as a list of bit(boolean) values. :param coils: The coil results to initialize with :param endian: The endianess of the payload :returns: An initialized PayloadDecoder """ if isinstance(coils, list): payload = pack_bitstring(coils) return cls(payload, endian) raise ParameterException('Invalid collection of coils supplied')
def test_bit_packing(self): """ Test all string <=> bit packing functions """ self.assertEqual(unpack_bitstring(b'\x55'), self.bits) self.assertEqual(pack_bitstring(self.bits), b'\x55')