Пример #1
0
    def __init__(self, connection, replayMode=False, enableLog=True):
        super().__init__()
        self.internalHandlerLookup = {}
        self.mavStatus = {MavStsKeys.AP_SYS_ID: 1}
        self.isConnected = False
        # self.paramList = []
        self.paramPanel = None

        self.txLock = QMutex()  # uplink lock
        self.txResponseCond = QWaitCondition()
        self.txTimeoutTimer = QTimer()
        self.finalWPSent = False

        self.wpLoader = MAVWPLoader()
        self.onboardWPCount = 0
        self.numberOfonboardWP = 0
        self.onboardWP = []

        self.mavlinkLogFile = None
        self.lastMessageReceivedTimestamp = 0.0
        self.lastMessages = {}  # type = (msg, timestamp)

        self.param = UserData.getInstance().getUserDataEntry(
            UD_TELEMETRY_KEY, {})
        self.messageTimeoutThreshold = UserData.getParameterValue(
            self.param, UD_TELEMETRY_TIMEOUT_THRESHOLD_KEY,
            MAVLinkConnection.DEFAULT_MESSAGE_TIMEOUT_THRESHOLD)
        self.txTimeoutmsec = self.messageTimeoutThreshold * 1000000
        # timeout for wait initial heartbeat signal
        self.initHeartbeatTimeout = UserData.getParameterValue(
            self.param, UD_TELEMETRY_HEARTBEAT_TIMEOUT_KEY,
            MAVLinkConnection.DEFAULT_HEARTBEAT_TIMEOUT)
        self.txMessageQueue = deque()
        self.running = True
        self.connection = connection
        self.replayMode = replayMode
        self.enableLog = enableLog
        self.uas = None
        if replayMode:
            self.enableLog = False
            connection.replayCompleteSignal.connect(self.requestExit)
        self.internalHandlerLookup[
            'PARAM_VALUE'] = self.receiveOnboardParameter
        self.internalHandlerLookup[
            'MISSION_REQUEST'] = self.receiveMissionRequest
        self.internalHandlerLookup[
            'MISSION_ACK'] = self.receiveMissionAcknowledge
        self.internalHandlerLookup[
            'MISSION_COUNT'] = self.receiveMissionItemCount
        self.internalHandlerLookup['MISSION_ITEM'] = self.receiveMissionItem
        self.internalHandlerLookup['DATA_STREAM'] = self.receiveDataStream
        self.internalHandlerLookup['PARAM_SET'] = self.receiveParameterSet

        self.txTimeoutTimer.timeout.connect(self._timerTimeout)
        self.txTimeoutTimer.setSingleShot(True)
Пример #2
0
    def __init__(self, parent):
        super().__init__(parent)
        self.instrumentOpagueBackground = QBrush(
            QColor.fromHsvF(0, 0, 0.3, 1.0))
        self.instrumentBackground = QBrush(QColor.fromHsvF(0, 0, 0.3, 0.3))
        self.instrumentEdgePen = QPen(QColor.fromHsvF(0, 0, 0.65, 0.5))
        self.font = QFont()
        self.lineWidth = 2
        self.fineLineWidth = 1

        self.navigationTargetBearing = PrimaryFlightDisplay.UNKNOWN_ATTITUDE
        self.navigationCrosstrackError = 0
        self.primaryAltitude = PrimaryFlightDisplay.UNKNOWN_ALTITUDE
        self.GPSAltitude = PrimaryFlightDisplay.UNKNOWN_ALTITUDE
        self.verticalVelocity = PrimaryFlightDisplay.UNKNOWN_ALTITUDE
        self.primarySpeed = PrimaryFlightDisplay.UNKNOWN_SPEED
        self.groundspeed = PrimaryFlightDisplay.UNKNOWN_SPEED
        self.roll = 0.0
        self.pitch = 0.0
        self.yaw = 0.0
        self.rollspeed = 0.0
        self.pitchspeed = 0.0
        self.yawspeed = 0.0
        self.latitude = 0.0
        self.longitude = 0.0
        self.additionalParameters = {}

        self.param = UserData.getInstance().getUserDataEntry(UD_PFD_KEY, {})
        self.isGPSSpeedPrimary = UserData.getParameterValue(
            self.param, UD_PFD_PRIMARY_SPEED_SOURCE_KEY) == 'GPS'
        self.isGPSAltitudePrimary = UserData.getParameterValue(
            self.param, UD_PFD_PRIMARY_ALTITUDE_SOURCE_KEY) == 'GPS'
        self.setMinimumSize(480, 320)
        self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.smallTestSize = self.SMALL_TEXT_SIZE
        self.mediumTextSize = self.MEDIUM_TEXT_SIZE
        self.largeTextSize = self.LARGE_TEXT_SIZE
        self.uiTimer = QTimer(self)
        self.uiTimer.setInterval(40)
        self.uiTimer.timeout.connect(self.update)
        self.uas = None
Пример #3
0
 def __init__(self, name, parent=None):
     super().__init__(name, parent)
     self.gpsSrc = UserData.getParameterValue(
         self.param, UD_UAS_CONF_GPS_SRC_KEY,
         StandardMAVLinkInterface.DEFAULT_GPS_SRC)
Пример #4
0
 def __getLastConnectionParameter(self):
     pParam = UserData.getInstance().getUserDataEntry(UD_TELEMETRY_KEY, {})
     return UserData.getParameterValue(pParam,
                                       UD_TELEMETRY_LAST_CONNECTION_KEY, {})
Пример #5
0
    def __init__(self, initParams=None, parent=None):
        super().__init__(parent)
        self.portList = {}
        self.autoBaud = None
        self.MAVLinkConnectedSignal = parent.MAVLinkConnectedSignal
        self.MAVLinkConnectedSignal.connect(self.__recordLastConnection)
        self.__autoBaudStartSignal.connect(self.__autoBaud)
        self.listSerialPorts()
        if initParams == None:
            self.params = self.__getLastConnectionParameter()
        else:
            self.params = initParams
        l = QGridLayout()
        row = 0

        lbl, self.portsDropDown = self._createDropDown(
            'Serial Port', self.portList,
            UserData.getParameterValue(self.params,
                                       UD_TELEMETRY_LAST_CONNECTION_PORT_KEY))
        l.addWidget(lbl, row, 0, 1, 1, Qt.AlignRight)
        l.addWidget(self.portsDropDown, row, 1, 1, 3, Qt.AlignLeft)
        self.refreshButton = QPushButton(
            '\u21BB')  # Unicode for clockwise open circle arrow
        self.refreshButton.setFixedSize(self.portsDropDown.height(),
                                        self.portsDropDown.height())
        l.addWidget(self.refreshButton, row, 4, 1, 1, Qt.AlignLeft)
        self.refreshButton.clicked.connect(
            lambda: self.listSerialPorts(self.portsDropDown))
        row += 1

        lbl, self.baudDropDown = self._createDropDown(
            'Baud Rate', BAUD_RATES,
            UserData.getParameterValue(
                self.params, UD_TELEMETRY_LAST_CONNECTION_BAUD_RATE_KEY))
        l.addWidget(lbl, row, 0, 1, 1, Qt.AlignRight)
        l.addWidget(self.baudDropDown, row, 1, 1, 3, Qt.AlignLeft)
        row += 1

        lbl, self.flowDropDown = self._createDropDown('Flow Control',
                                                      FLOW_CONTROL)
        l.addWidget(lbl, row, 0, 1, 1, Qt.AlignRight)
        l.addWidget(self.flowDropDown, row, 1, 1, 1, Qt.AlignLeft)

        lbl, self.parityDropDown = self._createDropDown('Parity', PARITY)
        l.addWidget(lbl, row, 2, 1, 1, Qt.AlignRight)
        l.addWidget(self.parityDropDown, row, 3, 1, 1, Qt.AlignLeft)
        row += 1

        lbl, self.bitsDropDown = self._createDropDown('Data Bits', DATA_BITS)
        l.addWidget(lbl, row, 0, 1, 1, Qt.AlignRight)
        l.addWidget(self.bitsDropDown, row, 1, 1, 1, Qt.AlignLeft)

        lbl, self.stopDropDown = self._createDropDown('Stop Bits', STOP_BITS)
        l.addWidget(lbl, row, 2, 1, 1, Qt.AlignRight)
        l.addWidget(self.stopDropDown, row, 3, 1, 1, Qt.AlignLeft)
        row += 1
        self.autoBaudMessageLabel = QLabel('')
        l.addWidget(self.autoBaudMessageLabel, row, 0, 1, 3)
        row += 1

        self.setLayout(l)