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)
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)