Beispiel #1
0
 def init_gui(self):
     client = self.client
     connection_manager = ConnectionManager(client.manager)
     widgets = {}
     connected_servers = yield connection_manager.get_connected_servers()
     servers = yield self.client.manager.servers()
     def on_disconnect(server_name):
         widget = widgets.pop(server_name)
         self.removeTab(
             self.indexOf(widget)
         )
         widget.deleteLater()
     @inlineCallbacks
     def on_connect(server_name):
         yield client.refresh()
         widget_class = WIDGETS[server_name]
         server = client.servers[server_name]
         widget = widget_class(server)
         widgets[server_name] = widget
         self.addTab(widget,server_name)
     for server_name,server_widget in WIDGETS.items():
         connection_manager.on_server_connect(
             server_name,
             partial(on_connect,server_name)
         )
         connection_manager.on_server_disconnect(
             server_name,
             partial(on_disconnect,server_name)
         )
         if server_name in connected_servers:
             widget = server_widget(
                 client.servers[server_name]
             )
             widgets[server_name] = widget
             self.addTab(widget,server_name)
Beispiel #2
0
    def initServer(self):
        self.update_requests = []
        self.trigger_requests = []
        self.temperature_limit_state = BELOW
        self.emission_current_limit_state = BELOW
        self.thermocouple_state = OK

        reg = self.client.registry
        reg.cd(REGISTRY_PATH)
        self.emission_current_limit = yield reg.get('emission current limit')
        self.temperature_limit = yield reg.get('temperature limit')
        self.thermocouple_failure_limit = yield reg.get('thermocouple failure limit')
        self.ramp_rate = yield reg.get('ramp rate')
        self.cooling_ramp_rate = yield reg.get('cooling ramp rate')
        self.filament_control_increment = yield reg.get('filament control increment')
        self.filament_control_fast_increment = yield reg.get('filament control fast increment')
        self.filament_control_threshold = yield reg.get('filament control threshold')
        self.emission_current_threshold = yield reg.get('emission current threshold')
        self.temperature_buffer = yield reg.get('temperature buffer')
        default_temperature_setpoint = yield reg.get('default temperature')
        self._set_temperature_setpoint(default_temperature_setpoint)
        sampling_duration = yield reg.get('sampling duration')
        cm = ConnectionManager(self.client.manager)
        required_servers = [VM_SERVER,AO_SERVER]
        servers = yield cm.get_connected_servers()
        for server in servers:
            if server in required_servers:
                print server, 'connected'
                required_servers.remove(server)
        @inlineCallbacks
        def finish_init():
            voltmeter = self.client.voltmeter
            yield voltmeter.lock_setting(voltmeter.set_active_channels.ID)
            yield voltmeter.lock_setting(voltmeter.set_sampling_duration.ID)
            yield voltmeter.lock_setting(voltmeter.set_triggering.ID)
            yield voltmeter.set_sampling_duration(sampling_duration)
            yield voltmeter.set_active_channels(VOLTMETER_CHANNELS)
            yield voltmeter.set_triggering(False)
            analog_output = self.client.analog_output
            yield analog_output.select_device(FILAMENT_CONTROL)
            yield analog_output.lock()
            self._set_feedback_state(FEEDBACK_OFF)
            self._set_heating_state(COOLING)
            outputs = yield self.get_outputs()
            self.previous_time = clock()
            temperature = self.previous_temperature = outputs[TEMPERATURE]
            emission_current = outputs[EMISSION_CURRENT]
            self.update_temperature_limit_state(temperature)
            self.update_emission_current_limit_state(emission_current)
            self.update_thermocouple_state(temperature)
            self.loop()
            LockServer.initServer(self)
        def on_server_connected(server):
            print server, 'connected'
            required_servers.remove(server)
            cm.on_server_connect(server,None)
            if not required_servers:
                finish_init()
        if required_servers:
            for server in required_servers:
                print 'waiting for', server
                cm.on_server_connect(server,partial(on_server_connected,server))
        else:
            yield finish_init()