def read(self, index_group, index_offset, plc_datatype, return_ctypes=False):<EOL>
if self._port is not None:<EOL><INDENT>return adsSyncReadReqEx2(<EOL>self._port, self._adr, index_group, index_offset, plc_datatype, return_ctypes<EOL>)<EOL><DEDENT>return None<EOL>
Read data synchronous from an ADS-device.

        :param int index_group: PLC storage area, according to the INDEXGROUP
            constants
        :param int index_offset: PLC storage address
        :param int plc_datatype: type of the data given to the PLC, according
            to PLCTYPE constants
            :return: value: **value**
        :param bool return_ctypes: return ctypes instead of python types if True
            (default: False)