#ifndef Cockpit_H #define Cockpit_H #include #include #include "QTimer" #include "QDebug" #include "QPainterPath" #ifdef QtCockpit #include class COCKPITSHARED_EXPORT Cockpit: public QWidget { #else class Cockpit: public QWidget { #endif Q_OBJECT public: enum ErrorCode {MaxValueError=1,MinValueError,ThresholdError,TargetError,PrecisionError,ColorError,UnitsEmpty,OutOfRange}; explicit Cockpit(QWidget *parent = nullptr); ~Cockpit(); typedef struct { QColor CentreLineColor; QColor ForeColor; QColor CornerColor; QColor GroundColor;//大地颜色 QColor SkyColor;//天空颜色 QColor LedColor; QColor CurrentColor; QColor TargetColor; QColor StatusColor; QColor NormalColor; QColor NoticeColor; QColor WarningColor; QColor WColor; }_color; typedef struct { QString GPS; QString MODE; QString STATE; qreal ax = 0; qreal ay = 0; qreal az = 0; qreal gx = 0; qreal gy = 0; qreal gz = 0; qreal roll = 0; qreal pitch = 0; qreal yaw = 0; qreal altitude = 0; qreal altitude_t = 0; qreal height = 0; qreal speed = 0; qreal airspeed=0; qreal airspeed_t=0; qreal verticalspeed = 0; qreal verticalspeed_t = 0; qreal horizontalspeed = 0; qreal AOA = 0; qreal OL = 0; qreal wp_dist = 0; qreal alt_err = 0; qreal xtrack = 0; quint8 AirspeedFlag = 0; quint8 AltitudeFlag = 0; bool isUpdate; }_state; typedef struct { qreal voltage[10]; qreal current[10]; }_battery; typedef struct{ qreal pitch = 0; qreal roll = 0; qreal yaw = 0; qreal height = 0; qreal airspeed_maximun = 0; qreal airspeed = 0; qreal airspeed_minimun = 0; qreal heading = 0;//航线方向 qreal position = 0;//侧偏距 qreal altitude = 0;//海拔 qreal verticalspeed = 0;//纵向速度 bool isUpdate = false; }_target; _target m_Target; _state m_State; _color m_Color; Q_SIGNALS: void errorSignal(int); void showMessage(const QString &message,int TimeOut = 0); public Q_SLOTS: bool NormalSize() { return isNormalSize; } void setNormalSize(bool flag) { isNormalSize = flag; } //void setUseOpenGL(const bool &value); void setPitch(qreal Pitch); void setRoll(qreal Roll); void setYaw(qreal Yaw); void setAttitude(qreal Pitch,qreal Roll,qreal Yaw); void setAttitudeSpeed(qreal PitchSpeed,qreal RollSpeed,qreal YawSpeed); void setPitchTarget(qreal Pitch); void setRollTarget(qreal Roll); void setYawTarget(qreal Yaw); void setAttitudeTarget(qreal Pitch,qreal Roll,qreal Yaw); void setAltitude(qreal Altitude); void setHeight(double Altitude); void setAltitudeTarget(double Altitude); void setSpeed(double speed,uint8_t flag); void setAirSpeed(qreal speed,uint8_t flag); void setAirSpeedTarget(double speed,uint8_t flag); void setAirSpeedFlag(quint8 flag); quint8 AirSpeedFlag(void) { return m_State.AirspeedFlag; } quint8 AltitudeFlag(void) { return m_State.AltitudeFlag; } void setVerticalSpeed(double speed); void setVerticalSpeedTarget(double speed); void setLed(QColor LED); void setGPS(QString str); void setMode(QString str); void setState(QString str); void setAOA(qreal Value); void setOL(qreal Value); void setXTrack(double value); void setWP_dist(double value); void setAlt_err(double value); protected: void mouseMoveEvent(QMouseEvent *e); void mouseReleaseEvent(QMouseEvent *e); void mousePressEvent(QMouseEvent *e); void mouseDoubleClickEvent(QMouseEvent *e); void wheelEvent(QWheelEvent *e); //void resizeEvent(QResizeEvent *); //void hideEvent(QHideEvent *); //void showEvent(QShowEvent *); void paintEvent(QPaintEvent *); void drawLed(QPainter *painter); void drawPitch(QPainter *painter); void drawRoll(QPainter *painter); void drawRollScale(QPainter *painter); void drawVRate(QPainter *painter); void drawYawScale(QPainter *painter); void drawLeftScale(QPainter *painter); void drawRightScale(QPainter *painter); void drawTopStatuts(QPainter *painter); private slots: void UpdateTimeout(void); private: bool isNormalSize = true; QTimer *UpdateTimer = nullptr; qreal Scale = 2100;//默认很大 qreal H_pos = 44.7059; qreal V_pos = 43.8235; QPoint lastPoint; bool isPress = false; //uint8_t speedSelect = 0; }; #endif // ALTITUDEPANEL_H