#ifndef REALTIMEPOSITIONINFOTHREAD_H #define REALTIMEPOSITIONINFOTHREAD_H /* * @brief 实时接收飞机位置信息子线程 */ #include <QObject> #include <QVector> #include <QList> #include <QMap> #include <QTimer> #include <QMutex> #include <QThread> class RealTimePositionInfoThread : public QObject { Q_OBJECT public: explicit RealTimePositionInfoThread(QObject *parent = nullptr); //执行子线程业务逻辑 void working(); void startSendCollisionDetectionPosInfo(int ms); public slots: void receiveRealTimePositionInfo(QList<double> lon,QList<double> lat,QList<double> relativeAlititude, QList<double> heading,QList<double> speed); //发送位置信息用于实时显示飞机位置 void startSendDisplayInfo(int ms); //停止发送数据给碰撞探测子线程 void stopSendCollisionDetectionPosInfo(); /***********************Test***********************/ void receiveTest(int i); signals: void sendDisplayInfo(QMap<int,QList<double>>& qmapLon,QMap<int,QList<double>>& qmapLat,QMap<int,QList<double>>& qmapHeading); void sendCollisionDetectPosInfo(QList<double> lon,QList<double> lat,QList<double> relativeAlititude, QList<double> heading,QList<double> speed); void sendPos(QList<double> lon,QList<double> lat,QList<double> heading); private: QMutex mutex; //存储飞机的位置信息的列表 QMap<int,QList<double>> qmapLon; //经度 QMap<int,QList<double>> qmapLat; //纬度 QMap<int,QList<double>> qmapRelativeAlititude; //相对高度 QMap<int,QList<double>> qmapHeading; //航向 QMap<int,QList<double>> qmapSpeed; //速度 //容量最大值 const int MAX_CONTAINER = 100; //数据转发定时器 QTimer* showPos_timer; //用于实时位置显示 QTimer* collisionDetect_timer;//用于地形碰撞检测 private: //清除部分容器值 void removePositionContainer(int count); void collisionDetectTimeout(); }; #endif // REALTIMEPOSITIONINFOTHREAD_H