def __init__(self): QWidget.__init__(self) self.ui = Ui_ModuleC() self.ui.setupUi(self) self.timer = QTimer() QObject.connect(self.timer, SIGNAL("timeout()"), self.read_inputs) self.datau = 200 * [0.0] self.datai = 200 * [0.0] self.current = 0 self.mode = ['DC', 'C']
def __init__(self): QWidget.__init__(self) self.ui = Ui_ModuleC() self.ui.setupUi(self) self.timer = QTimer() QObject.connect(self.timer, SIGNAL("timeout()"), self.read_inputs) self.datau = 200*[0.0] self.datai = 200*[0.0] self.current = 0 self.mode = ['DC', 'C']
class ModuleCWidget(QWidget): def __init__(self): QWidget.__init__(self) self.ui = Ui_ModuleC() self.ui.setupUi(self) self.timer = QTimer() QObject.connect(self.timer, SIGNAL("timeout()"), self.read_inputs) self.datau = 200*[0.0] self.datai = 200*[0.0] self.current = 0 self.mode = ['DC', 'C'] @pyqtSlot() def on_radioAC_clicked(self): self.mode[0] = 'AC' self.setup_hw() @pyqtSlot() def on_radioDC_clicked(self): self.mode[0] = 'DC' self.setup_hw() @pyqtSlot() def on_radioL_clicked(self): self.mode[1] = 'L' self.setup_hw() @pyqtSlot() def on_radioC_clicked(self): self.mode[1] = 'C' self.setup_hw() @pyqtSlot() def on_radioLC_clicked(self): self.mode[1] = 'LC' self.setup_hw() @pyqtSlot(bool) def on_btnPower_clicked(self, checked): if checked: self.current = 3.3 self.ui.btnPower.setText('ON') else: self.current = 0.0 self.ui.btnPower.setText('OFF') if self.mode == ['DC', 'L']: self.dev.setout(1, checked and 1 or 0) if self.mode == ['DC', 'C']: self.dev.setout(2, checked and 1 or 0) if self.mode == ['DC', 'LC']: self.dev.setout(3, checked and 1 or 1) def setup_hw(self): if self.mode == ['DC', 'L']: # AD6 self.dev.switches(1<<5) self.dev.opamp(2, 5, 0) if self.mode == ['DC', 'C']: # AD5 self.dev.switches(1<<4) self.dev.opamp(2, 4, 0) if self.mode == ['DC', 'LC']: # AD3 self.dev.switches(1<<2) self.dev.opamp(2, 2, 0) def setup_scene(self, scene): scene.addLine(-5, 100-0, 605, 100-0) scene.addLine(0, 200+5, 0, 200-205) scene.addLine(-5, 200- 0, 5, 200- 0) scene.addLine(-5, 200- 50, 5, 200- 50) scene.addLine(-5, 200-100, 5, 200-100) scene.addLine(-5, 200-150, 5, 200-150) scene.addLine(-5, 200-200, 5, 200-200) def tick_DC(self, u, i): self.datau.pop(0) self.datai.pop(0) self.datau.append(u) self.datai.append(i) self.scene1 = QGraphicsScene() self.scene2 = QGraphicsScene() self.setup_scene(self.scene1) self.setup_scene(self.scene2) self.scene1.addSimpleText('[U/V]').moveBy(-39, 220-10) self.scene2.addSimpleText('[I/mA]').moveBy(-39, 220-10) self.scene1.addSimpleText('+4.0').moveBy(-40, 0-10) self.scene1.addSimpleText('+2.0').moveBy(-40, 50-10) self.scene1.addSimpleText(' 0.0').moveBy(-40, 100-10) self.scene1.addSimpleText('-2.0').moveBy(-40, 150-10) self.scene1.addSimpleText('-4.0').moveBy(-40, 200-10) self.scene2.addSimpleText('+0.4').moveBy(-40, 0-10) self.scene2.addSimpleText('+0.2').moveBy(-40, 50-10) self.scene2.addSimpleText(' 0.0').moveBy(-40, 100-10) self.scene2.addSimpleText('-0.2').moveBy(-40, 150-10) self.scene2.addSimpleText('-0.4').moveBy(-40, 200-10) path = QPainterPath() path.moveTo(0,100-self.datau[0]*25) for i in xrange(1,200): path.lineTo(3*(i+1), 100-self.datau[i]*25) self.scene1.addPath(path, QPen(QColor(0,0,255), 3)) path = QPainterPath() path.moveTo(0,100-self.datai[0]*25) for i in xrange(1,200): path.lineTo(3*(i+1), 100-self.datai[i]*25) self.scene2.addPath(path, QPen(QColor(0,0,255), 3)) self.ui.graph1.setScene(self.scene1) self.ui.graph2.setScene(self.scene2) def read_inputs(self): r = self.dev.read() if self.mode[0] == 'DC': u = r[0]/1023.0 * 3.3 # TODO: change this if we change opamp i = self.current - r[0]/1023.0 * 3.3 self.tick_DC(u, i)
class ModuleCWidget(QWidget): def __init__(self): QWidget.__init__(self) self.ui = Ui_ModuleC() self.ui.setupUi(self) self.timer = QTimer() QObject.connect(self.timer, SIGNAL("timeout()"), self.read_inputs) self.datau = 200 * [0.0] self.datai = 200 * [0.0] self.current = 0 self.mode = ['DC', 'C'] @pyqtSlot() def on_radioAC_clicked(self): self.mode[0] = 'AC' self.setup_hw() @pyqtSlot() def on_radioDC_clicked(self): self.mode[0] = 'DC' self.setup_hw() @pyqtSlot() def on_radioL_clicked(self): self.mode[1] = 'L' self.setup_hw() @pyqtSlot() def on_radioC_clicked(self): self.mode[1] = 'C' self.setup_hw() @pyqtSlot() def on_radioLC_clicked(self): self.mode[1] = 'LC' self.setup_hw() @pyqtSlot(bool) def on_btnPower_clicked(self, checked): if checked: self.current = 3.3 self.ui.btnPower.setText('ON') else: self.current = 0.0 self.ui.btnPower.setText('OFF') if self.mode == ['DC', 'L']: self.dev.setout(1, checked and 1 or 0) if self.mode == ['DC', 'C']: self.dev.setout(2, checked and 1 or 0) if self.mode == ['DC', 'LC']: self.dev.setout(3, checked and 1 or 1) def setup_hw(self): if self.mode == ['DC', 'L']: # AD6 self.dev.switches(1 << 5) self.dev.opamp(2, 5, 0) if self.mode == ['DC', 'C']: # AD5 self.dev.switches(1 << 4) self.dev.opamp(2, 4, 0) if self.mode == ['DC', 'LC']: # AD3 self.dev.switches(1 << 2) self.dev.opamp(2, 2, 0) def setup_scene(self, scene): scene.addLine(-5, 100 - 0, 605, 100 - 0) scene.addLine(0, 200 + 5, 0, 200 - 205) scene.addLine(-5, 200 - 0, 5, 200 - 0) scene.addLine(-5, 200 - 50, 5, 200 - 50) scene.addLine(-5, 200 - 100, 5, 200 - 100) scene.addLine(-5, 200 - 150, 5, 200 - 150) scene.addLine(-5, 200 - 200, 5, 200 - 200) def tick_DC(self, u, i): self.datau.pop(0) self.datai.pop(0) self.datau.append(u) self.datai.append(i) self.scene1 = QGraphicsScene() self.scene2 = QGraphicsScene() self.setup_scene(self.scene1) self.setup_scene(self.scene2) self.scene1.addSimpleText('[U/V]').moveBy(-39, 220 - 10) self.scene2.addSimpleText('[I/mA]').moveBy(-39, 220 - 10) self.scene1.addSimpleText('+4.0').moveBy(-40, 0 - 10) self.scene1.addSimpleText('+2.0').moveBy(-40, 50 - 10) self.scene1.addSimpleText(' 0.0').moveBy(-40, 100 - 10) self.scene1.addSimpleText('-2.0').moveBy(-40, 150 - 10) self.scene1.addSimpleText('-4.0').moveBy(-40, 200 - 10) self.scene2.addSimpleText('+0.4').moveBy(-40, 0 - 10) self.scene2.addSimpleText('+0.2').moveBy(-40, 50 - 10) self.scene2.addSimpleText(' 0.0').moveBy(-40, 100 - 10) self.scene2.addSimpleText('-0.2').moveBy(-40, 150 - 10) self.scene2.addSimpleText('-0.4').moveBy(-40, 200 - 10) path = QPainterPath() path.moveTo(0, 100 - self.datau[0] * 25) for i in xrange(1, 200): path.lineTo(3 * (i + 1), 100 - self.datau[i] * 25) self.scene1.addPath(path, QPen(QColor(0, 0, 255), 3)) path = QPainterPath() path.moveTo(0, 100 - self.datai[0] * 25) for i in xrange(1, 200): path.lineTo(3 * (i + 1), 100 - self.datai[i] * 25) self.scene2.addPath(path, QPen(QColor(0, 0, 255), 3)) self.ui.graph1.setScene(self.scene1) self.ui.graph2.setScene(self.scene2) def read_inputs(self): r = self.dev.read() if self.mode[0] == 'DC': u = r[0] / 1023.0 * 3.3 # TODO: change this if we change opamp i = self.current - r[0] / 1023.0 * 3.3 self.tick_DC(u, i)