Example #1
0
  def __init__(self, config_file=None):
    """
    The constructor does some default configuration, but the driver
    usually needs to load a config file via L{load_config} to be 
    fully initialized.
    """
    self._board = FuriousBoard()
    self._servos = {}
    self._odometer = Odometer(self._board)
    self._logic_batt = Battery(self._board, port=7)
    self._motor_batt = Battery(self._board, port=6)
    self._dbg = None  # Observer object for debug messages

    if config_file:
      self.load_config(config_file)
Example #2
0
    def __init__(self, cfgfile, port):
        QtGui.QWidget.__init__(self, None)
        self.config_file = cfgfile
        self.config = furious.config.parse_config(self.config_file)
        self.board = FuriousBoard()
        if not port:
            port = self.board.probe()
        if not port:
            QtGui.QMessageBox.information(self, "Error",
                                          "Unable to detect a Furious board.",
                                          QtGui.QMessageBox.Ok)
            QtGui.qApp.exit(1)
            # For some reason, the app doesn't exit immediately after the call
            # to qApp.exit() above, so this next line is needed for a clean
            # shutdown.
            exit(1)

        self.board.open(port)

        if not self.board.is_ready():
            QtGui.QMessageBox.information(
                self, "Error",
                "Unable to connect to Furious board on %s." % port,
                QtGui.QMessageBox.Ok)
            QtGui.qApp.exit(1)

        quitBtn = QtGui.QPushButton("Quit")
        self.connect(quitBtn, QtCore.SIGNAL('clicked()'), QtGui.qApp,
                     QtCore.SLOT('quit()'))

        saveBtn = QtGui.QPushButton("Save")
        self.connect(saveBtn, QtCore.SIGNAL('clicked()'), self.saveConfig)

        buttons = QtGui.QHBoxLayout()
        buttons.addWidget(saveBtn)
        buttons.addWidget(quitBtn)

        layout = QtGui.QVBoxLayout()

        statusLbl = QtGui.QLabel("Connected on %s" % port)
        layout.addWidget(statusLbl)
        for sname in self.config['servo']:
            servo = self.config['servo'][sname]
            sc = ServoControl(self, sname, servo)
            layout.addWidget(sc)
        layout.addLayout(buttons)
        self.setLayout(layout)