Exemple #1
0
 def test_payload_builder_reset(self):
     """ Test basic bit message encoding/decoding """
     builder = BinaryPayloadBuilder()
     builder.add_8bit_uint(0x12)
     builder.add_8bit_uint(0x34)
     builder.add_8bit_uint(0x56)
     builder.add_8bit_uint(0x78)
     self.assertEqual('\x12\x34\x56\x78', str(builder))
     self.assertEqual(['\x12\x34', '\x56\x78'], builder.build())
     builder.reset()
     self.assertEqual('', str(builder))
     self.assertEqual([], builder.build())
Exemple #2
0
 def test_payload_builder_reset(self):
     """ Test basic bit message encoding/decoding """
     builder = BinaryPayloadBuilder()
     builder.add_8bit_uint(0x12)
     builder.add_8bit_uint(0x34)
     builder.add_8bit_uint(0x56)
     builder.add_8bit_uint(0x78)
     self.assertEqual('\x12\x34\x56\x78', str(builder))
     self.assertEqual(['\x12\x34', '\x56\x78'], builder.build())
     builder.reset()
     self.assertEqual('', str(builder))
     self.assertEqual([], builder.build())
Exemple #3
0
 def set(self, _type, address, values, _datatype=None):
     """
     Generic 'set' method for LockedDataBlock. Figures out the underlying method to call according to _type.
     :param _type: Type of modbus register ('co', 'di', 'hr', 'ir')
     :param address: Index of the register
     :param values: Value(s) to set the addresses to.
     :return: Value of requested address for type.
     """
     if _datatype == None:
         #print("Adding a None type")
         if _type == "di":
             self._set_di(address, values)
         elif _type == "co":
             self._set_co(address, values)
         elif _type == "hr":
             self._set_hr(address, values)
         elif _type == "ir":
             self._set_ir(address, values)
         else:
             print("t: {}   a: {}   v: {}")
             raise ValueError
     elif _datatype == 'bool':
         print("Adding a bool type")
         builder = BinaryPayloadBuilder(endian=Endian.Big)
         builder.add_bits(values)
         payload = unpack_bitstring(builder.to_string())
         if _type == "di":
             self._set_di(address, payload)
         elif _type == "co":
             self._set_co(address, payload)
     else:
         builder = BinaryPayloadBuilder(endian=Endian.Big)
         if _datatype == '32bit_float':  # TODO: try for the datatypes you have in the RTU for the mosaik simulation and do it also for set and test
             builder.add_32bit_float(values)
         elif _datatype == '64bit_float':
             builder.add_64bit_float(values)
         payload = builder.to_registers()
         if _type == "hr":
             self._set_hr(address, payload)
         elif _type == "ir":
             self._set_ir(address, payload)
         else:
             print("t: {}   a: {}   v: {}")
             raise ValueError
Exemple #4
0
 def test_big_endian_payload_builder(self):
     """ Test basic bit message encoding/decoding """
     builder = BinaryPayloadBuilder(endian=Endian.Big)
     builder.add_8bit_uint(1)
     builder.add_16bit_uint(2)
     builder.add_32bit_uint(3)
     builder.add_64bit_uint(4)
     builder.add_8bit_int(-1)
     builder.add_16bit_int(-2)
     builder.add_32bit_int(-3)
     builder.add_64bit_int(-4)
     builder.add_32bit_float(1.25)
     builder.add_64bit_float(6.25)
     builder.add_string('test')
     builder.add_bits(self.bitstring)
     self.assertEqual(self.big_endian_payload, str(builder))
Exemple #5
0
 def test_big_endian_payload_builder(self):
     """ Test basic bit message encoding/decoding """
     builder = BinaryPayloadBuilder(endian=Endian.Big)
     builder.add_8bit_uint(1)
     builder.add_16bit_uint(2)
     builder.add_32bit_uint(3)
     builder.add_64bit_uint(4)
     builder.add_8bit_int(-1)
     builder.add_16bit_int(-2)
     builder.add_32bit_int(-3)
     builder.add_64bit_int(-4)
     builder.add_32bit_float(1.25)
     builder.add_64bit_float(6.25)
     builder.add_string('test')
     builder.add_bits(self.bitstring)
     self.assertEqual(self.big_endian_payload, str(builder))