Пример #1
0
    def InitializePIDGUI(self, dacPort, chan):
        self.pid = QCustomPID(dacPort)
        self.pid.setWindowTitle(chan + ' PID settings')
        self.pid.move(self.pos())
        self.index = {1: 0, -1: 1}

        pInit = yield self.server.get_pid_p(dacPort)
        iInit = yield self.server.get_pid_i(dacPort)
        dInit = yield self.server.get_pid_d(dacPort)
        dtInit = yield self.server.get_pid_dt(dacPort)
        constInit = yield self.server.get_const_dt(dacPort)
        sensInit = yield self.server.get_pid_sensitivity(dacPort)
        polInit = yield self.server.get_pid_polarity(dacPort)

        self.pid.spinP.setValue(pInit)
        self.pid.spinI.setValue(iInit)
        self.pid.spinD.setValue(dInit)
        self.pid.spinDt.setValue(dtInit)
        self.pid.useDTBox.setCheckState(bool(constInit))
        self.pid.spinFactor.setValue(sensInit[0])
        self.pid.spinExp.setValue(sensInit[1])
        self.pid.polarityBox.setCurrentIndex(self.index[polInit])

        self.pid.spinP.valueChanged.connect(lambda p=self.pid.spinP.value(
        ), dacPort=dacPort: self.changeP(p, dacPort))
        self.pid.spinI.valueChanged.connect(lambda i=self.pid.spinI.value(
        ), dacPort=dacPort: self.changeI(i, dacPort))
        self.pid.spinD.valueChanged.connect(lambda d=self.pid.spinD.value(
        ), dacPort=dacPort: self.changeD(d, dacPort))
        self.pid.spinDt.valueChanged.connect(lambda dt=self.pid.spinDt.value(
        ), dacPort=dacPort: self.changeDt(dt, dacPort))
        self.pid.useDTBox.stateChanged.connect(
            lambda state=self.pid.useDTBox.isChecked(
            ), dacPort=dacPort: self.constDt(state, dacPort))
        self.pid.spinFactor.valueChanged.connect(
            lambda factor=self.pid.spinFactor.value(
            ), dacPort=dacPort: self.changeFactor(factor, dacPort))
        self.pid.spinExp.valueChanged.connect(
            lambda exponent=self.pid.spinExp.value(
            ), dacPort=dacPort: self.changeExponent(exponent, dacPort))
        self.pid.polarityBox.currentIndexChanged.connect(
            lambda index=self.pid.polarityBox.currentIndex(
            ), dacPort=dacPort: self.changePolarity(index, dacPort))

        self.pid.show()