Esempio n. 1
0
def find_mettler_toledo_device_ports(baudrate=None,
                                     try_ports=None,
                                     debug=DEBUG):
    serial_device_ports = find_serial_device_ports(try_ports=try_ports,
                                                   debug=debug)
    os_type = platform.system()
    if os_type == 'Darwin':
        serial_device_ports = [
            x for x in serial_device_ports
            if 'tty.usbmodem' in x or 'tty.usbserial' in x
        ]

    mettler_toledo_device_ports = []
    for port in serial_device_ports:
        try:
            dev = MettlerToledoDevice(port=port,
                                      baudrate=baudrate,
                                      debug=debug)
            try:
                serial_number = dev.get_serial_number()
                mettler_toledo_device_ports.append(port)
            except:
                continue
            dev.close()
        except (serial.SerialException, IOError):
            pass
    return mettler_toledo_device_ports
def find_modular_server_ports(baudrate=None,
                              model_number=None,
                              serial_number=None,
                              try_ports=None,
                              debug=DEBUG,
                              *args,
                              **kwargs):
    serial_device_ports = find_serial_device_ports(try_ports=try_ports, debug=debug)
    os_type = platform.system()
    if os_type == 'Darwin':
        serial_device_ports = [x for x in serial_device_ports if 'tty.usbmodem' in x or 'tty.usbserial' in x]

    if type(model_number) is int:
        model_number = [model_number]
    if type(serial_number) is int:
        serial_number = [serial_number]

    modular_device_ports = {}
    for port in serial_device_ports:
        try:
            dev = ModularDevice(port=port,baudrate=baudrate,debug=debug)
            device_info = dev.get_device_info()
            if ((model_number is None ) and (device_info['model_number'] is not None)) or (device_info['model_number'] in model_number):
                if ((serial_number is None) and (device_info['serial_number'] is not None)) or (device_info['serial_number'] in serial_number):
                    modular_device_ports[port] = {'model_number': device_info['model_number'],
                                                  'serial_number': device_info['serial_number']}
            dev.close()
        except (serial.SerialException, IOError):
            pass
    return modular_device_ports
def find_zaber_device_ports(baudrate=None,
                            try_ports=None,
                            serial_number=None,
                            debug=DEBUG,
                            *args,
                            **kwargs):
    serial_device_ports = find_serial_device_ports(try_ports=try_ports, debug=debug)
    os_type = platform.system()
    if os_type == 'Darwin':
        serial_device_ports = [x for x in serial_device_ports if 'tty.usbmodem' in x or 'tty.usbserial' in x]

    zaber_device_ports = {}
    for port in serial_device_ports:
        try:
            dev = ZaberDevice(port=port,baudrate=baudrate,debug=debug)
            try:
                test_data = 123
                echo_data = dev.echo_data(test_data)
                if test_data == echo_data:
                    s_n = dev.get_serial_number()
                    if (serial_number is None) or (s_n == serial_number):
                        zaber_device_ports[port] = {'serial_number':s_n}
            except ZaberError as e:
                zaber_device_ports[port] = {'serial_number':None}
            except ReadError:
                continue
            dev.close()
        except (serial.SerialException, IOError):
            pass
    return zaber_device_ports
def find_mightex_device_ports(baudrate=None,
                              try_ports=None,
                              serial_number=None,
                              debug=DEBUG,
                              *args,
                              **kwargs):
    serial_device_ports = find_serial_device_ports(try_ports=try_ports, debug=debug)
    os_type = platform.system()
    if os_type == 'Darwin':
        serial_device_ports = [x for x in serial_device_ports if 'tty.usbmodem' in x or 'tty.usbserial' in x]

    mightex_device_ports = {}
    for port in serial_device_ports:
        try:
            dev = MightexDevice(port=port,baudrate=baudrate,debug=debug)
            try:
                s_n = dev.get_serial_number()
                if (serial_number is None) or (s_n == serial_number):
                    mightex_device_ports[port] = {'serial_number':s_n}
            except:
                continue
            dev.close()
        except (serial.SerialException, IOError):
            pass
    return mightex_device_ports
def find_mettler_toledo_device_port(baudrate=None, model_number=None, serial_number=None, try_ports=None, debug=DEBUG):
    mettler_toledo_device_ports = find_mettler_toledo_device_ports(baudrate=baudrate, try_ports=try_ports, debug=debug)
    if len(mettler_toledo_device_ports) == 1:
        return mettler_toledo_device_ports[0]
    elif len(mettler_toledo_device_ports) == 0:
        serial_device_ports = find_serial_device_ports(try_ports)
        err_string = "Could not find any MettlerToledo devices. Check connections and permissions.\n"
        err_string += "Tried ports: " + str(serial_device_ports)
        raise RuntimeError(err_string)
    else:
        err_string = "Found more than one MettlerToledo device. Specify port or model_number and/or serial_number.\n"
        err_string += "Matching ports: " + str(mettler_toledo_device_ports)
        raise RuntimeError(err_string)
    def __init__(self,
                 calibration_file_path,
                 config_file_path,
                 mixed_signal_controller=True,
                 bioshake_device=True,
                 debug_msc=False,
                 *args,**kwargs):
        if 'debug' in kwargs:
            self._debug = kwargs['debug']
        else:
            kwargs.update({'debug': DEBUG})
            self._debug = DEBUG
        self._using_msc = mixed_signal_controller
        self._using_bsc = bioshake_device
        with open(calibration_file_path,'r') as calibration_stream:
            self._calibration = yaml.load(calibration_stream)
        with open(config_file_path,'r') as config_stream:
            self._config = yaml.load(config_stream)
        # check to see if user switched config and calibration files
        if ('head' in self._calibration) and ('quad1' in self._config):
            calibration = self._config
            self._config = self._calibration
            self._calibration = calibration
        self._valves = self._config['head']
        self._valves.update(self._config['manifold'])
        if self._using_msc or self._using_bsc:
            ports = find_serial_device_ports(debug=self._debug)
            self._debug_print('Found serial devices on ports ' + str(ports))
            self._debug_print('Identifying connected devices (may take some time)...')
        if self._using_bsc:
            try:
                self._bsc = BioshakeDevice()
            except RuntimeError:
                # try one more time
                self._bsc = BioshakeDevice()
            self._debug_print('Found bioshake device on port ' + str(self._bsc.get_port()))
            ports.remove(self._bsc.get_port())
            self._SHAKE_SPEED_MIN = self._bsc.get_shake_speed_min()
            self._SHAKE_SPEED_MAX = self._bsc.get_shake_speed_max()
        if self._using_msc:
            modular_devices = ModularDevices(try_ports=ports,timeout=MSC_TIMEOUT,debug=debug_msc)

            try:
                msc_dict = modular_devices['mixed_signal_controller']
            except KeyError:
                raise HybridizerError('Could not find mixed_signal_controller. Check connections and permissions.')
            if len(msc_dict) > 1:
                raise HybridizerError('More than one mixed_signal_controller found. Only one should be connected.')
            self._msc = msc_dict[msc_dict.keys()[0]]
            self._debug_print('Found mixed_signal_controller on port ' + str(self._msc.get_port()))
Esempio n. 7
0
    def __init__(self,
                 config_file_path,
                 calibration_file_path,
                 *args,**kwargs):
        if 'debug' in kwargs:
            self._debug = kwargs['debug']
        else:
            kwargs.update({'debug': DEBUG})
            self._debug = DEBUG
        with open(config_file_path,'r') as config_stream:
            self._config = yaml.load(config_stream)
        with open(calibration_file_path,'r') as calibration_stream:
            self._calibration = yaml.load(calibration_stream)
        self._valves = self._config['head']
        self._valves.update(self._config['manifold'])
        ports = find_serial_device_ports(debug=self._debug)
        self._debug_print('Found serial devices on ports ' + str(ports))
        self._debug_print('Identifying connected devices (may take some time)...')
        self._balance = MettlerToledoDevice()
        ports.remove(self._balance.get_port())
        # try:
        #     self._bsc = BioshakeDevice()
        # except RuntimeError:
        #     # try one more time
        #     self._bsc = BioshakeDevice()
        # self._debug_print('Found bioshake device on port ' + str(self._bsc.get_port()))
        # ports.remove(self._bsc.get_port())
        # self._SHAKE_SPEED_MIN = self._bsc.get_shake_speed_min()
        # self._SHAKE_SPEED_MAX = self._bsc.get_shake_speed_max()
        # self._SHAKE_DURATION_MIN = 10
        # self._SHAKE_ATTEMPTS = 2
        # self._POST_SHAKE_OFF_DURATION = 5
        modular_devices = ModularDevices(try_ports=ports)

        try:
            msc_dict = modular_devices['mixed_signal_controller']
        except KeyError:
            raise HybridizerError('Could not find mixed_signal_controller. Check connections and permissions.')
        if len(msc_dict) > 1:
            raise HybridizerError('More than one mixed_signal_controller found. Only one should be connected.')
        self._msc = msc_dict[msc_dict.keys()[0]]
        self._debug_print('Found mixed_signal_controller on port ' + str(self._msc.get_port()))

        # self._adc_values_min = None
        # self._adc_values_max = None
        self._adc_sample_count = 21
        self._fill_duration_all_cylinders = 250
        self._fill_duration_one_cylinder = 100
        self._volume_crossover = 6
        self._volume_threshold_initial = 1.0
def find_mettler_toledo_device_port(baudrate=None, model_number=None, serial_number=None, try_ports=None, debug=DEBUG):
    mettler_toledo_device_ports = find_mettler_toledo_device_ports(baudrate=baudrate,
                                                                   try_ports=try_ports,
                                                                   debug=debug)
    if len(mettler_toledo_device_ports) == 1:
        return mettler_toledo_device_ports[0]
    elif len(mettler_toledo_device_ports) == 0:
        serial_device_ports = find_serial_device_ports(try_ports)
        err_string = 'Could not find any MettlerToledo devices. Check connections and permissions.\n'
        err_string += 'Tried ports: ' + str(serial_device_ports)
        raise RuntimeError(err_string)
    else:
        err_string = 'Found more than one MettlerToledo device. Specify port or model_number and/or serial_number.\n'
        err_string += 'Matching ports: ' + str(mettler_toledo_device_ports)
        raise RuntimeError(err_string)
def find_bioshake_device_port(baudrate=None, model_number=None, serial_number=None, try_ports=None, debug=DEBUG):
    bioshake_device_ports = find_bioshake_device_ports(baudrate=baudrate,
                                                       try_ports=try_ports,
                                                       debug=debug)
    if len(bioshake_device_ports) == 1:
        return bioshake_device_ports[0]
    elif len(bioshake_device_ports) == 0:
        serial_device_ports = find_serial_device_ports(try_ports)
        err_string = 'Could not find any Bioshake devices. Check connections and permissions.\n'
        err_string += 'Tried ports: ' + str(serial_device_ports)
        raise RuntimeError(err_string)
    else:
        err_string = 'Found more than one Bioshake device. Specify port or model_number and/or serial_number.\n'
        err_string += 'Matching ports: ' + str(bioshake_device_ports)
        raise RuntimeError(err_string)
def find_bioshake_device_ports(baudrate=None, try_ports=None, debug=DEBUG):
    serial_device_ports = find_serial_device_ports(try_ports=try_ports, debug=debug)
    os_type = platform.system()
    if os_type == 'Darwin':
        serial_device_ports = [x for x in serial_device_ports if 'tty.usbmodem' in x or 'tty.usbserial' in x]

    bioshake_device_ports = []
    for port in serial_device_ports:
        try:
            dev = BioshakeDevice(port=port,baudrate=baudrate,debug=debug)
            description = dev.get_description()
            if 'BIOSHAKE' in description:
                bioshake_device_ports.append(port)
            dev.close()
        except (serial.SerialException, IOError):
            pass
    return bioshake_device_ports
def find_zaber_device_port(baudrate=None,
                           try_ports=None,
                           serial_number=None,
                           debug=DEBUG):
    zaber_device_ports = find_zaber_device_ports(baudrate=baudrate,
                                                 try_ports=try_ports,
                                                 serial_number=serial_number,
                                                 debug=debug)
    if len(zaber_device_ports) == 1:
        return zaber_device_ports.keys()[0]
    elif len(zaber_device_ports) == 0:
        serial_device_ports = find_serial_device_ports(try_ports)
        err_string = 'Could not find any Zaber devices. Check connections and permissions.\n'
        err_string += 'Tried ports: ' + str(serial_device_ports)
        raise RuntimeError(err_string)
    else:
        err_string = 'Found more than one Zaber device. Specify port or serial_number.\n'
        err_string += 'Matching ports: ' + str(zaber_device_ports)
        raise RuntimeError(err_string)
def find_mettler_toledo_device_ports(baudrate=None, try_ports=None, debug=DEBUG):
    serial_device_ports = find_serial_device_ports(try_ports=try_ports, debug=debug)
    os_type = platform.system()
    if os_type == 'Darwin':
        serial_device_ports = [x for x in serial_device_ports if 'tty.usbmodem' in x or 'tty.usbserial' in x]

    mettler_toledo_device_ports = []
    for port in serial_device_ports:
        try:
            dev = MettlerToledoDevice(port=port,baudrate=baudrate,debug=debug)
            try:
                serial_number = dev.get_serial_number()
                mettler_toledo_device_ports.append(port)
            except:
                continue
            dev.close()
        except (serial.SerialException, IOError):
            pass
    return mettler_toledo_device_ports