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