def connect(self): """ Try to connect to the syring pump at the default serial port selected in the Microdrop application options. If unsuccessful, try to connect to the proxy on any available serial port, one-by-one. """ from stepper_motor_controller import SerialProxy if len(SyringePumpPlugin.serial_ports_): app_values = self.get_app_values() # try to connect to the last successful port try: self.proxy = SerialProxy(port=str(app_values['serial_port'])) except: logger.warning( 'Could not connect to the syringe pump on port %s. ' 'Checking other ports...', app_values['serial_port'], exc_info=True) self.proxy = SerialProxy() app_values['serial_port'] = self.proxy.port self.set_app_values(app_values) else: raise Exception("No serial ports available.")
def check_device_name_and_version(self): """ Check to see if: a) The connected device is a what we are expecting b) The device firmware matches the host driver API version In the case where the device firmware version does not match, display a dialog offering to flash the device with the firmware version that matches the host driver API version. """ try: self.connect() properties = self.proxy.properties package_name = properties['package_name'] display_name = properties['display_name'] if package_name != self.proxy.host_package_name: raise Exception("Device is not a %s" % properties['display_name']) host_software_version = self.proxy.host_software_version remote_software_version = self.proxy.remote_software_version # Reflash the firmware if it is not the right version. if host_software_version != remote_software_version: response = yesno("The %s firmware version (%s) " "does not match the driver version (%s). " "Update firmware?" % (display_name, remote_software_version, host_software_version)) if response == gtk.RESPONSE_YES: self.on_flash_firmware() except Exception, why: logger.warning("%s" % why)
def check_device_name_and_version(self): ''' Check to see if: a) The connected device is a OpenDrop b) The device firmware matches the host driver API version In the case where the device firmware version does not match, display a dialog offering to flash the device with the firmware version that matches the host driver API version. ''' try: self.connect() name = self.control_board.name() if name != "open_drop": raise Exception("Device is not an OpenDrop") host_software_version = self.control_board.host_software_version() remote_software_version = self.control_board.software_version() # Reflash the firmware if it is not the right version. if host_software_version != remote_software_version: response = yesno("The control board firmware version (%s) " "does not match the driver version (%s). " "Update firmware?" % (remote_software_version, host_software_version)) if response == gtk.RESPONSE_YES: self.on_flash_firmware() except Exception, why: logger.warning("%s" % why)
def on_protocol_run(self): """ Handler called when a protocol starts running. """ app = get_app() if not self.control_board.connected(): logger.warning("Warning: no control board connected.") elif (self.control_board.number_of_channels() <= app.dmf_device.max_channel()): logger.warning("Warning: currently connected board does not have " "enough channels for this protocol.")
def connect(self): ''' Try to connect to the control board at the default serial port selected in the Microdrop application options. If unsuccessful, try to connect to the control board on any available serial port, one-by-one. ''' self.current_frequency = None if len(OpenDropPlugin.serial_ports_): app_values = self.get_app_values() # try to connect to the last successful port try: self.control_board.connect(str(app_values['serial_port']), app_values['baud_rate']) except RuntimeError, why: logger.warning('Could not connect to control board on port %s.' ' Checking other ports... [%s]' % (app_values['serial_port'], why)) self.control_board.connect(baud_rate=app_values['baud_rate']) app_values['serial_port'] = self.control_board.port self.set_app_values(app_values)