diff --git a/sksurgerynditracker/nditracker.py b/sksurgerynditracker/nditracker.py index fcad680..c9341e7 100644 --- a/sksurgerynditracker/nditracker.py +++ b/sksurgerynditracker/nditracker.py @@ -18,6 +18,15 @@ from sksurgerynditracker.serial_utils.com_ports import \ fix_com_port_greater_than_9 +SERIAL_CONNECTION_ERRMSG = """ +Please check the following:\n +\t1) Is an NDI device connected to your computer?\n +\t2) Is the NDI device switched on?\n +\t3) Do you have sufficient privilege to connect to +the device? (e.g. on Linux are you part of the "dialout" +group?)' +""" + @contextlib.contextmanager def _open_logging(verbose): """ @@ -65,6 +74,11 @@ def _get_serial_port_name(configuration): " Result: ", result, file=fileout) if result == ndicapy.NDI_OKAY: break + else: + raise IOError('Could not find any NDI device in ' + f'{ports_to_probe} serial port candidates checked. ' + + SERIAL_CONNECTION_ERRMSG) + else: if isinstance(serial_port, int): if serial_port < len(serial_ports): @@ -72,23 +86,19 @@ def _get_serial_port_name(configuration): result = ndicapy.ndiProbe(name) print("Probing port: ", serial_port, " got name: ", name, " Result: ", result, file=fileout) + else: + raise IOError(f'Could not connect to serial port {serial_port} ' + f'as there are only {len(serial_ports)} ports available' + + SERIAL_CONNECTION_ERRMSG) + if isinstance(serial_port, str): name = serial_port result = ndicapy.ndiProbe(name) print("Probing port: ", name, " Result: ", result, file=fileout) - - if result != ndicapy.NDI_OKAY: - raise IOError( - 'Could not find any NDI device in ' - f'{ports_to_probe} serial port candidates checked. ' - 'Please check the following:\n' - '\t1) Is an NDI device connected to your computer?\n' - '\t2) Is the NDI device switched on?\n' - '\t3) Do you have sufficient privilege to connect to ' - 'the device? (e.g. on Linux are you part of the "dialout" ' - 'group?)') - + if result != ndicapy.NDI_OKAY: + raise IOError(f'Could not connect to an NDI device on the chosen port, {serial_port}.' + + SERIAL_CONNECTION_ERRMSG) return name