code: def read(self, timeout_sec=None):
          
          try:
              return self._queue.get(timeout=timeout_sec)
          except queue.Empty:
              # Timeout exceeded, return None to signify no data received.
              return None
docs: Block until data is available to read from the UART.  Will return a
          string of data that has been received.  Timeout_sec specifies how many
          seconds to wait for data to be available and will block forever if None
          (the default).  If the timeout is exceeded and no data is found then
          None is returned.