docs: def search_for_port(port_glob, req, expected_res):
      ''' Find the serial port the arm is connected to. '''
  
      # Check that the USB port actually exists, based on the known vendor and
      # product ID.
      if usb.core.find(idVendor=0x0403, idProduct=0x6001) is None:
          return None
  
      # Find ports matching the supplied glob.
      ports = glob.glob(port_glob)
      if len(ports) == 0:
          return None
  
      for port in ports:
          with r12_serial_port(port) as ser:
              if not ser.isOpen():
                  ser.open()
  
              # Write a request out.
              if sys.version_info[0] == 2:
                  ser.write(str(req).encode('utf-8'))
              else:
                  ser.write(bytes(req, 'utf-8'))
  
              # Wait a short period to allow the connection to generate output.
              time.sleep(0.1)
  
              # Read output from the serial connection check if it's what we want.
              res = ser.read(ser.in_waiting).decode(OUTPUT_ENCODING)
              if expected_res in res:
                  return port
  
      raise ArmException('ST Robotics connection found, but is not responsive.'
                         + ' Is the arm powered on?')
      return None