def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletOutdoorWeather, *args) self.outdoor_weather = self.device self.setupUi(self) self.cbe_identifiers_station = CallbackEmulator( self, self.outdoor_weather.get_station_identifiers, None, self.cb_station_identifiers, self.increase_error_count) self.cbe_identifiers_sensor = CallbackEmulator( self, self.outdoor_weather.get_sensor_identifiers, None, self.cb_sensor_identifiers, self.increase_error_count) self.combo_identifier_station.currentIndexChanged.connect( self.update_station) self.combo_identifier_sensor.currentIndexChanged.connect( self.update_sensor) self.combo_identifier_station.setEnabled(False) self.combo_identifier_sensor.setEnabled(False) self.data_timer_station = QTimer(self) self.data_timer_station.timeout.connect(self.update_station) self.data_timer_sensor = QTimer(self) self.data_timer_sensor.timeout.connect(self.update_sensor)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletHallEffectV2, *args) self.setupUi(self) self.hf = self.device self.cbe_magnetic_flux_density = CallbackEmulator( self.hf.get_magnetic_flux_density, None, self.cb_magnetic_flux_density, self.increase_error_count) self.cbe_counter = CallbackEmulator(self.get_counter, False, self.cb_counter, self.increase_error_count) self.current_magnetic_flux_density = CurveValueWrapper() plots = [('Magnetic Flux Density', Qt.red, self.current_magnetic_flux_density, '{} µT'.format)] self.plot_widget = PlotWidget('Magnetic Flux Density [µT]', plots, y_resolution=1.0) self.button_reset.clicked.connect(self.button_reset_clicked) self.spinbox_low.editingFinished.connect(self.new_config) self.spinbox_high.editingFinished.connect(self.new_config) self.spinbox_debounce.editingFinished.connect(self.new_config) self.main_vert_layout.insertWidget(0, self.plot_widget)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletDualButtonV2, *args) self.setupUi(self) self.button = self.device self.cbe_button_state = CallbackEmulator(self.button.get_button_state, None, self.cb_button_state, self.increase_error_count, expand_result_tuple_for_callback=True) self.cbe_led_state = CallbackEmulator(self.button.get_led_state, None, self.cb_led_state, self.increase_error_count, expand_result_tuple_for_callback=True) self.led_r = BrickletDualButtonV2.LED_STATE_OFF self.led_l = BrickletDualButtonV2.LED_STATE_OFF self.button_r = BrickletDualButtonV2.BUTTON_STATE_RELEASED self.button_l = BrickletDualButtonV2.BUTTON_STATE_RELEASED self.button_led_on_button_r.clicked.connect(self.on_button_r_clicked) self.button_led_on_button_l.clicked.connect(self.on_button_l_clicked) self.button_led_off_button_r.clicked.connect(self.off_button_r_clicked) self.button_led_off_button_l.clicked.connect(self.off_button_l_clicked) self.button_toggle_button_r.clicked.connect(self.toggle_button_r_clicked) self.button_toggle_button_l.clicked.connect(self.toggle_button_l_clicked) self.count = 0
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletOLED128x64V2, *args) self.setupUi(self) self.oled = self.device self.scribble_widget = ScribbleWidget(128, 64, 5, QColor(Qt.white), QColor(Qt.black), enable_grid=False) self.image_button_layout.insertWidget(0, self.scribble_widget) self.contrast_syncer = SliderSpinSyncer( self.contrast_slider, self.contrast_spin, lambda value: self.new_configuration()) self.char_syncer = SliderSpinSyncer(self.char_slider, self.char_spin, self.char_slider_changed) self.draw_button.clicked.connect(self.draw_clicked) self.clear_button.clicked.connect(self.clear_clicked) self.send_button.clicked.connect(self.send_clicked) self.clear_display_button.clicked.connect(self.clear_display_clicked) self.invert_checkbox.stateChanged.connect(self.new_configuration) self.current_char_value = -1 self.write_line_response_expected = None
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletSoundPressureLevel, *args) self.setupUi(self) self.sound_pressure_level = self.device self.cbe_get_decibel = CallbackEmulator(self, self.sound_pressure_level.get_decibel, None, self.cb_decibel, self.increase_error_count) self.qtcb_spectrum.connect(self.cb_spectrum) self.thermo = TuningThermo() plots_spectrum = [('Spectrum', Qt.red, None, '{} °C'.format)] self.plot_widget_spectrum = PlotWidget('Value [dB]', plots_spectrum, clear_button=None, x_diff=20480, x_scale_title_text='Frequency [Hz]', x_scale_skip_last_tick=False, key=None, y_resolution=0.1, y_scale_shrinkable=False) self.plot_widget_spectrum.set_x_scale(512*40//5, 1) self.combo_fft_size.currentIndexChanged.connect(self.config_changed) self.combo_weighting.currentIndexChanged.connect(self.config_changed) self.layout_graph.addWidget(self.plot_widget_spectrum) self.layout_decibel.insertWidget(3, self.thermo) self.last_spectrum_length = 512 self.last_y_data = [0]*512
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletHAT, *args) self.setupUi(self) self.hat = self.device self.cbe_battery_statistics = CallbackEmulator( self.hat.get_battery_statistics, self.cb_battery_statistics, self.increase_error_count) self.cbe_time = CallbackEmulator(self.hat.get_time, self.cb_time, self.increase_error_count) self.button_sleep.pressed.connect(self.button_sleep_pressed) self.button_time_manual.pressed.connect( self.button_time_manual_pressed) self.button_time_system.pressed.connect( self.button_time_system_pressed) self.ports = [ self.port_a, self.port_b, self.port_c, self.port_d, self.port_e, self.port_f, self.port_g, self.port_h ] self.time_widgets = [ self.spin_year, self.spin_month, self.spin_day, self.spin_hour, self.spin_minute, self.spin_second, self.combo_weekday ] self.manual_time_set_active = False self.update_time_widget_enabled()
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletIndustrialDualRelay, *args) self.setupUi(self) self.idr = self.device self.value0_combobox.setItemData(0, True) self.value0_combobox.setItemData(1, False) self.value1_combobox.setItemData(0, True) self.value1_combobox.setItemData(1, False) self.monoflop = Monoflop(self.idr, [0, 1], [self.value0_combobox, self.value1_combobox], self.cb_value_change_by_monoflop, [self.time0_spinbox, self.time1_spinbox], None, self) self.ch0_button.clicked.connect(self.ch0_clicked) self.ch1_button.clicked.connect(self.ch1_clicked) self.go0_button.clicked.connect(self.go0_clicked) self.go1_button.clicked.connect(self.go1_clicked) self.a0_pixmap = load_masked_pixmap('plugin_system/plugins/industrial_dual_relay/channel0_a.bmp') self.a1_pixmap = load_masked_pixmap('plugin_system/plugins/industrial_dual_relay/channel1_a.bmp') self.b0_pixmap = load_masked_pixmap('plugin_system/plugins/industrial_dual_relay/channel0_b.bmp') self.b1_pixmap = load_masked_pixmap('plugin_system/plugins/industrial_dual_relay/channel1_b.bmp')
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletPiezoSpeakerV2, *args) self.setupUi(self) self.ps = self.device self.qtcb_beep_finished.connect(self.cb_beep) self.ps.register_callback(self.ps.CALLBACK_BEEP_FINISHED, self.qtcb_beep_finished.emit) self.qtcb_alarm_finished.connect(self.cb_alarm) self.ps.register_callback(self.ps.CALLBACK_ALARM_FINISHED, self.qtcb_alarm_finished.emit) self.frequency_syncer = SliderSpinSyncer(self.frequency_slider, self.frequency_spinbox, self.frequency_changed, spin_signal='valueChanged') self.volume_syncer = SliderSpinSyncer(self.volume_slider, self.volume_spinbox, self.volume_changed, spin_signal='valueChanged') self.beep_duration_syncer = SliderSpinSyncer( self.beep_duration_slider, self.beep_duration_spinbox, self.beep_duration_changed, spin_signal='valueChanged') self.alarm_duration_syncer = SliderSpinSyncer( self.alarm_duration_slider, self.alarm_duration_spinbox, self.alarm_duration_changed, spin_signal='valueChanged') self.alarm_start_frequency_syncer = SliderSpinSyncer( self.alarm_start_frequency_slider, self.alarm_start_frequency_spinbox, self.alarm_start_frequency_changed, spin_signal='valueChanged') self.alarm_end_frequency_syncer = SliderSpinSyncer( self.alarm_end_frequency_slider, self.alarm_end_frequency_spinbox, self.alarm_end_frequency_changed, spin_signal='valueChanged') self.alarm_step_size_syncer = SliderSpinSyncer( self.alarm_step_size_slider, self.alarm_step_size_spinbox, self.alarm_step_size_changed, spin_signal='valueChanged') self.alarm_step_delay_syncer = SliderSpinSyncer( self.alarm_step_delay_slider, self.alarm_step_delay_spinbox, self.alarm_step_delay_changed, spin_signal='valueChanged') self.beep_button.clicked.connect(self.beep_clicked) self.alarm_button.clicked.connect(self.alarm_clicked) self.new_value_timer = QTimer(self) self.new_value_timer.timeout.connect(self.new_value_update) self.last_frequency = self.frequency_spinbox.value() self.last_volume = self.volume_spinbox.value()
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletRGBLEDV2, *args) self.rgb_led = self.device self.changing = False self.set_rgb_value_response_expected = None self.setupUi(self) self.r_syncer = SliderSpinSyncer(self.slider_r, self.spin_r, self.rgb_changed, spin_signal='valueChanged') self.g_syncer = SliderSpinSyncer(self.slider_g, self.spin_g, self.rgb_changed, spin_signal='valueChanged') self.b_syncer = SliderSpinSyncer(self.slider_b, self.spin_b, self.rgb_changed, spin_signal='valueChanged') self.h_syncer = SliderSpinSyncer(self.slider_h, self.spin_h, self.hsl_changed, spin_signal='valueChanged') self.s_syncer = SliderSpinSyncer(self.slider_s, self.spin_s, self.hsl_changed, spin_signal='valueChanged') self.l_syncer = SliderSpinSyncer(self.slider_l, self.spin_l, self.hsl_changed, spin_signal='valueChanged') def set_color(r, g, b): self.changing = True self.spin_r.setValue(r) self.spin_g.setValue(g) self.spin_b.setValue(b) self.changing = False self.rgb_changed() for color, button in zip([(0, 0, 0), (255, 255, 255), (255, 0, 0), (255, 255, 0), (0, 255, 0), (0, 255, 255), (0, 0, 255), (255, 0, 255)], [self.button_black, self.button_white, self.button_red, self.button_yellow, self.button_green, self.button_cyan, self.button_blue, self.button_magenta]): button.clicked.connect(lambda clicked, c=color: set_color(*c)) pixmap = QPixmap(16, 16) QPainter(pixmap).fillRect(0, 0, 16, 16, QColor(*color)) button.setIcon(QIcon(pixmap)) button.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletSolidStateRelayV2, *args) self.setupUi(self) self.ssr = self.device self.qtcb_monoflop.connect(self.cb_monoflop) self.ssr.register_callback(self.ssr.CALLBACK_MONOFLOP_DONE, self.qtcb_monoflop.emit) self.ssr_button.clicked.connect(self.ssr_clicked) self.go_button.clicked.connect(self.go_clicked) self.monoflop = False self.timebefore = 500 self.a_pixmap = load_masked_pixmap( 'plugin_system/plugins/solid_state_relay/relay_a.bmp') self.b_pixmap = load_masked_pixmap( 'plugin_system/plugins/solid_state_relay/relay_b.bmp') self.update_timer = QTimer() self.update_timer.timeout.connect(self.update) self.update_timer.setInterval(50)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletIndustrialDigitalIn4V2, *args) self.setupUi(self) self.idi4 = self.device self.gnd_pixmap = load_masked_pixmap( 'plugin_system/plugins/industrial_digital_in_4/dio_gnd.bmp') self.vcc_pixmap = load_masked_pixmap( 'plugin_system/plugins/industrial_digital_in_4/dio_vcc.bmp') self.lbl_stat_i_ch = [ self.lbl_stat_i_ch0, self.lbl_stat_i_ch1, self.lbl_stat_i_ch2, self.lbl_stat_i_ch3 ] self.lbl_stat_v_ch = [ self.lbl_stat_v_ch0, self.lbl_stat_v_ch1, self.lbl_stat_v_ch2, self.lbl_stat_v_ch3 ] self.cbe_get_value = CallbackEmulator(self, self.idi4.get_value, None, self.cb_value, self.increase_error_count) self.cbox_cs0_cfg.currentIndexChanged.connect( self.cbox_cs0_cfg_changed) self.cbox_cs1_cfg.currentIndexChanged.connect( self.cbox_cs1_cfg_changed) self.cbox_cs2_cfg.currentIndexChanged.connect( self.cbox_cs2_cfg_changed) self.cbox_cs3_cfg.currentIndexChanged.connect( self.cbox_cs3_cfg_changed)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletSoundPressureLevel, *args) self.setupUi(self) self.sound_pressure_level = self.device self.cbe_get_decibel = CallbackEmulator(self.sound_pressure_level.get_decibel, None, self.cb_decibel, self.increase_error_count) self.qtcb_spectrum.connect(self.cb_spectrum) self.thermo = TuningThermo() plots_spectrum = [('Spectrum', Qt.red, None, '{} °C'.format)] self.plot_widget_spectrum = PlotWidget('Value [dB]', plots_spectrum, clear_button=None, x_diff=20480, x_scale_title_text='Frequency [Hz]', x_scale_skip_last_tick=False, key=None, y_resolution=0.1, y_scale_shrinkable=False) self.plot_widget_spectrum.set_x_scale(512*40//5, 1) self.combo_fft_size.currentIndexChanged.connect(self.config_changed) self.combo_weighting.currentIndexChanged.connect(self.config_changed) self.layout_graph.addWidget(self.plot_widget_spectrum) self.layout_decibel.insertWidget(3, self.thermo) self.last_spectrum_length = 512 self.last_y_data = [0]*512
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletPiezoSpeakerV2, *args) self.setupUi(self) self.ps = self.device self.qtcb_beep_finished.connect(self.cb_beep) self.ps.register_callback(self.ps.CALLBACK_BEEP_FINISHED, self.qtcb_beep_finished.emit) self.qtcb_alarm_finished.connect(self.cb_alarm) self.ps.register_callback(self.ps.CALLBACK_ALARM_FINISHED, self.qtcb_alarm_finished.emit) self.frequency_syncer = SliderSpinSyncer(self.frequency_slider, self.frequency_spinbox, self.frequency_changed, spin_signal='valueChanged') self.volume_syncer = SliderSpinSyncer(self.volume_slider, self.volume_spinbox, self.volume_changed, spin_signal='valueChanged') self.beep_duration_syncer = SliderSpinSyncer(self.beep_duration_slider, self.beep_duration_spinbox, self.beep_duration_changed, spin_signal='valueChanged') self.alarm_duration_syncer = SliderSpinSyncer(self.alarm_duration_slider, self.alarm_duration_spinbox, self.alarm_duration_changed, spin_signal='valueChanged') self.alarm_start_frequency_syncer = SliderSpinSyncer(self.alarm_start_frequency_slider, self.alarm_start_frequency_spinbox, self.alarm_start_frequency_changed, spin_signal='valueChanged') self.alarm_end_frequency_syncer = SliderSpinSyncer(self.alarm_end_frequency_slider, self.alarm_end_frequency_spinbox, self.alarm_end_frequency_changed, spin_signal='valueChanged') self.alarm_step_size_syncer = SliderSpinSyncer(self.alarm_step_size_slider, self.alarm_step_size_spinbox, self.alarm_step_size_changed, spin_signal='valueChanged') self.alarm_step_delay_syncer = SliderSpinSyncer(self.alarm_step_delay_slider, self.alarm_step_delay_spinbox, self.alarm_step_delay_changed, spin_signal='valueChanged') self.beep_button.clicked.connect(self.beep_clicked) self.alarm_button.clicked.connect(self.alarm_clicked) self.new_value_timer = QTimer(self) self.new_value_timer.timeout.connect(self.new_value_update) self.last_frequency = self.frequency_spinbox.value() self.last_volume = self.volume_spinbox.value()
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletThermalImaging, *args) self.setupUi(self) self.thermal_imaging = self.device self.thermal_image = ThermalImage(80, 60, self) self.thermal_image_layout.insertWidget(0, self.thermal_image) self.thermal_image_bar = ThermalImageBar(80, 20, self.thermal_image, self) self.thermal_image_layout.insertWidget(2, self.thermal_image_bar) self.agc_roi_button.clicked.connect(self.cb_roi_button) self.spotmeter_roi_button.clicked.connect(self.cb_roi_button) self.agc_clip_limit_high_spin.editingFinished.connect( self.update_agc_data) self.agc_clip_limit_low_spin.editingFinished.connect( self.update_agc_data) self.agc_dampening_factor_spin.editingFinished.connect( self.update_agc_data) self.agc_empty_counts_spin.editingFinished.connect( self.update_agc_data) self.color_palette_box.currentIndexChanged.connect( self.color_palette_changed) self.resolution_box.currentIndexChanged.connect(self.update_resolution) self.image_combo.currentIndexChanged.connect(self.update_image_combo) self.qtcb_high_contrast_image.connect(self.cb_high_contrast_image) self.qtcb_temperature_image.connect(self.cb_temperature_image) self.valid_resolution = self.resolution_box.currentIndex() self.update_agc_roi_label()
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletThermalImaging, *args) self.setupUi(self) self.thermal_imaging = self.device self.previous_image_transfer_config = None self.thermal_image = ThermalImage(80, 60, self) self.thermal_image_layout.insertWidget(0, self.thermal_image) self.thermal_image_bar = ThermalImageBar(80, 20, self.thermal_image, self) self.thermal_image_layout.insertWidget(2, self.thermal_image_bar) self.agc_roi_button.clicked.connect(self.cb_roi_button) self.spotmeter_roi_button.clicked.connect(self.cb_roi_button) self.image_combo.setItemData(0, BrickletThermalImaging.IMAGE_TRANSFER_CALLBACK_HIGH_CONTRAST_IMAGE) self.image_combo.setItemData(1, BrickletThermalImaging.IMAGE_TRANSFER_CALLBACK_TEMPERATURE_IMAGE) self.agc_clip_limit_high_spin.editingFinished.connect(self.update_agc_data) self.agc_clip_limit_low_spin.editingFinished.connect(self.update_agc_data) self.agc_dampening_factor_spin.editingFinished.connect(self.update_agc_data) self.agc_empty_counts_spin.editingFinished.connect(self.update_agc_data) self.color_palette_box.currentIndexChanged.connect(self.color_palette_changed) self.resolution_box.currentIndexChanged.connect(self.update_resolution) self.image_combo.currentIndexChanged.connect(self.update_image_combo) self.qtcb_high_contrast_image.connect(self.cb_high_contrast_image) self.qtcb_temperature_image.connect(self.cb_temperature_image) self.valid_resolution = self.resolution_box.currentIndex() self.update_agc_roi_label()
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletDualButtonV2, *args) self.setupUi(self) self.button = self.device self.cbe_button_state = CallbackEmulator(self.button.get_button_state, self.get_button_state_async, self.increase_error_count) self.cbe_led_state = CallbackEmulator(self.button.get_led_state, self.get_led_state_async, self.increase_error_count) self.led_r = BrickletDualButtonV2.LED_STATE_OFF self.led_l = BrickletDualButtonV2.LED_STATE_OFF self.button_r = BrickletDualButtonV2.BUTTON_STATE_RELEASED self.button_l = BrickletDualButtonV2.BUTTON_STATE_RELEASED self.button_led_on_button_r.clicked.connect(self.on_button_r_clicked) self.button_led_on_button_l.clicked.connect(self.on_button_l_clicked) self.button_led_off_button_r.clicked.connect(self.off_button_r_clicked) self.button_led_off_button_l.clicked.connect(self.off_button_l_clicked) self.button_toggle_button_r.clicked.connect(self.toggle_button_r_clicked) self.button_toggle_button_l.clicked.connect(self.toggle_button_l_clicked) self.count = 0
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletOutdoorWeather, *args) self.outdoor_weather = self.device self.changing = False self.setupUi(self) self.cbe_identifiers_station = CallbackEmulator(self.outdoor_weather.get_station_identifiers, None, self.cb_station_identifiers, self.increase_error_count) self.cbe_identifiers_sensor = CallbackEmulator(self.outdoor_weather.get_sensor_identifiers, None, self.cb_sensor_identifiers, self.increase_error_count) self.combo_identifier_station.currentIndexChanged.connect(self.update_station) self.combo_identifier_sensor.currentIndexChanged.connect(self.update_sensor) self.identifiers_station = [] self.identifiers_sensor = [] self.data_timer_station = QTimer(self) self.data_timer_station.timeout.connect(self.update_station) self.data_timer_sensor = QTimer(self) self.data_timer_sensor.timeout.connect(self.update_sensor)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletLCD128x64, *args) self.setupUi(self) self.lcd = self.device self.scribble_area = ScribbleArea(128, 64) self.image_button_layout.insertWidget(0, self.scribble_area) self.contrast_syncer = SliderSpinSyncer( self.contrast_slider, self.contrast_spin, lambda value: self.new_configuration()) self.backlight_syncer = SliderSpinSyncer( self.backlight_slider, self.backlight_spin, lambda value: self.new_configuration()) self.char_syncer = SliderSpinSyncer(self.char_slider, self.char_spin, self.char_slider_changed) self.draw_button.clicked.connect(self.draw_clicked) self.clear_button.clicked.connect(self.clear_clicked) self.send_button.clicked.connect(self.send_clicked) self.clear_display_button.clicked.connect(self.clear_display_clicked) self.invert_checkbox.stateChanged.connect(self.new_configuration) self.current_char_value = -1 self.write_line_response_expected = False self.cbe_touch_position = CallbackEmulator( self.lcd.get_touch_position, self.scribble_area.touch_position, self.increase_error_count) self.cbe_touch_gesture = CallbackEmulator( self.lcd.get_touch_gesture, self.scribble_area.touch_gesture, self.increase_error_count)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletTemperatureV2, *args) self.tem = self.device self.cbe_temperature = CallbackEmulator(self.tem.get_temperature, self.cb_temperature, self.increase_error_count) self.current_temperature = None # float, °C plots_temperature = [(u'Temperature', Qt.red, lambda: self.current_temperature, u'{} °C'.format)] self.plot_widget_temperature = PlotWidget(u'Temperature [°C]', plots_temperature) self.enable_heater = QCheckBox("Enable Heater") self.enable_heater.stateChanged.connect(self.enable_heater_changed) layout_plot = QHBoxLayout() layout_plot.addWidget(self.plot_widget_temperature) layout_config = QHBoxLayout() layout_config.addStretch() layout_config.addWidget(self.enable_heater) layout_config.addStretch() layout_main = QVBoxLayout(self) layout_main.addLayout(layout_plot) layout_main.addLayout(layout_config)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletHallEffectV2, *args) self.setupUi(self) self.hf = self.device self.cbe_magnetic_flux_density = CallbackEmulator(self.hf.get_magnetic_flux_density, None, self.cb_magnetic_flux_density, self.increase_error_count) self.cbe_counter = CallbackEmulator(self.get_counter, False, self.cb_counter, self.increase_error_count) self.current_magnetic_flux_density = CurveValueWrapper() plots = [('Magnetic Flux Density', Qt.red, self.current_magnetic_flux_density, '{} µT'.format)] self.plot_widget = PlotWidget('Magnetic Flux Density [µT]', plots, y_resolution=1.0) self.button_reset.clicked.connect(self.button_reset_clicked) self.spinbox_low.editingFinished.connect(self.new_config) self.spinbox_high.editingFinished.connect(self.new_config) self.spinbox_debounce.editingFinished.connect(self.new_config) self.main_vert_layout.insertWidget(0, self.plot_widget)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletThermalImaging, *args) self.setupUi(self) self.thermal_imaging = self.device self.previous_image_transfer_config = None self.agc_roi_from = QPoint(0, 0) self.agc_roi_to = QPoint(79, 59) self.spotmeter_roi_from = QPoint(0, 0) self.spotmeter_roi_to = QPoint(79, 59) self.thermal_image = ThermalImage(80, 60, self, self) self.thermal_image.agc_roi_changed.connect(self.update_agc_roi) self.thermal_image.spotmeter_roi_changed.connect( self.update_spotmeter_roi) self.thermal_image_layout.insertWidget(0, self.thermal_image) self.thermal_image_bar = ThermalImageBar(80, 20, self.thermal_image, self, self) self.thermal_image_layout.insertWidget(2, self.thermal_image_bar) self.combo_scale_factor.currentIndexChanged.connect( lambda: self.thermal_image.scale_factor_changed( int(1 + 4 * float(self.combo_scale_factor.currentText()[:-1])) )) self.agc_roi_button.clicked.connect(self.cb_roi_button) self.spotmeter_roi_button.clicked.connect(self.cb_roi_button) self.image_combo.setItemData( 0, BrickletThermalImaging.IMAGE_TRANSFER_CALLBACK_HIGH_CONTRAST_IMAGE) self.image_combo.setItemData( 1, BrickletThermalImaging.IMAGE_TRANSFER_CALLBACK_TEMPERATURE_IMAGE) self.agc_clip_limit_high_spin.editingFinished.connect( self.update_agc_data) self.agc_clip_limit_low_spin.editingFinished.connect( self.update_agc_data) self.agc_dampening_factor_spin.editingFinished.connect( self.update_agc_data) self.agc_empty_counts_spin.editingFinished.connect( self.update_agc_data) self.color_palette_box.currentIndexChanged.connect( self.color_palette_changed) self.resolution_box.currentIndexChanged.connect(self.update_resolution) self.image_combo.currentIndexChanged.connect(self.update_image_combo) self.qtcb_high_contrast_image.connect(self.cb_high_contrast_image) self.qtcb_temperature_image.connect(self.cb_temperature_image) self.valid_resolution = self.resolution_box.currentIndex() self.thermal_image_wrapper = None self.button_detach_image.clicked.connect(self.detach_image_clicked) self.update_agc_roi_label()
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletPerformanceDC, *args) self.setupUi(self) self.dc = self.device self.full_brake_button.clicked.connect(self.full_brake_clicked) self.enable_checkbox.stateChanged.connect(self.enable_state_changed) self.radio_mode_brake.toggled.connect(self.brake_value_changed) self.radio_mode_coast.toggled.connect(self.coast_value_changed) self.gpio0_stop_rising_check.stateChanged.connect( lambda: self.gpio_action_changed(0)) self.gpio0_stop_falling_check.stateChanged.connect( lambda: self.gpio_action_changed(0)) self.gpio0_brake_rising_check.stateChanged.connect( lambda: self.gpio_action_changed(0)) self.gpio0_brake_falling_check.stateChanged.connect( lambda: self.gpio_action_changed(0)) self.gpio1_stop_rising_check.stateChanged.connect( lambda: self.gpio_action_changed(1)) self.gpio1_stop_falling_check.stateChanged.connect( lambda: self.gpio_action_changed(1)) self.gpio1_brake_rising_check.stateChanged.connect( lambda: self.gpio_action_changed(1)) self.gpio1_brake_falling_check.stateChanged.connect( lambda: self.gpio_action_changed(1)) self.gpio0_debounce_spin.valueChanged.connect( lambda: self.gpio_configuration_changed(0)) self.gpio0_stop_deceleration_spin.valueChanged.connect( lambda: self.gpio_configuration_changed(0)) self.gpio1_debounce_spin.valueChanged.connect( lambda: self.gpio_configuration_changed(1)) self.gpio1_stop_deceleration_spin.valueChanged.connect( lambda: self.gpio_configuration_changed(1)) self.velocity_syncer = SliderSpinSyncer(self.velocity_slider, self.velocity_spin, self.velocity_changed) self.acceleration_syncer = SliderSpinSyncer(self.acceleration_slider, self.acceleration_spin, self.motion_changed) self.deceleration_syncer = SliderSpinSyncer(self.deceleration_slider, self.deceleration_spin, self.motion_changed) self.frequency_syncer = SliderSpinSyncer(self.frequency_slider, self.frequency_spin, self.frequency_changed) self.cbe_power_statistics = CallbackEmulator( self.dc.get_power_statistics, None, self.get_power_statistics_async, self.increase_error_count) self.cbe_current_velocity = CallbackEmulator( self.dc.get_current_velocity, None, self.get_current_velocity_async, self.increase_error_count) self.cbe_gpio_state = CallbackEmulator(self.dc.get_gpio_state, None, self.get_gpio_state_async, self.increase_error_count)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletRS232V2, *args) self.setupUi(self) self.text.setReadOnly(True) self.rs232 = self.device self.read_callback_was_enabled = None self.qtcb_read.connect(self.cb_read) self.rs232.register_callback(self.rs232.CALLBACK_READ, self.qtcb_read.emit) self.qtcb_error_count.connect(self.cb_error_count) self.rs232.register_callback(self.rs232.CALLBACK_ERROR_COUNT, self.qtcb_error_count.emit) self.input_combobox.addItem("") self.input_combobox.lineEdit().setMaxLength(65533) self.input_combobox.lineEdit().returnPressed.connect(self.input_changed) self.line_ending_lineedit.setValidator(HexValidator()) self.line_ending_combobox.currentIndexChanged.connect(self.line_ending_changed) self.line_ending_lineedit.editingFinished.connect(self.line_ending_changed) self.baudrate_spinbox.valueChanged.connect(self.configuration_changed) self.parity_combobox.currentIndexChanged.connect(self.configuration_changed) self.stopbits_spinbox.valueChanged.connect(self.configuration_changed) self.wordlength_spinbox.valueChanged.connect(self.configuration_changed) self.flowcontrol_combobox.currentIndexChanged.connect(self.configuration_changed) self.text_type_combobox.currentIndexChanged.connect(self.text_type_changed) self.hextext = QHexeditWidget(self.text.font()) self.hextext.hide() self.layout().insertWidget(2, self.hextext) self.button_clear_text.clicked.connect(lambda: self.text.setPlainText("")) self.button_clear_text.clicked.connect(self.hextext.clear) self.save_button.clicked.connect(self.save_clicked) self.error_stream_oos = 0 self.last_char = '' if self.baudrate_spinbox.value() > BAUDRATE_MAX_RS232: self.label_note_baud.show() else: self.label_note_baud.hide() if self.flowcontrol_combobox.currentIndex() == CBOX_IDX_FC_HW: self.label_note_fc_hw.show() else: self.label_note_fc_hw.hide()
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletHATZero, *args) self.setupUi(self) self.hat_zero = self.device self.ports = [self.port_a, self.port_b, self.port_c, self.port_d] self.update_timer = QTimer() self.update_timer.timeout.connect(self.update_bricklets)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletRGBLEDV2, *args) self.rgb_led = self.device self.changing = False self.set_rgb_value_response_expected = None self.setupUi(self) self.r_syncer = SliderSpinSyncer(self.slider_r, self.spin_r, self.rgb_changed, spin_signal='valueChanged') self.g_syncer = SliderSpinSyncer(self.slider_g, self.spin_g, self.rgb_changed, spin_signal='valueChanged') self.b_syncer = SliderSpinSyncer(self.slider_b, self.spin_b, self.rgb_changed, spin_signal='valueChanged') self.h_syncer = SliderSpinSyncer(self.slider_h, self.spin_h, self.hsl_changed, spin_signal='valueChanged') self.s_syncer = SliderSpinSyncer(self.slider_s, self.spin_s, self.hsl_changed, spin_signal='valueChanged') self.l_syncer = SliderSpinSyncer(self.slider_l, self.spin_l, self.hsl_changed, spin_signal='valueChanged') def set_color(r, g, b): self.changing = True self.spin_r.setValue(r) self.spin_g.setValue(g) self.spin_b.setValue(b) self.changing = False self.rgb_changed() for color, button in zip( [(0, 0, 0), (255, 255, 255), (255, 0, 0), (255, 255, 0), (0, 255, 0), (0, 255, 255), (0, 0, 255), (255, 0, 255)], [ self.button_black, self.button_white, self.button_red, self.button_yellow, self.button_green, self.button_cyan, self.button_blue, self.button_magenta ]): button.clicked.connect(lambda clicked, c=color: set_color(*c)) pixmap = QPixmap(16, 16) QPainter(pixmap).fillRect(0, 0, 16, 16, QColor(*color)) button.setIcon(QIcon(pixmap)) button.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletRGBLEDButton, *args) self.rgb_led_button = self.device self.changing = False self.setupUi(self) self.qtcb_button_state_changed.connect(self.cb_button_state_changed) self.rgb_led_button.register_callback( self.rgb_led_button.CALLBACK_BUTTON_STATE_CHANGED, self.qtcb_button_state_changed.emit) self.r_syncer = SliderSpinSyncer(self.slider_r, self.spin_r, self.rgb_changed, spin_signal='valueChanged') self.g_syncer = SliderSpinSyncer(self.slider_g, self.spin_g, self.rgb_changed, spin_signal='valueChanged') self.b_syncer = SliderSpinSyncer(self.slider_b, self.spin_b, self.rgb_changed, spin_signal='valueChanged') self.h_syncer = SliderSpinSyncer(self.slider_h, self.spin_h, self.hsl_changed, spin_signal='valueChanged') self.s_syncer = SliderSpinSyncer(self.slider_s, self.spin_s, self.hsl_changed, spin_signal='valueChanged') self.l_syncer = SliderSpinSyncer(self.slider_l, self.spin_l, self.hsl_changed, spin_signal='valueChanged') def set_color(r, g, b): self.changing = True self.spin_r.setValue(r) self.spin_g.setValue(g) self.spin_b.setValue(b) self.changing = False self.rgb_changed() self.button_black.clicked.connect(lambda: set_color(0, 0, 0)) self.button_white.clicked.connect(lambda: set_color(255, 255, 255)) self.button_red.clicked.connect(lambda: set_color(255, 0, 0)) self.button_yellow.clicked.connect(lambda: set_color(255, 255, 0)) self.button_green.clicked.connect(lambda: set_color(0, 255, 0)) self.button_cyan.clicked.connect(lambda: set_color(0, 255, 255)) self.button_blue.clicked.connect(lambda: set_color(0, 0, 255)) self.button_magenta.clicked.connect(lambda: set_color(255, 0, 255))
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletIndustrialQuadRelayV2, *args) self.setupUi(self) self.iqr = self.device self.open_pixmap = load_masked_pixmap('plugin_system/plugins/industrial_quad_relay/relay_open.bmp') self.close_pixmap = load_masked_pixmap('plugin_system/plugins/industrial_quad_relay/relay_close.bmp') self.relay_buttons = [self.b0, self.b1, self.b2, self.b3] self.relay_button_icons = [self.b0_icon, self.b1_icon, self.b2_icon, self.b3_icon] self.relay_button_labels = [self.b0_label, self.b1_label, self.b2_label, self.b3_label] for icon in self.relay_button_icons: icon.setPixmap(self.open_pixmap) icon.show() for i in range(len(self.relay_buttons)): self.relay_buttons[i].clicked.connect(functools.partial(self.relay_button_clicked, i)) self.monoflop_values = [] self.monoflop_times = [] for i in range(4): self.monoflop_channel.setItemData(i, i) monoflop_value = QComboBox() monoflop_value.addItem('On', True) monoflop_value.addItem('Off', False) self.monoflop_values.append(monoflop_value) self.monoflop_value_stack.addWidget(monoflop_value) monoflop_time = QSpinBox() monoflop_time.setRange(1, (1 << 31) - 1) monoflop_time.setValue(1000) self.monoflop_times.append(monoflop_time) self.monoflop_time_stack.addWidget(monoflop_time) self.monoflop = Monoflop(self.iqr, [0, 1, 2, 3], self.monoflop_values, self.cb_value_change_by_monoflop, self.monoflop_times, None, self) self.monoflop_channel.currentIndexChanged.connect(self.monoflop_channel_changed) self.monoflop_go.clicked.connect(self.monoflop_go_clicked) self.cbox_cs0_cfg.currentIndexChanged.connect(self.cbox_cs0_cfg_changed) self.cbox_cs1_cfg.currentIndexChanged.connect(self.cbox_cs1_cfg_changed) self.cbox_cs2_cfg.currentIndexChanged.connect(self.cbox_cs2_cfg_changed) self.cbox_cs3_cfg.currentIndexChanged.connect(self.cbox_cs3_cfg_changed)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletEnergyMonitor, *args) self.setupUi(self) self.energy_monitor = self.device self.cbe_get_energy_data = CallbackEmulator( self.energy_monitor.get_energy_data, None, self.cb_energy_data, self.increase_error_count) self.cbe_get_transformer_status = CallbackEmulator( self.energy_monitor.get_transformer_status, None, self.cb_transformer_status, self.increase_error_count) plots_waveform_v = [('Waveform V', Qt.red, None, None)] self.plot_widget_waveform_v = PlotWidget( 'Voltage [V]', plots_waveform_v, clear_button=None, x_diff=768 * ENERGY_MONITOR_MS_PER_TICK, x_scale_title_text='Time [ms]', key=None, x_scale_visible=False) plots_waveform_a = [('Waveform A', Qt.red, None, None)] self.plot_widget_waveform_a = PlotWidget( 'Current [A]', plots_waveform_a, clear_button=None, x_diff=768 * ENERGY_MONITOR_MS_PER_TICK, x_scale_title_text='Time [ms]', key=None) self.plot_widget_waveform_v.add_y_scale_sibling( self.plot_widget_waveform_a) self.plot_widget_waveform_a.add_y_scale_sibling( self.plot_widget_waveform_v) # try to make the actual curve area equal in height by fiddling with the # minimum-height and the stretch factors self.plot_widget_waveform_v.setMinimumHeight(194) self.plot_widget_waveform_a.setMinimumHeight(250) self.layout_graph.insertWidget(0, self.plot_widget_waveform_v, 86) self.layout_graph.addWidget(self.plot_widget_waveform_a, 100) self.x_data = [ x * ENERGY_MONITOR_MS_PER_TICK for x in list(range(768)) ] self.button_energy.clicked.connect(self.button_energy_clicked) self.button_transformer_settings.clicked.connect( self.button_transformer_settings_clicked) self.voltage_connected = True self.current_connected = True self.running = False
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletAnalogOutV3, *args) self.setupUi(self) self.ao = self.device self.output_voltage_box.editingFinished.connect(self.voltage_finished) self.cbe_input_voltage = CallbackEmulator(self.ao.get_input_voltage, None, self.cb_input_voltage, self.increase_error_count)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletRealTimeClockV2, *args) self.setupUi(self) self.rtc = self.device self.cbe_date_time = CallbackEmulator(self.rtc.get_date_time, None, self.cb_date_time, self.increase_error_count, expand_result_tuple_for_callback=True, ignore_last_result=True) self.calibration = None self.offset = 0 self.combo_weekday_manual.addItem('Monday', BrickletRealTimeClockV2.WEEKDAY_MONDAY) self.combo_weekday_manual.addItem('Tuesday', BrickletRealTimeClockV2.WEEKDAY_TUESDAY) self.combo_weekday_manual.addItem('Wednesday', BrickletRealTimeClockV2.WEEKDAY_WEDNESDAY) self.combo_weekday_manual.addItem('Thursday', BrickletRealTimeClockV2.WEEKDAY_THURSDAY) self.combo_weekday_manual.addItem('Friday', BrickletRealTimeClockV2.WEEKDAY_FRIDAY) self.combo_weekday_manual.addItem('Saturday', BrickletRealTimeClockV2.WEEKDAY_SATURDAY) self.combo_weekday_manual.addItem('Sunday', BrickletRealTimeClockV2.WEEKDAY_SUNDAY) index = self.combo_weekday_manual.findData(self.rtc.WEEKDAY_SATURDAY) self.combo_weekday_manual.setCurrentIndex(index) self.button_save_local.clicked.connect(self.save_local) self.button_save_manual.clicked.connect(self.save_manual) self.button_load_manual.clicked.connect(self.load_manual) self.button_calibration.clicked.connect(self.calibrate) self.combo_alarm_weekday.addItem('Disabled', BrickletRealTimeClockV2.ALARM_MATCH_DISABLED) self.combo_alarm_weekday.addItem('Monday', BrickletRealTimeClockV2.WEEKDAY_MONDAY) self.combo_alarm_weekday.addItem('Tuesday', BrickletRealTimeClockV2.WEEKDAY_TUESDAY) self.combo_alarm_weekday.addItem('Wednesday', BrickletRealTimeClockV2.WEEKDAY_WEDNESDAY) self.combo_alarm_weekday.addItem('Thursday', BrickletRealTimeClockV2.WEEKDAY_THURSDAY) self.combo_alarm_weekday.addItem('Friday', BrickletRealTimeClockV2.WEEKDAY_FRIDAY) self.combo_alarm_weekday.addItem('Saturday', BrickletRealTimeClockV2.WEEKDAY_SATURDAY) self.combo_alarm_weekday.addItem('Sunday', BrickletRealTimeClockV2.WEEKDAY_SUNDAY) self.button_set_alarm.clicked.connect(self.set_alarm) self.button_disable_alarm.clicked.connect(self.disable_alarm) self.button_clear_alarms.clicked.connect(self.clear_alarms) self.spin_alarm_month.valueChanged.connect(self.check_alarm) self.spin_alarm_day.valueChanged.connect(self.check_alarm) self.spin_alarm_interval.valueChanged.connect(self.check_alarm) self.qtcb_alarm.connect(self.cb_alarm) self.rtc.register_callback(self.rtc.CALLBACK_ALARM, self.qtcb_alarm.emit)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletGPSV2, *args) self.setupUi(self) self.gps = self.device self.cbe_universal = CallbackEmulator(self.get_universal, self.cb_universal, self.increase_error_count) self.cbe_universal_gps = CallbackEmulator( self.get_universal_gps, self.cb_universal_gps, self.increase_error_count ) self.cbe_universal_glo = CallbackEmulator( self.get_universal_glo, self.cb_universal_glo, self.increase_error_count ) self.qtcb_pps.connect(self.cb_pps) self.gps.register_callback(self.gps.CALLBACK_PULSE_PER_SECOND, self.qtcb_pps.emit) self.format_combobox.currentIndexChanged.connect(self.format_changed) self.show_pos.clicked.connect(self.show_pos_clicked) self.hot_start.clicked.connect(lambda: self.restart_clicked(0)) self.warm_start.clicked.connect(lambda: self.restart_clicked(1)) self.cold_start.clicked.connect(lambda: self.restart_clicked(2)) self.factory_reset.clicked.connect(lambda: self.restart_clicked(3)) self.had_fix = False self.last_lat = 0 self.last_ns = "U" self.last_long = 0 self.last_ew = "U" self.gps_counter = 0 self.glo_counter = 0 self.gps_model = QStandardItemModel(32, 3, self) self.gps_table.setModel(self.gps_model) self.gps_model.setHorizontalHeaderItem(0, QStandardItem(u"Elevation (°)")) self.gps_model.setHorizontalHeaderItem(1, QStandardItem(u"Azimuth (°)")) self.gps_model.setHorizontalHeaderItem(2, QStandardItem(u"SNR (dB)")) for i in range(32): self.gps_model.setVerticalHeaderItem(i, QStandardItem(u"Sat " + str(i + 1))) self.gps_table.horizontalHeader().setResizeMode(QHeaderView.Stretch) self.glo_model = QStandardItemModel(32, 3, self) self.glo_table.setModel(self.glo_model) self.glo_model.setHorizontalHeaderItem(0, QStandardItem(u"Elevation (°)")) self.glo_model.setHorizontalHeaderItem(1, QStandardItem(u"Azimuth (°)")) self.glo_model.setHorizontalHeaderItem(2, QStandardItem(u"SNR (dB)")) for i in range(32): self.glo_model.setVerticalHeaderItem(i, QStandardItem(u"Sat " + str(i + 1 + 64))) self.glo_table.horizontalHeader().setResizeMode(QHeaderView.Stretch)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletVoltageCurrentV2, *args) self.setupUi(self) self.vc = self.device self.cbe_voltage = CallbackEmulator(self.vc.get_voltage, None, self.cb_voltage, self.increase_error_count) self.cbe_current = CallbackEmulator(self.vc.get_current, None, self.cb_current, self.increase_error_count) self.cbe_power = CallbackEmulator(self.vc.get_power, None, self.cb_power, self.increase_error_count) self.current_voltage = CurveValueWrapper() # float, V self.current_current = CurveValueWrapper() # float, A self.current_power = CurveValueWrapper() # float, W plots_voltage = [('Voltage', Qt.red, self.current_voltage, format_voltage)] plots_current = [('Current', Qt.blue, self.current_current, format_current)] plots_power = [('Power', Qt.darkGreen, self.current_power, format_power)] self.plot_widget_voltage = PlotWidget( 'Voltage [V]', plots_voltage, clear_button=self.button_clear_graphs, y_resolution=0.001) self.plot_widget_current = PlotWidget( 'Current [A]', plots_current, clear_button=self.button_clear_graphs, y_resolution=0.001) self.plot_widget_power = PlotWidget( 'Power [W]', plots_power, clear_button=self.button_clear_graphs, y_resolution=0.001) self.save_conf_button.clicked.connect(self.save_conf_clicked) self.calibration = None self.button_calibration.clicked.connect(self.calibration_clicked) hlayout = QHBoxLayout() hlayout.addWidget(self.plot_widget_voltage) hlayout.addWidget(self.plot_widget_current) hlayout.addWidget(self.plot_widget_power) self.main_layout.insertLayout(0, hlayout)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletIsolator, *args) self.setupUi(self) self.isolator = self.device self.cbe_statistics = CallbackEmulator(self.isolator.get_statistics, self.cb_get_statistics, self.increase_error_count) self.last_connected = None
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletIsolator, *args) self.setupUi(self) self.isolator = self.device self.cbe_statistics = CallbackEmulator(self.isolator.get_statistics, None, self.cb_statistics, self.increase_error_count) self.last_connected = None
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletEVSEV2, *args) self.setupUi(self) self.evse = self.device self.cbe_state = CallbackEmulator(self, self.evse.get_state, None, self.state_cb, self.increase_error_count) self.cbe_low_level_state = CallbackEmulator(self, self.evse.get_low_level_state, None, self.low_level_state_cb, self.increase_error_count) self.cbe_max_charging_current = CallbackEmulator(self, self.evse.get_max_charging_current, None, self.max_charging_current_cb, self.increase_error_count) self.cbe_energy_meter_values = CallbackEmulator(self, self.evse.get_energy_meter_values, None, self.energy_meter_values_cb, self.increase_error_count) self.cbe_energy_meter_state = CallbackEmulator(self, self.evse.get_energy_meter_state, None, self.energy_meter_state_cb, self.increase_error_count) self.cbe_dc_fault_current_state = CallbackEmulator(self, self.evse.get_dc_fault_current_state, None, self.dc_fault_current_state_cb, self.increase_error_count) self.combo_gpio_input.currentIndexChanged.connect(self.gpio_changed) self.combo_gpio_output.currentIndexChanged.connect(self.gpio_changed) self.combo_shutdown_input.currentIndexChanged.connect(self.gpio_changed) self.checkbox_autostart.stateChanged.connect(self.autostart_changed) self.button_start_charging.clicked.connect(self.start_charging_clicked) self.button_stop_charging.clicked.connect(self.stop_charging_clicked) self.button_dc_fault_reset.clicked.connect(self.dc_fault_reset_clicked) self.button_energy_meter_reset.clicked.connect(self.energy_meter_reset_clicked) self.spinbox_max_charging_current.valueChanged.connect(self.max_charging_current_changed) self.button_energy_meter_detailed.clicked.connect(self.energy_meter_detailed_clicked) self.button_read_page.clicked.connect(self.read_page_clicked) self.checkbox_managed.stateChanged.connect(self.managed_changed) self.spin_managed_current.valueChanged.connect(self.managed_current_changed) self.combo_button_config.currentIndexChanged.connect(self.button_config_changed) self.button_set_indicator.clicked.connect(self.set_indicator_clicked)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletRealTimeClockV2, *args) self.setupUi(self) self.rtc = self.device self.cbe_date_time = CallbackEmulator(self.rtc.get_date_time, self.cb_date_time, self.increase_error_count, ignore_last_data=True) self.calibration = None self.offset = 0 self.combo_weekday_manual.addItem('Monday', BrickletRealTimeClockV2.WEEKDAY_MONDAY) self.combo_weekday_manual.addItem('Tuesday', BrickletRealTimeClockV2.WEEKDAY_TUESDAY) self.combo_weekday_manual.addItem('Wednesday', BrickletRealTimeClockV2.WEEKDAY_WEDNESDAY) self.combo_weekday_manual.addItem('Thursday', BrickletRealTimeClockV2.WEEKDAY_THURSDAY) self.combo_weekday_manual.addItem('Friday', BrickletRealTimeClockV2.WEEKDAY_FRIDAY) self.combo_weekday_manual.addItem('Saturday', BrickletRealTimeClockV2.WEEKDAY_SATURDAY) self.combo_weekday_manual.addItem('Sunday', BrickletRealTimeClockV2.WEEKDAY_SUNDAY) index = self.combo_weekday_manual.findData(self.rtc.WEEKDAY_SATURDAY) self.combo_weekday_manual.setCurrentIndex(index) self.button_save_local.clicked.connect(self.save_local) self.button_save_manual.clicked.connect(self.save_manual) self.button_load_manual.clicked.connect(self.load_manual) self.button_calibration.clicked.connect(self.calibrate) self.combo_alarm_weekday.addItem('Disabled', BrickletRealTimeClockV2.ALARM_MATCH_DISABLED) self.combo_alarm_weekday.addItem('Monday', BrickletRealTimeClockV2.WEEKDAY_MONDAY) self.combo_alarm_weekday.addItem('Tuesday', BrickletRealTimeClockV2.WEEKDAY_TUESDAY) self.combo_alarm_weekday.addItem('Wednesday', BrickletRealTimeClockV2.WEEKDAY_WEDNESDAY) self.combo_alarm_weekday.addItem('Thursday', BrickletRealTimeClockV2.WEEKDAY_THURSDAY) self.combo_alarm_weekday.addItem('Friday', BrickletRealTimeClockV2.WEEKDAY_FRIDAY) self.combo_alarm_weekday.addItem('Saturday', BrickletRealTimeClockV2.WEEKDAY_SATURDAY) self.combo_alarm_weekday.addItem('Sunday', BrickletRealTimeClockV2.WEEKDAY_SUNDAY) self.button_set_alarm.clicked.connect(self.set_alarm) self.button_disable_alarm.clicked.connect(self.disable_alarm) self.button_clear_alarms.clicked.connect(self.clear_alarms) self.spin_alarm_month.valueChanged.connect(self.check_alarm) self.spin_alarm_day.valueChanged.connect(self.check_alarm) self.spin_alarm_interval.valueChanged.connect(self.check_alarm) self.qtcb_alarm.connect(self.cb_alarm) self.rtc.register_callback(self.rtc.CALLBACK_ALARM, self.qtcb_alarm.emit)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletIndustrialQuadRelayV2, *args) self.setupUi(self) self.iqr = self.device self.open_pixmap = load_masked_pixmap( 'plugin_system/plugins/industrial_quad_relay/relay_open.bmp') self.close_pixmap = load_masked_pixmap( 'plugin_system/plugins/industrial_quad_relay/relay_close.bmp') self.relay_buttons = [self.b0, self.b1, self.b2, self.b3] self.relay_button_icons = [ self.b0_icon, self.b1_icon, self.b2_icon, self.b3_icon ] self.relay_button_labels = [ self.b0_label, self.b1_label, self.b2_label, self.b3_label ] for icon in self.relay_button_icons: icon.setPixmap(self.open_pixmap) icon.show() def get_button_lambda(button): return lambda: self.relay_button_clicked(button) for i in range(len(self.relay_buttons)): self.relay_buttons[i].clicked.connect(get_button_lambda(i)) self.qtcb_monoflop.connect(self.cb_monoflop) self.iqr.register_callback(self.iqr.CALLBACK_MONOFLOP_DONE, self.qtcb_monoflop.emit) self.monoflop_pin.currentIndexChanged.connect( self.monoflop_pin_changed) self.monoflop_go.clicked.connect(self.monoflop_go_clicked) self.monoflop_time_before = [1000] * 4 self.monoflop_pending = [False] * 4 self.update_timer = QTimer() self.update_timer.timeout.connect(self.update) self.update_timer.setInterval(50) self.cbox_cs0_cfg.currentIndexChanged.connect( self.cbox_cs0_cfg_changed) self.cbox_cs1_cfg.currentIndexChanged.connect( self.cbox_cs1_cfg_changed) self.cbox_cs2_cfg.currentIndexChanged.connect( self.cbox_cs2_cfg_changed) self.cbox_cs3_cfg.currentIndexChanged.connect( self.cbox_cs3_cfg_changed)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletPTCV2, *args) self.ptc = self.device self.str_connected = 'Sensor is <font color="green">connected</font>' self.str_not_connected = 'Sensor is <font color="red">not connected</font>' self.cbe_temperature = CallbackEmulator(self.ptc.get_temperature, self.cb_temperature, self.increase_error_count) self.wire_label = QLabel('Wire Type:') self.wire_combo = QComboBox() self.wire_combo.addItem('2-Wire') self.wire_combo.addItem('3-Wire') self.wire_combo.addItem('4-Wire') self.noise_label = QLabel('Noise Rejection Filter:') self.noise_combo = QComboBox() self.noise_combo.addItem('50 Hz') self.noise_combo.addItem('60 Hz') self.connected_label = QLabel(self.str_connected) self.current_temperature = None # float, °C self.wire_combo.currentIndexChanged.connect(self.wire_combo_index_changed) self.noise_combo.currentIndexChanged.connect(self.noise_combo_index_changed) plots = [('Temperature', Qt.red, lambda: self.current_temperature, u'{} °C'.format)] self.plot_widget = PlotWidget(u'Temperature [°C]', plots, extra_key_widgets=[self.connected_label]) hlayout = QHBoxLayout() hlayout.addWidget(self.wire_label) hlayout.addWidget(self.wire_combo) hlayout.addStretch() hlayout.addWidget(self.noise_label) hlayout.addWidget(self.noise_combo) line = QFrame() line.setFrameShape(QFrame.HLine) line.setFrameShadow(QFrame.Sunken) layout = QVBoxLayout(self) layout.addWidget(self.plot_widget) layout.addWidget(line) layout.addLayout(hlayout) self.connected_timer = QTimer() self.connected_timer.timeout.connect(self.update_connected) self.connected_timer.setInterval(1000)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletEVSE, *args) self.setupUi(self) self.evse = self.device self.cbe_state = CallbackEmulator(self.evse.get_state, None, self.state_cb, self.increase_error_count) self.cbe_low_level_state = CallbackEmulator( self.evse.get_low_level_state, None, self.low_level_state_cb, self.increase_error_count)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletMultiTouchV2, *args) self.setupUi(self) self.mt = self.device self.cbe_touch_state = CallbackEmulator(self.mt.get_touch_state, None, self.cb_touch_state, self.increase_error_count) self.mt_labels = [ self.mt_label_0, self.mt_label_1, self.mt_label_2, self.mt_label_3, self.mt_label_4, self.mt_label_5, self.mt_label_6, self.mt_label_7, self.mt_label_8, self.mt_label_9, self.mt_label_10, self.mt_label_11, self.mt_label_12, ] for label in self.mt_labels: label.setStyleSheet("QLabel { background-color : black; }") self.cbs = [ self.cb_0, self.cb_1, self.cb_2, self.cb_3, self.cb_4, self.cb_5, self.cb_6, self.cb_7, self.cb_8, self.cb_9, self.cb_10, self.cb_11, self.cb_12, ] for cb in self.cbs: cb.stateChanged.connect(self.state_changed) self.button_recalibrate.clicked.connect(self.recalibrate_clicked)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletHumidityV2, *args) self.hum = self.device self.cbe_humidity = CallbackEmulator(self.hum.get_humidity, self.cb_humidity, self.increase_error_count) self.cbe_temperature = CallbackEmulator(self.hum.get_temperature, self.cb_temperature, self.increase_error_count) self.current_humidity = None # float, %RH self.current_temperature = None # float, °C moving_average_humidity = MovingAverageConfig( 1, 1000, self.new_moving_average_humidity) plots_humidity = [(u'Relative Humidity', Qt.red, lambda: self.current_humidity, u'{} %RH'.format)] self.plot_widget_humidity = PlotWidget( u'Relative Humidity [%RH]', plots_humidity, moving_average_config=moving_average_humidity) moving_average_temperature = MovingAverageConfig( 1, 1000, self.new_moving_average_temperature) plots_temperature = [ (u'Temperature', Qt.red, lambda: self.current_temperature, u'{} °C'.format) ] self.plot_widget_temperature = PlotWidget( u'Temperature [°C]', plots_temperature, moving_average_config=moving_average_temperature) self.enable_heater = QCheckBox("Enable Heater") self.enable_heater.stateChanged.connect(self.enable_heater_changed) layout_plot = QHBoxLayout() layout_plot.addWidget(self.plot_widget_humidity) layout_plot.addWidget(self.plot_widget_temperature) layout_config = QHBoxLayout() layout_config.addStretch() layout_config.addWidget(self.enable_heater) layout_config.addStretch() layout_main = QVBoxLayout(self) layout_main.addLayout(layout_plot) layout_main.addLayout(layout_config)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletMotorizedLinearPoti, *args) self.mp = self.device self.cbe_position = CallbackEmulator(self.mp.get_position, self.cb_position, self.increase_error_count) self.current_position = None self.slider = QSlider(Qt.Horizontal) self.slider.setRange(0, 100) self.slider.setMinimumWidth(200) self.slider.setEnabled(False) plots = [('Potentiometer Position', Qt.red, lambda: self.current_position, str)] self.plot_widget = PlotWidget('Position', plots, extra_key_widgets=[self.slider], curve_motion_granularity=40, update_interval=0.025) self.motor_slider = QSlider(Qt.Horizontal) self.motor_slider.setRange(0, 100) self.motor_slider.valueChanged.connect(self.motor_slider_value_changed) self.motor_hold_position = QCheckBox("Hold Position") self.motor_drive_mode = QComboBox() self.motor_drive_mode.addItem('Fast') self.motor_drive_mode.addItem('Smooth') def get_motor_slider_value(): return self.motor_slider.value() self.motor_hold_position.stateChanged.connect(lambda x: self.motor_slider_value_changed(get_motor_slider_value())) self.motor_drive_mode.currentIndexChanged.connect(lambda x: self.motor_slider_value_changed(get_motor_slider_value())) self.motor_position_label = MotorPositionLabel('Motor Target Position:') hlayout = QHBoxLayout() hlayout.addWidget(self.motor_position_label) hlayout.addWidget(self.motor_slider) hlayout.addWidget(self.motor_drive_mode) hlayout.addWidget(self.motor_hold_position) line = QFrame() line.setFrameShape(QFrame.HLine) line.setFrameShadow(QFrame.Sunken) layout = QVBoxLayout(self) layout.addWidget(self.plot_widget) layout.addWidget(line) layout.addLayout(hlayout)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletRS485, *args) self.setupUi(self) self.text.setReadOnly(True) self.rs485 = self.device self.cbe_error_count = CallbackEmulator(self.rs485.get_error_count, self.cb_error_count, self.increase_error_count) self.read_callback_was_enabled = False self.qtcb_read.connect(self.cb_read) self.rs485.register_callback(self.rs485.CALLBACK_READ_CALLBACK, self.qtcb_read.emit) self.input_combobox.addItem("") self.input_combobox.lineEdit().setMaxLength(58) self.input_combobox.lineEdit().returnPressed.connect(self.input_changed) self.line_ending_lineedit.setValidator(HexValidator()) self.line_ending_combobox.currentIndexChanged.connect(self.line_ending_changed) self.line_ending_lineedit.editingFinished.connect(self.line_ending_changed) self.baudrate_spinbox.valueChanged.connect(self.configuration_changed) self.parity_combobox.currentIndexChanged.connect(self.configuration_changed) self.stopbits_spinbox.valueChanged.connect(self.configuration_changed) self.wordlength_spinbox.valueChanged.connect(self.configuration_changed) self.duplex_combobox.currentIndexChanged.connect(self.configuration_changed) self.text_type_combobox.currentIndexChanged.connect(self.text_type_changed) self.hextext = QHexeditWidget(self.text.font()) self.hextext.hide() self.layout().insertWidget(2, self.hextext) self.button_clear_text.clicked.connect(lambda: self.text.setPlainText("")) self.button_clear_text.clicked.connect(self.hextext.clear) self.save_button.clicked.connect(self.save_clicked) self.error_overrun = 0 self.error_parity = 0 self.last_char = ''
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletLEDStripV2, *args) self.setupUi(self) self.led_strip = self.device self.frame_read_callback_was_enabled = None self.qtcb_frame_started.connect(self.cb_frame_started) self.button_color.clicked.connect(self.color_clicked) self.button_black.clicked.connect(self.black_clicked) self.button_gradient.clicked.connect(self.gradient_clicked) self.button_dot.clicked.connect(self.dot_clicked) self.box_frame_duration.valueChanged.connect(self.frame_duration_changed) self.gradient_intensity.valueChanged.connect(self.gradient_intensity_changed) self.chip_type_combobox.addItem('WS2801', (BrickletLEDStripV2.CHIP_TYPE_WS2801, 3)) self.chip_type_combobox.addItem('WS2811', (BrickletLEDStripV2.CHIP_TYPE_WS2811, 3)) self.chip_type_combobox.addItem('WS2812 / SK6812 / NeoPixel RGB (GRB)', (BrickletLEDStripV2.CHIP_TYPE_WS2812, 3)) self.box_clock_frequency.editingFinished.connect(self.clock_frequency_changed) self.chip_type_combobox.currentIndexChanged.connect(self.chip_type_changed) self.chip_type_combobox.addItem('SK6812RGBW / NeoPixel RGBW (GRBW)', (BrickletLEDStripV2.CHIP_TYPE_WS2812, 4)) self.chip_type_combobox.addItem('LPD8806', (BrickletLEDStripV2.CHIP_TYPE_LPD8806, 3)) self.chip_type_combobox.addItem('APA102 / DotStar (bBGR)', (BrickletLEDStripV2.CHIP_TYPE_APA102, 4)) self.channel_mapping_combobox.currentIndexChanged.connect(self.channel_mapping_changed) self.state = self.STATE_IDLE self.gradient_counter = 0 self.dot_counter = 0 self.dot_direction = 1 self.voltage = 0 self.frame_started_callback_was_enabled = None self.voltage_timer = QTimer(self) self.voltage_timer.timeout.connect(self.update_voltage) self.voltage_timer.setInterval(1000) self.chip_type_changed(0, ui_only=True)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickHAT, *args) self.setupUi(self) self.hat = self.device self.cbe_voltages = CallbackEmulator(self.hat.get_voltages, None, self.cb_voltages, self.increase_error_count) self.button_sleep.clicked.connect(self.button_sleep_clicked) self.bricklet_power_checkbox.stateChanged.connect(self.bricklet_power_changed) self.ports = [self.port_a, self.port_b, self.port_c, self.port_d, self.port_e, self.port_f, self.port_g, self.port_h] for port in self.ports: port.setProperty('_bricklet_uid', None) port.setEnabled(False) port.clicked.connect(self.port_clicked)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickHATZero, *args) self.setupUi(self) self.hat_zero = self.device self.cbe_voltage = CallbackEmulator(self.hat_zero.get_usb_voltage, None, self.cb_usb_voltage, self.increase_error_count) self.ports = [self.port_a, self.port_b, self.port_c, self.port_d] for port in self.ports: port.setProperty('_bricklet_uid', None) port.setEnabled(False) port.clicked.connect(self.port_clicked) self.update_timer = QTimer(self) self.update_timer.timeout.connect(self.update_bricklets)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletEnergyMonitor, *args) self.setupUi(self) self.energy_monitor = self.device self.cbe_get_energy_data = CallbackEmulator(self.energy_monitor.get_energy_data, None, self.cb_energy_data, self.increase_error_count) self.cbe_get_transformer_status = CallbackEmulator(self.energy_monitor.get_transformer_status, None, self.cb_transformer_status, self.increase_error_count) plots_waveform_v = [('Waveform V', Qt.red, None, None)] self.plot_widget_waveform_v = PlotWidget('Voltage [V]', plots_waveform_v, clear_button=None, x_diff=768*ENERGY_MONITOR_MS_PER_TICK, x_scale_title_text='Time [ms]', key=None, x_scale_visible=False) plots_waveform_a = [('Waveform A', Qt.red, None, None)] self.plot_widget_waveform_a = PlotWidget('Current [A]', plots_waveform_a, clear_button=None, x_diff=768*ENERGY_MONITOR_MS_PER_TICK, x_scale_title_text='Time [ms]', key=None) self.plot_widget_waveform_v.add_y_scale_sibling(self.plot_widget_waveform_a) self.plot_widget_waveform_a.add_y_scale_sibling(self.plot_widget_waveform_v) # try to make the actual curve area equal in height by fiddling with the # minimum-height and the stretch factors self.plot_widget_waveform_v.setMinimumHeight(194) self.plot_widget_waveform_a.setMinimumHeight(250) self.layout_graph.insertWidget(0, self.plot_widget_waveform_v, 86) self.layout_graph.addWidget(self.plot_widget_waveform_a, 100) self.x_data = [x * ENERGY_MONITOR_MS_PER_TICK for x in list(range(768))] self.button_energy.clicked.connect(self.button_energy_clicked) self.button_transformer_settings.clicked.connect(self.button_transformer_settings_clicked) self.voltage_connected = True self.current_connected = True self.running = False
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletOLED128x64V2, *args) self.setupUi(self) self.oled = self.device self.scribble_widget = ScribbleWidget(128, 64, 5, QColor(Qt.white), QColor(Qt.black), enable_grid=False) self.image_button_layout.insertWidget(0, self.scribble_widget) self.contrast_syncer = SliderSpinSyncer(self.contrast_slider, self.contrast_spin, lambda value: self.new_configuration()) self.char_syncer = SliderSpinSyncer(self.char_slider, self.char_spin, self.char_slider_changed) self.draw_button.clicked.connect(self.draw_clicked) self.clear_button.clicked.connect(self.clear_clicked) self.send_button.clicked.connect(self.send_clicked) self.clear_display_button.clicked.connect(self.clear_display_clicked) self.invert_checkbox.stateChanged.connect(self.new_configuration) self.current_char_value = -1 self.write_line_response_expected = None
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletIndustrialDigitalIn4V2, *args) self.setupUi(self) self.idi4 = self.device self.gnd_pixmap = load_masked_pixmap('plugin_system/plugins/industrial_digital_in_4/dio_gnd.bmp') self.vcc_pixmap = load_masked_pixmap('plugin_system/plugins/industrial_digital_in_4/dio_vcc.bmp') self.lbl_stat_i_ch = [self.lbl_stat_i_ch0, self.lbl_stat_i_ch1, self.lbl_stat_i_ch2, self.lbl_stat_i_ch3] self.lbl_stat_v_ch = [self.lbl_stat_v_ch0, self.lbl_stat_v_ch1, self.lbl_stat_v_ch2, self.lbl_stat_v_ch3] self.cbe_get_value = CallbackEmulator(self.idi4.get_value, None, self.cb_value, self.increase_error_count) self.cbox_cs0_cfg.currentIndexChanged.connect(self.cbox_cs0_cfg_changed) self.cbox_cs1_cfg.currentIndexChanged.connect(self.cbox_cs1_cfg_changed) self.cbox_cs2_cfg.currentIndexChanged.connect(self.cbox_cs2_cfg_changed) self.cbox_cs3_cfg.currentIndexChanged.connect(self.cbox_cs3_cfg_changed)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletRGBLEDMatrix, *args) self.setupUi(self) self.rgb_led_matrix = self.device self.color_button = QColorButton() self.below_scribble_layout.insertWidget(2, self.color_button) self.scribble_widget = ScribbleWidget(8, 8, 35, self.color_button.color(), QColor(Qt.black)) def set_state_scribble(): self.state = self.STATE_COLOR_SCRIBBLE self.scribble_widget.scribbling_started.connect(set_state_scribble) self.scribble_layout.insertWidget(1, self.scribble_widget) self.qtcb_frame_started.connect(self.cb_frame_started) self.color_button.colorChanged.connect(self.color_changed) self.button_clear_drawing.clicked.connect(self.scribble_widget.clear_image) self.button_drawing.clicked.connect(self.drawing_clicked) self.button_color.clicked.connect(self.color_clicked) self.button_gradient.clicked.connect(self.gradient_clicked) self.button_dot.clicked.connect(self.dot_clicked) self.box_frame_duration.valueChanged.connect(self.frame_duration_changed) self.state = self.STATE_IDLE self.gradient_counter = 0 self.dot_counter = 0 self.dot_direction = 1 self.voltage = 0 self.cbe_supply_voltage = CallbackEmulator(self.rgb_led_matrix.get_supply_voltage, None, self.cb_supply_voltage, self.increase_error_count)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletSolidStateRelayV2, *args) self.setupUi(self) self.ssr = self.device self.state_combobox.setItemData(0, True) self.state_combobox.setItemData(1, False) self.monoflop = Monoflop(self.ssr, None, self.state_combobox, self.cb_state_change_by_monoflop, self.time_spinbox, None, self) self.ssr_button.clicked.connect(self.ssr_clicked) self.go_button.clicked.connect(self.go_clicked) self.a_pixmap = load_masked_pixmap('plugin_system/plugins/solid_state_relay/relay_a.bmp') self.b_pixmap = load_masked_pixmap('plugin_system/plugins/solid_state_relay/relay_b.bmp')
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletSegmentDisplay4x7V2, *args) self.setupUi(self) self.sd4x7 = self.device self.qtcb_finished.connect(self.cb_counter_finished) self.sd4x7.register_callback(self.sd4x7.CALLBACK_COUNTER_FINISHED, self.qtcb_finished.emit) self.segments = [ self.digit0_segment0, self.digit0_segment1, self.digit0_segment2, self.digit0_segment3, self.digit0_segment4, self.digit0_segment5, self.digit0_segment6, self.digit0_segment7, self.digit1_segment0, self.digit1_segment1, self.digit1_segment2, self.digit1_segment3, self.digit1_segment4, self.digit1_segment5, self.digit1_segment6, self.digit1_segment7, self.digit2_segment0, self.digit2_segment1, self.digit2_segment2, self.digit2_segment3, self.digit2_segment4, self.digit2_segment5, self.digit2_segment6, self.digit2_segment7, self.digit3_segment0, self.digit3_segment1, self.digit3_segment2, self.digit3_segment3, self.digit3_segment4, self.digit3_segment5, self.digit3_segment6, self.digit3_segment7, self.colon0, self.colon1, self.tick ] self.brightness = 7 self.box_brightness.currentIndexChanged.connect(self.brightness_changed) self.button_all_segments_on.clicked.connect(self.all_segments_on_clicked) self.button_all_segments_off.clicked.connect(self.all_segments_off_clicked) self.button_start.clicked.connect(self.start_clicked) def get_clicked_func(segment): return lambda: self.button_clicked(segment) for i, segment in enumerate(self.segments): is_circular = i % 8 == 7 or i >= 32 segment.initialize(self.STYLE_ON, self.STYLE_OFF, style='circular' if is_circular else 'rectangular') segment.clicked.connect(get_clicked_func(i)) self.counter_timer = QTimer(self) self.counter_timer.timeout.connect(self.update_counter) self.counter_timer.setInterval(100)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletDMX, *args) self.setupUi(self) self.dmx = self.device self.wait_for_first_read = True self.dmx_overview = DMXOverview(self) self.layout_dmx_overview.insertWidget(1, self.dmx_overview) self.qtcb_frame_started.connect(self.cb_frame_started) self.qtcb_frame.connect(self.cb_frame) self.mode_combobox.currentIndexChanged.connect(self.mode_changed) self.frame_duration_spinbox.valueChanged.connect(self.frame_duration_changed) self.address_spinboxes = [] self.address_slider = [] for i in range(512): spinbox = QSpinBox() spinbox.setMinimum(0) spinbox.setMaximum(255) slider = QSlider(Qt.Horizontal) slider.setMinimum(0) slider.setMaximum(255) spinbox.valueChanged.connect(slider.setValue) slider.valueChanged.connect(spinbox.setValue) def get_frame_value_changed_func(i): return lambda x: self.frame_value_changed(i, x) slider.valueChanged.connect(get_frame_value_changed_func(i)) self.address_table.setCellWidget(i, 0, spinbox) self.address_table.setCellWidget(i, 1, slider) self.address_spinboxes.append(spinbox) self.address_slider.append(slider) self.address_table.horizontalHeader().setStretchLastSection(True) self.address_table.show() self.current_frame = [0]*512 self.com_led_off_action = QAction('Off', self) self.com_led_off_action.triggered.connect(lambda: self.dmx.set_communication_led_config(BrickletDMX.COMMUNICATION_LED_CONFIG_OFF)) self.com_led_on_action = QAction('On', self) self.com_led_on_action.triggered.connect(lambda: self.dmx.set_communication_led_config(BrickletDMX.COMMUNICATION_LED_CONFIG_ON)) self.com_led_show_heartbeat_action = QAction('Show Heartbeat', self) self.com_led_show_heartbeat_action.triggered.connect(lambda: self.dmx.set_communication_led_config(BrickletDMX.COMMUNICATION_LED_CONFIG_SHOW_HEARTBEAT)) self.com_led_show_communication_action = QAction('Show Com', self) self.com_led_show_communication_action.triggered.connect(lambda: self.dmx.set_communication_led_config(BrickletDMX.COMMUNICATION_LED_CONFIG_SHOW_COMMUNICATION)) self.extra_configs += [(1, 'Com LED:', [self.com_led_off_action, self.com_led_on_action, self.com_led_show_heartbeat_action, self.com_led_show_communication_action])] self.error_led_off_action = QAction('Off', self) self.error_led_off_action.triggered.connect(lambda: self.dmx.set_error_led_config(BrickletDMX.ERROR_LED_CONFIG_OFF)) self.error_led_on_action = QAction('On', self) self.error_led_on_action.triggered.connect(lambda: self.dmx.set_error_led_config(BrickletDMX.ERROR_LED_CONFIG_ON)) self.error_led_show_heartbeat_action = QAction('Show Heartbeat', self) self.error_led_show_heartbeat_action.triggered.connect(lambda: self.dmx.set_error_led_config(BrickletDMX.ERROR_LED_CONFIG_SHOW_HEARTBEAT)) self.error_led_show_error_action = QAction('Show Error', self) self.error_led_show_error_action.triggered.connect(lambda: self.dmx.set_error_led_config(BrickletDMX.ERROR_LED_CONFIG_SHOW_ERROR)) self.extra_configs += [(1, 'Error LED:', [self.error_led_off_action, self.error_led_on_action, self.error_led_show_heartbeat_action, self.error_led_show_error_action])]
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletIndustrialDigitalOut4V2, *args) self.setupUi(self) self.ido4 = self.device self.has_monoflop_abort = None self.pixmap_low = load_masked_pixmap('plugin_system/plugins/industrial_digital_out_4_v2/ido4_low.bmp') self.pixmap_high = load_masked_pixmap('plugin_system/plugins/industrial_digital_out_4_v2/ido4_high.bmp') self.btn_v_c = [self.btn_v_c0, self.btn_v_c1, self.btn_v_c2, self.btn_v_c3] self.lbl_s_i_c = [self.lbl_s_i_c0, self.lbl_s_i_c1, self.lbl_s_i_c2, self.lbl_s_i_c3] self.cbox_clc_c = [self.cbox_clc_c0, self.cbox_clc_c1, self.cbox_clc_c2, self.cbox_clc_c3] # Set initial channel status icon for lbl in self.lbl_s_i_c: lbl.setPixmap(self.pixmap_low) # Register value toggle button slots for c, b in enumerate(self.btn_v_c): b.clicked.connect(functools.partial(self.btn_v_c_clicked, c)) # Monoflop self.cbox_m_c.currentIndexChanged.connect(self.cbox_m_c_changed) self.btn_m_go.clicked.connect(self.btn_m_go_clicked) self.monoflop_values = [] self.monoflop_times = [] for i in range(4): self.cbox_m_c.setItemData(i, i) monoflop_value = QComboBox() monoflop_value.addItem('High', True) monoflop_value.addItem('Low', False) self.monoflop_values.append(monoflop_value) self.monoflop_value_stack.addWidget(monoflop_value) monoflop_time = QSpinBox() monoflop_time.setRange(1, (1 << 31) - 1) monoflop_time.setValue(1000) self.monoflop_times.append(monoflop_time) self.monoflop_time_stack.addWidget(monoflop_time) self.monoflop = Monoflop(self.ido4, [0, 1, 2, 3], self.monoflop_values, self.cb_value_change_by_monoflop, self.monoflop_times, None, self) # Channel status LED config self.cbox_clc_c0.currentIndexChanged.connect(self.cbox_clc_c0_changed) self.cbox_clc_c1.currentIndexChanged.connect(self.cbox_clc_c1_changed) self.cbox_clc_c2.currentIndexChanged.connect(self.cbox_clc_c2_changed) self.cbox_clc_c3.currentIndexChanged.connect(self.cbox_clc_c3_changed)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletGPSV2, *args) self.setupUi(self) self.gps = self.device self.cbe_universal = CallbackEmulator(self.get_universal, None, self.cb_universal, self.increase_error_count) self.cbe_universal_gps = CallbackEmulator(self.get_universal_gps, None, self.cb_universal_gps, self.increase_error_count) self.cbe_universal_glo = CallbackEmulator(self.get_universal_glo, None, self.cb_universal_glo, self.increase_error_count) self.qtcb_pps.connect(self.cb_pps) self.gps.register_callback(self.gps.CALLBACK_PULSE_PER_SECOND, self.qtcb_pps.emit) self.format_combobox.currentIndexChanged.connect(self.format_changed) self.show_pos.clicked.connect(self.show_pos_clicked) self.hot_start.clicked.connect(lambda: self.restart_clicked(0)) self.warm_start.clicked.connect(lambda: self.restart_clicked(1)) self.cold_start.clicked.connect(lambda: self.restart_clicked(2)) self.factory_reset.clicked.connect(lambda: self.restart_clicked(3)) self.had_fix = False self.last_lat = 0 self.last_ns = 'U' self.last_long = 0 self.last_ew = 'U' self.gps_counter = 0 self.glo_counter = 0 self.gps_model = QStandardItemModel(32, 3, self) self.gps_table.setModel(self.gps_model) self.gps_model.setHorizontalHeaderItem(0, QStandardItem('Elevation (°)')) self.gps_model.setHorizontalHeaderItem(1, QStandardItem('Azimuth (°)')) self.gps_model.setHorizontalHeaderItem(2, QStandardItem('SNR (dB)')) for i in range(32): self.gps_model.setVerticalHeaderItem(i, QStandardItem('Sat ' + str(i+1))) self.gps_table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.glo_model = QStandardItemModel(32, 3, self) self.glo_table.setModel(self.glo_model) self.glo_model.setHorizontalHeaderItem(0, QStandardItem('Elevation (°)')) self.glo_model.setHorizontalHeaderItem(1, QStandardItem('Azimuth (°)')) self.glo_model.setHorizontalHeaderItem(2, QStandardItem('SNR (dB)')) for i in range(32): self.glo_model.setVerticalHeaderItem(i, QStandardItem('Sat ' + str(i+1+64))) self.glo_table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.fix_led_off_action = QAction('Off', self) self.fix_led_off_action.triggered.connect(lambda: self.gps.set_fix_led_config(BrickletGPSV2.FIX_LED_CONFIG_OFF)) self.fix_led_on_action = QAction('On', self) self.fix_led_on_action.triggered.connect(lambda: self.gps.set_fix_led_config(BrickletGPSV2.FIX_LED_CONFIG_ON)) self.fix_led_show_heartbeat_action = QAction('Show Heartbeat', self) self.fix_led_show_heartbeat_action.triggered.connect(lambda: self.gps.set_fix_led_config(BrickletGPSV2.FIX_LED_CONFIG_SHOW_HEARTBEAT)) self.fix_led_show_fix_action = QAction('Show Fix', self) self.fix_led_show_fix_action.triggered.connect(lambda: self.gps.set_fix_led_config(BrickletGPSV2.FIX_LED_CONFIG_SHOW_FIX)) self.fix_led_show_pps_action = QAction('Show PPS', self) self.fix_led_show_pps_action.triggered.connect(lambda: self.gps.set_fix_led_config(BrickletGPSV2.FIX_LED_CONFIG_SHOW_PPS)) self.extra_configs += [(1, 'Fix LED:', [self.fix_led_off_action, self.fix_led_on_action, self.fix_led_show_heartbeat_action, self.fix_led_show_fix_action, self.fix_led_show_pps_action])]
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletRemoteSwitchV2, *args) self.setupUi(self) self.rs2 = self.device self.qtcb_switching_done.connect(self.cb_switching_done) self.rs2.register_callback(self.rs2.CALLBACK_SWITCHING_DONE, self.qtcb_switching_done.emit) self.h_check = (self.h_check_a, self.h_check_b, self.h_check_c, self.h_check_d, self.h_check_e) self.r_check = (self.r_check_a, self.r_check_b, self.r_check_c, self.r_check_d, self.r_check_e) for h in self.h_check: h.stateChanged.connect(self.h_check_state_changed) for r in self.r_check: r.stateChanged.connect(self.r_check_state_changed) self.checkbox_switchall.stateChanged.connect(self.switchall_state_changed) self.spinbox_house.valueChanged.connect(self.house_value_changed) self.spinbox_receiver.valueChanged.connect(self.receiver_value_changed) self.combo_type.currentIndexChanged.connect(self.type_index_changed) self.spinbox_dim_value.valueChanged.connect(self.spinbox_dim_value_changed) self.slider_dim_value.valueChanged.connect(self.slider_dim_value_changed) self.button_switch_on.clicked.connect(lambda: self.button_clicked(1)) self.button_switch_off.clicked.connect(lambda: self.button_clicked(0)) self.button_dim.clicked.connect(self.dim_clicked) self.combo_remote_type.currentIndexChanged.connect(self.remote_type_changed) self.button_remote_input_clear.clicked.connect(self.plaintextedit_remote_input.clear) self.current_remote_type = None self.timer_get_remote_input = QTimer(self) self.timer_get_remote_input.timeout.connect(self.timeout_get_remote_input) self.timer_get_remote_input.setInterval(50) self.last_remote_input = { 'a': { 'house_code': None, 'receiver_code': None, 'switch_to': None, 'repeats': None }, 'b': { 'address': None, 'unit': None, 'switch_to': None, 'dim_value': None, 'repeats': None }, 'c': { 'system_code': None, 'device_code': None, 'switch_to': None, 'repeats': None } } self.type_a_widgets = [self.label_house_code, self.h_check_a, self.h_check_b, self.h_check_c, self.h_check_d, self.h_check_e, self.spinbox_house, self.label_receiver_code, self.r_check_a, self.r_check_b, self.r_check_c, self.r_check_d, self.r_check_e, self.spinbox_receiver, self.button_switch_on, self.button_switch_off] self.type_b_widgets = [self.label_address, self.spinbox_address, self.label_unit, self.spinbox_unit, self.checkbox_switchall, self.button_switch_on, self.button_switch_off] self.type_b_dim_widgets = [self.label_address, self.spinbox_address, self.label_unit, self.spinbox_unit, self.checkbox_switchall, self.label_dim, self.spinbox_dim_value, self.slider_dim_value, self.button_dim] self.type_c_widgets = [self.label_system_code, self.combo_system_code, self.label_device_code, self.spinbox_device_code, self.button_switch_on, self.button_switch_off] self.type_widgets = (self.type_a_widgets, self.type_b_widgets, self.type_b_dim_widgets, self.type_c_widgets) self.type_index_changed(0)
def __init__(self, *args): COMCUPluginBase.__init__(self, BrickletCANV2, *args) self.setupUi(self) self.can = self.device self.qtcb_frame_read.connect(self.cb_frame_read) self.can.register_callback(self.can.CALLBACK_FRAME_READ, self.qtcb_frame_read.emit) self.last_filename = os.path.join(get_home_path(), 'can_bricklet_v2_history.log') self.frame_read_callback_was_enabled = None self.tree_frames.header().resizeSection(0, 150) self.tree_frames.header().resizeSection(1, 170) self.tree_frames.header().resizeSection(2, 300) self.tree_frames.header().resizeSection(3, 100) self.edit_data.setValidator(HexValidator(max_bytes=8)) self.combo_frame_type.currentIndexChanged.connect(self.frame_type_changed) self.spin_baud_rate.valueChanged.connect(self.transceiver_configuration_changed) self.spin_sample_point.valueChanged.connect(self.transceiver_configuration_changed) self.combo_transceiver_mode.currentIndexChanged.connect(self.transceiver_configuration_changed) self.spin_write_buffer_size.valueChanged.connect(self.queue_configuration_changed) self.spin_write_buffer_timeout.valueChanged.connect(self.queue_configuration_changed) self.spin_write_backlog_size.valueChanged.connect(self.queue_configuration_changed) self.edit_read_buffer_sizes.textEdited.connect(self.queue_configuration_changed) self.spin_read_backlog_size.valueChanged.connect(self.queue_configuration_changed) for i in range(32): self.combo_filter_buffer.addItem(str(i)) self.combo_filter_buffer.currentIndexChanged.connect(self.read_filter_buffer_changed) self.combo_filter_mode.currentIndexChanged.connect(self.read_filter_mode_changed) self.spin_filter_mask.valueChanged.connect(self.read_filter_configuration_changed) self.spin_filter_identifier.valueChanged.connect(self.read_filter_configuration_changed) self.button_write_frame.clicked.connect(self.write_frame) self.button_clear_history.clicked.connect(self.tree_frames.clear) self.button_save_history.clicked.connect(self.save_history) self.button_save_transceiver_configuration.clicked.connect(self.save_transceiver_configuration) self.button_reset_transceiver_configuration.clicked.connect(self.reset_transceiver_configuration) self.button_save_queue_configuration.clicked.connect(self.save_queue_configuration) self.button_reset_queue_configuration.clicked.connect(self.reset_queue_configuration) self.button_save_read_filter_configuration.clicked.connect(self.save_read_filter_configuration) self.button_reset_read_filter_configuration.clicked.connect(self.reset_read_filter_configuration) self.error_log_timer = QTimer(self) self.error_log_timer.timeout.connect(self.update_error_log) self.error_log_timer.setInterval(1000) self.frame_type_changed() self.read_filter_buffer_changed() self.read_filter_mode_changed() self.read_filter_configuration_changed() self.com_led_off_action = QAction('Off', self) self.com_led_off_action.triggered.connect(lambda: self.can.set_communication_led_config(BrickletCANV2.COMMUNICATION_LED_CONFIG_OFF)) self.com_led_on_action = QAction('On', self) self.com_led_on_action.triggered.connect(lambda: self.can.set_communication_led_config(BrickletCANV2.COMMUNICATION_LED_CONFIG_ON)) self.com_led_show_heartbeat_action = QAction('Show Heartbeat', self) self.com_led_show_heartbeat_action.triggered.connect(lambda: self.can.set_communication_led_config(BrickletCANV2.COMMUNICATION_LED_CONFIG_SHOW_HEARTBEAT)) self.com_led_show_communication_action = QAction('Show Com', self) self.com_led_show_communication_action.triggered.connect(lambda: self.can.set_communication_led_config(BrickletCANV2.COMMUNICATION_LED_CONFIG_SHOW_COMMUNICATION)) self.extra_configs += [(1, 'Com LED:', [self.com_led_off_action, self.com_led_on_action, self.com_led_show_heartbeat_action, self.com_led_show_communication_action])] self.error_led_off_action = QAction('Off', self) self.error_led_off_action.triggered.connect(lambda: self.can.set_error_led_config(BrickletCANV2.ERROR_LED_CONFIG_OFF)) self.error_led_on_action = QAction('On', self) self.error_led_on_action.triggered.connect(lambda: self.can.set_error_led_config(BrickletCANV2.ERROR_LED_CONFIG_ON)) self.error_led_show_heartbeat_action = QAction('Show Heartbeat', self) self.error_led_show_heartbeat_action.triggered.connect(lambda: self.can.set_error_led_config(BrickletCANV2.ERROR_LED_CONFIG_SHOW_HEARTBEAT)) self.error_led_show_transceiver_state_action = QAction('Show Transceiver State', self) self.error_led_show_transceiver_state_action.triggered.connect(lambda: self.can.set_error_led_config(BrickletCANV2.ERROR_LED_CONFIG_SHOW_TRANSCEIVER_STATE)) self.error_led_show_error_action = QAction('Show Error', self) self.error_led_show_error_action.triggered.connect(lambda: self.can.set_error_led_config(BrickletCANV2.ERROR_LED_CONFIG_SHOW_ERROR)) self.extra_configs += [(1, 'Error LED:', [self.error_led_off_action, self.error_led_on_action, self.error_led_show_heartbeat_action, self.error_led_show_transceiver_state_action, self.error_led_show_error_action])]