def test_write(self): """Test symbol value writing""" with self.plc: symbol = AdsSymbol(self.plc, name=self.test_var.name) symbol.write(3.14) # Write r_value = self.plc.read( self.test_var.index_group, self.test_var.index_offset, self.test_var.plc_type, ) self.assertEqual(3.14, r_value) self.assertAdsRequestsCount(3) # READWRITE for info, WRITE and
def test_init_by_name_array(self): """Test symbol creation when it's an array""" var = PLCVariable( "ArrayVar", ads_type=constants.ADST_INT16, # dataType does not represent # array unfortunately symbol_type="ARRAY [1..5] OF INT", # Array looks like this in PLC ) var.plc_type = constants.PLCTYPE_ARR_INT(5) # Have to do this # manually self.handler.add_variable(var) self.plc.open() symbol = AdsSymbol(self.plc, name=var.name) # Verify looked up info self.assertEqual(var.name, symbol.name) self.assertEqual(var.index_group, symbol.index_group) self.assertEqual(var.index_offset, symbol.index_offset) self.assertEqual(var.plc_type, symbol.plc_type) self.assertEqual(var.symbol_type, symbol.symbol_type) self.assertIsNone(symbol.comment) my_list = symbol.read() self.assertIsInstance(my_list, list) self.assertEqual(5, len(my_list)) my_list[4] = 420 symbol.write(my_list) # Modify array my_list2 = symbol.read() # Read again self.assertEqual(my_list, my_list2) self.assertAdsRequestsCount(4) # A READWRITE (for info), READ,
def test_value(self): """Test the buffer property""" with self.plc: symbol = AdsSymbol(self.plc, name=self.test_var.name) symbol.value = 420.0 # Shouldn't change anything yet self.assertAdsRequestsCount(1) # Only a READWRITE for info symbol.write() self.assertAdsRequestsCount(2) # Written from buffer symbol.read() for i in range(10): custom_buffer = symbol.value self.assertEqual(420.0, symbol.value) self.assertAdsRequestsCount(3) # Read only once