code: def rtt_read(self, buffer_index, num_bytes):
          
          buf = (ctypes.c_ubyte * num_bytes)()
          bytes_read = self._dll.JLINK_RTTERMINAL_Read(buffer_index, buf, num_bytes)
  
          if bytes_read < 0:
              raise errors.JLinkRTTException(bytes_read)
  
          return list(buf)[:bytes_read]
docs: Reads data from the RTT buffer.
  
          This method will read at most num_bytes bytes from the specified
          RTT buffer. The data is automatically removed from the RTT buffer.
          If there are not num_bytes bytes waiting in the RTT buffer, the
          entire contents of the RTT buffer will be read.
  
          Args:
            self (JLink): the ``JLink`` instance
            buffer_index (int): the index of the RTT buffer to read from
            num_bytes (int): the maximum number of bytes to read
  
          Returns:
            A list of bytes read from RTT.
  
          Raises:
            JLinkRTTException if the underlying JLINK_RTTERMINAL_Read call fails.