def read(self, adsAdr): """ Read from plc address and write in self.currentValue, call pyads.gui.mapAdsToGui() to show the value on the connected gui objects :param pyads.structs.AmsAdr adsAdr: address to the ADS device :return: current value """ indexgroup = INDEXGROUP_MEMORYBIT if self.plcDataType == PLCTYPE_BOOL else INDEXGROUP_MEMORYBYTE (err, value) = adsSyncReadReq(adsAdr, indexgroup, self.plcAdr, self.plcDataType) if err: raise Exception("error reading from address %i (%s). error number %i" % (self.plcAdr, self.name, err)) #Wenn es sich um eine Liste oder ein Tuple handelt, dann einzelne Objekte schreiben*) if isinstance(self.guiObjects, (list, tuple)): for o in self.guiObjects: self.mapAdsToGui(o, value) else: self.mapAdsToGui(self.guiObjects, value) self.currentValue = value return value
def read_from_plc(self, address, datatype): index_group = INDEXGROUP_MEMORYBIT if datatype == PLCTYPE_BOOL else INDEXGROUP_MEMORYBYTE (errcode, value) = adsSyncReadReq(self.ams_addr, index_group, address, datatype) if errcode: raise ADSError("Reading from address %i (ErrorCode %i)" % (address, errcode)) return value