Ejemplo n.º 1
0
 def firmataConnect(self):
     self.device = Arduino(str(self.ports.currentText()))
     if self.device.get_firmata_version() is None:
         self.firmataDisconnect()
     else:
         self.text.setHtml('Connected<br>Firmata version: %s' %
             str(self.device.get_firmata_version()))
         self.connect.setEnabled(False)
         self.disconnect.setEnabled(True)
Ejemplo n.º 2
0
class FirmataTab(QWidget):
    def __init__(self, parent):
        QWidget.__init__(self, parent)
        self.parent = parent
        self.setLayout(QGridLayout())
        self.fs = QPushButton('Burn Firmata')
        self.fs.clicked.connect(self.firmataBurn)
        self.layout().addWidget(self.fs, 0, 0)

        # self.progress = QProgressBar()
        # self.progress.setMaximumWidth(200)
        # self.layout().addWidget(self.progress, 0, 1)

        self.ports = QComboBox()
        self.layout().addWidget(self.ports, 1, 0)
        self.refresh = QPushButton('Refresh')
        self.refresh.clicked.connect(self.refreshPorts)
        self.layout().addWidget(self.refresh, 1, 1)
        self.connect = QPushButton('Connect')
        self.connect.clicked.connect(self.firmataConnect)
        self.connect.setEnabled(False)
        self.layout().addWidget(self.connect, 1, 2)
        self.disconnect = QPushButton('Disconnect')
        self.disconnect.clicked.connect(self.firmataDisconnect)
        self.disconnect.setEnabled(False)
        self.layout().addWidget(self.disconnect, 1, 3)

        self.text = QTextBrowser()
        self.layout().addWidget(self.text, 2, 0, 4, 0)

        self.layout().setAlignment(Qt.AlignTop)

        self.refreshPorts()

    def refreshPorts(self):
        if not [p[0] for p in comports()]:
            self.text.setText(
                'No device detected. Plz insert board and click "Refresh".')
            self.connect.setEnabled(False)
            self.ports.clear()
            # self.parent.azura.voice.sayText(u'А где ардуинка?')
        else:
            self.ports.clear()
            self.ports.addItems([p[0] for p in comports()])
            self.text.setText('Some COM ports detected.')
            self.connect.setEnabled(True)

    def firmataConnect(self):
        self.device = Arduino(str(self.ports.currentText()))
        if self.device.get_firmata_version() is None:
            self.firmataDisconnect()
        else:
            self.text.setHtml('Connected<br>Firmata version: %s' %
                str(self.device.get_firmata_version()))
            self.connect.setEnabled(False)
            self.disconnect.setEnabled(True)

    def firmataDisconnect(self):
        self.device.exit()
        del self.device
        self.text.setText('No connection')
        self.connect.setEnabled(True)
        self.disconnect.setEnabled(False)

    def firmataBurn(self):
        os.chdir(os.path.join('sketches','StandardFirmata'))
        proc = subprocess.Popen(['make', 'upload'],
            stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        while True:
            line = proc.stderr.readline()
            if line != '':
                self.text.insertPlainText(line.rstrip().decode('cp1251') + '\n')
            else:
                break