Esempio n. 1
0
    def load(self, filename, host="localhost", port=6499):
        print "Tuner.load " + str(port)
        basename = os.path.basename(str(filename))
        fileroot, ext = os.path.splitext(basename)

        if filename == "":
            error = QtGui.QErrorMessage(self)
            error.showMessage( "Error, you must specify an autopilot.xml config file name" )
            return
        elif not os.path.exists(filename):
            error = QtGui.QErrorMessage(self)
            error.showMessage( filename + ": does not exist" )
            return

        try:
            self.xml = ET.parse(filename)
        except:
            error = QtGui.QErrorMessage(self)
            error.showMessage( filename + ": xml parse error:\n"
                               + str(sys.exc_info()[1]) )
            return

        self.filename = str(filename)
        self.fileroot, ext = os.path.splitext(self.filename)

        root = self.xml.getroot()

        # Route follow parameters
        self.L1 = L1Controller(changefunc=self.onChange, host=host, port=port)
        self.L1.parse_xml( root.find('L1_controller') )
        self.tabs.addTab( self.L1.get_widget(), "L1" )

        # PID controller parameters
        for i,pid_node in enumerate(root.findall('component')):
            e = pid_node.find('module')
            if e != None and e.text != None:
                comp_type = e.text
            else:
                comp_type = 'unknown'
            print "component found:", comp_type
            if comp_type == 'pid_component':
                pid = Component(index=i, changefunc=self.onChange, host=host,
                                port=port, type="pid")
            elif comp_type == 'pid_vel_component':
                pid = Component(index=i, changefunc=self.onChange, host=host,
                                port=port, type="vel")
            else:
                print "unknown ..."
                next
            pid.parse_xml(pid_node)
            self.components.append(pid)
            self.tabs.addTab( pid.get_widget(), pid.get_name() )