FromMQTT.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #ifndef _FROMMQTT_H_
  2. #define _FROMMQTT_H_
  3. #include <atomic>
  4. #include "MQTTBase.h"
  5. class FromMQTT : public MQTTBase
  6. {
  7. Q_OBJECT
  8. public:
  9. FromMQTT(QObject* parent = nullptr);
  10. ~FromMQTT() override;
  11. /* 传入MQTT地址和端口 */
  12. void setAddrInfo(const QString& ip, int port);
  13. /* 初始化MQTT */
  14. bool initMQTT();
  15. QString m_webAPIUrl;
  16. QString m_webAPIID;
  17. signals:
  18. /* 刷新页面信号 */
  19. void signal_updatePlan();
  20. /* Web信息到达信号(用于退出等待) */
  21. void signal_webInfoReady();
  22. private:
  23. /* 读取配置文件 */
  24. void readConfig();
  25. /* 等待获取到WebAPI信息(非阻塞UI,收到立即返回)*/
  26. bool waitForWebInfo(int timeoutMs);
  27. protected:
  28. /* 接收到消息,子类继承这个解析消息数据 */
  29. void recvMessage(const QMQTT::Message& message) override;
  30. private:
  31. QString m_mqttIP; /* MQTT服务器IP */
  32. int m_mqttPort = 1883; /* MQTT服务器端口 */
  33. int m_timeOut = 20000; /* 超时时间 */
  34. const QString m_topic_WebAPI = "LH_WEBINFO"; /* 订阅WebAPI信息的主题 */
  35. const QString m_topic_UpdatePlan = "LH_EXECPLAN_CHANGED"; /* 订阅更新计划的主题 */
  36. const QString m_configName = "/Config.ini";
  37. std::atomic_bool m_isGetWebInfoSuccess{false}; /* 是否获取到WebAPI信息 */
  38. std::atomic_bool m_isReadConfig{true}; /* 是否读取配置文件,默认是读取 */
  39. };
  40. #endif // _FROMMQTT_H_