예제 #1
0
    def __init__(self, ipcon, uid, version):
        PluginBase.__init__(self, ipcon, uid, 'Multi Touch Bricklet', version)
        
        self.setupUi(self)

        self.mt = BrickletMultiTouch(uid, ipcon)
        
        self.qtcb_touch_state.connect(self.cb_touch_state)
        self.mt.register_callback(self.mt.CALLBACK_TOUCH_STATE,
                                  self.qtcb_touch_state.emit)
        
        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.pressed.connect(self.recalibrate_pressed)
예제 #2
0
class MultiTouch(PluginBase, Ui_MultiTouch):
    qtcb_touch_state = pyqtSignal(int)
    
    def __init__(self, ipcon, uid, version):
        PluginBase.__init__(self, ipcon, uid, 'Multi Touch Bricklet', version)
        
        self.setupUi(self)

        self.mt = BrickletMultiTouch(uid, ipcon)
        
        self.qtcb_touch_state.connect(self.cb_touch_state)
        self.mt.register_callback(self.mt.CALLBACK_TOUCH_STATE,
                                  self.qtcb_touch_state.emit)
        
        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.pressed.connect(self.recalibrate_pressed)
        
    def recalibrate_pressed(self):
        value = self.sensitivity_spinbox.value()
        self.mt.set_electrode_sensitivity(value)
        self.mt.recalibrate()
        
    def state_changed(self, state):
        enabled_electrodes = 0
        for i in range(13):
            if self.cbs[i].isChecked():
                enabled_electrodes |= 1 << i
        
        self.mt.set_electrode_config(enabled_electrodes)
        
    def cb_touch_state(self, state):
        for i in range(13):
            if state & (1 << i):
                self.mt_labels[i].setStyleSheet("QLabel { background-color : green; }");
            else:
                self.mt_labels[i].setStyleSheet("QLabel { background-color : black; }");
                
    def cb_electrode_config(self, enabled_electrodes):
        for i in range(13):
            if enabled_electrodes & (1 << i):
                self.cbs[i].setChecked(True)
            else:
                self.cbs[i].setChecked(False)
                
    def cb_electrode_sensitivity(self, sensitivity):
        self.sensitivity_spinbox.setValue(sensitivity)

    def start(self):
        async_call(self.mt.get_electrode_sensitivity, None, self.cb_electrode_sensitivity, self.increase_error_count)
        async_call(self.mt.get_electrode_config, None, self.cb_electrode_config, self.increase_error_count)
        
    def stop(self):
        pass

    def get_url_part(self):
        return 'multi_touch'

    @staticmethod
    def has_device_identifier(device_identifier):
        return device_identifier == BrickletMultiTouch.DEVICE_IDENTIFIER