コード例 #1
0
ファイル: outdoor_weather.py プロジェクト: fk0815/brickv
    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)
コード例 #2
0
    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)
コード例 #3
0
ファイル: dual_button_v2.py プロジェクト: Tinkerforge/brickv
    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
コード例 #4
0
ファイル: oled_128x64_v2.py プロジェクト: bmwiedemann/brickv
    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
コード例 #5
0
ファイル: sound_pressure_level.py プロジェクト: fk0815/brickv
    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
コード例 #6
0
ファイル: hat.py プロジェクト: jose1711/brickv
    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()
コード例 #7
0
    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')
コード例 #8
0
ファイル: piezo_speaker_v2.py プロジェクト: fk0815/brickv
    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()
コード例 #9
0
ファイル: rgb_led_v2.py プロジェクト: Tinkerforge/brickv
    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)
コード例 #10
0
    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)
コード例 #11
0
    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)
コード例 #12
0
    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
コード例 #13
0
    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()
コード例 #14
0
    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()
コード例 #15
0
ファイル: thermal_imaging.py プロジェクト: Tinkerforge/brickv
    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()
コード例 #16
0
    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
コード例 #17
0
ファイル: outdoor_weather.py プロジェクト: Tinkerforge/brickv
    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)
コード例 #18
0
ファイル: lcd_128x64.py プロジェクト: jose1711/brickv
    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)
コード例 #19
0
    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)
コード例 #20
0
ファイル: hall_effect_v2.py プロジェクト: Tinkerforge/brickv
    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)
コード例 #21
0
ファイル: thermal_imaging.py プロジェクト: daniz185/brickv
    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()
コード例 #22
0
ファイル: performance_dc.py プロジェクト: daniz185/brickv
    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)
コード例 #23
0
ファイル: rs232_v2.py プロジェクト: Tinkerforge/brickv
    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()
コード例 #24
0
    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)
コード例 #25
0
ファイル: rgb_led_v2.py プロジェクト: fk0815/brickv
    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)
コード例 #26
0
ファイル: rgb_led_button.py プロジェクト: jose1711/brickv
    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))
コード例 #27
0
    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)
コード例 #28
0
ファイル: energy_monitor.py プロジェクト: bmwiedemann/brickv
    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
コード例 #29
0
ファイル: analog_out_v3.py プロジェクト: daniz185/brickv
    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)
コード例 #30
0
    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)
コード例 #31
0
ファイル: gps.py プロジェクト: Tinkerforge/brickv
    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)
コード例 #32
0
    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)
コード例 #33
0
ファイル: isolator.py プロジェクト: jose1711/brickv
    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
コード例 #34
0
ファイル: analog_out_v3.py プロジェクト: Tinkerforge/brickv
    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)
コード例 #35
0
ファイル: isolator.py プロジェクト: Tinkerforge/brickv
    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
コード例 #36
0
ファイル: evse_v2.py プロジェクト: fk0815/brickv
    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)
コード例 #37
0
ファイル: real_time_clock_v2.py プロジェクト: jose1711/brickv
    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)
コード例 #38
0
    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)
コード例 #39
0
ファイル: ptc_v2.py プロジェクト: jose1711/brickv
    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)
コード例 #40
0
ファイル: evse.py プロジェクト: daniz185/brickv
    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)
コード例 #41
0
ファイル: multi_touch_v2.py プロジェクト: Tinkerforge/brickv
    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)
コード例 #42
0
    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)
コード例 #43
0
ファイル: multi_touch_v2.py プロジェクト: daniz185/brickv
    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)
コード例 #44
0
    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)
コード例 #45
0
    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 = ''
コード例 #46
0
ファイル: led_strip_v2.py プロジェクト: Tinkerforge/brickv
    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)
コード例 #47
0
ファイル: hat.py プロジェクト: Tinkerforge/brickv
    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)
コード例 #48
0
ファイル: hat_zero.py プロジェクト: Tinkerforge/brickv
    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)
コード例 #49
0
ファイル: energy_monitor.py プロジェクト: Tinkerforge/brickv
    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
コード例 #50
0
ファイル: oled_128x64_v2.py プロジェクト: Tinkerforge/brickv
    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
コード例 #51
0
    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)
コード例 #52
0
ファイル: rgb_led_matrix.py プロジェクト: Tinkerforge/brickv
    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)
コード例 #53
0
    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')
コード例 #54
0
    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)
コード例 #55
0
ファイル: dmx.py プロジェクト: Tinkerforge/brickv
    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])]
コード例 #56
0
    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)
コード例 #57
0
ファイル: gps_v2.py プロジェクト: Tinkerforge/brickv
    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])]
コード例 #58
0
    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)
コード例 #59
0
ファイル: can_v2.py プロジェクト: Tinkerforge/brickv
    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])]