def scan(port=None): """ port (string): name of the serial port. If None, all the serial ports are tried returns (list of 2-tuple): name, args (port) Note: it's obviously not advised to call this function if a device is already under use """ if port: ports = [port] else: if os.name == "nt": ports = ["COM" + str(n) for n in range(8)] else: ports = glob.glob('/dev/ttyS?*') + glob.glob('/dev/ttyUSB?*') logging.info("Serial ports scanning for Acton SpectraPro spectrograph in progress...") found = [] # (list of 2-tuple): name, kwargs for p in ports: try: logging.debug("Trying port %s", p) dev = SpectraPro(None, None, p, _noinit=True) except (serial.SerialException, HwError): # not possible to use this port? next one! continue # Try to connect and get back some answer. try: model = dev.GetModel() if model.startswith("SP-"): found.append((model, {"port": p})) else: logging.info("Device on port '%s' responded correctly, but with unexpected model name '%s'.", p, model) except: continue return found
def scan(port=None): """ port (string): name of the serial port. If None, all the serial ports are tried returns (list of 2-tuple): name, args (port) Note: it's obviously not advised to call this function if a device is already under use """ if port: ports = [port] else: if os.name == "nt": ports = ["COM" + str(n) for n in range (0,8)] else: ports = glob.glob('/dev/ttyS?*') + glob.glob('/dev/ttyUSB?*') logging.info("Serial ports scanning for Acton SpectraPro spectrograph in progress...") found = [] # (list of 2-tuple): name, kwargs for p in ports: try: logging.debug("Trying port %s", p) dev = SpectraPro(None, None, p, _noinit=True) except serial.SerialException: # not possible to use this port? next one! continue # Try to connect and get back some answer. try: model = dev.GetModel() if model.startswith("SP-"): found.append((model, {"port": p})) else: logging.info("Device on port '%s' responded correctly, but with unexpected model name '%s'.", p, model) except: continue return found
def selfTest(self): """ check as much as possible that it works without actually moving the motor return (boolean): False if it detects any problem """ try: with self._ser_access: model = self.GetModel() if not model.startswith("SP-"): # accept it anyway logging.warning("Device reports unexpected model '%s'", model) turret = self.GetTurret() if not turret in (1,2,3): return False return True except: logging.exception("Selftest failed") return False