<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def read_string(self, registeraddress, numberOfRegisters=16, functioncode=3):
 """Read a string from the slave. Each 16-bit register in the slave are interpreted as two characters (1 byte = 8 bits). For example 16 consecutive registers can hold 32 characters (32 bytes). Args: * registeraddress (int):
 The slave register start address (use decimal numbers, not hex). * numberOfRegisters (int):
 The number of registers allocated for the string. * functioncode (int):
 Modbus function code. Can be 3 or 4. Returns: The string (str). Raises: ValueError, TypeError, IOError """

        _checkFunctioncode(functioncode, [3, 4])
        _checkInt(numberOfRegisters, minvalue=1, description='number of registers for read string')
        return self._genericCommand(functioncode, registeraddress, \
            numberOfRegisters=numberOfRegisters, payloadformat='string')