Files
CodeRepository/Apps/App_MqttClient/MqttDealer.h
chenzhen 222dda1e43 1,新增“App_ThermalImageSystem”;
2,新增“Apps”;
3,新增“Common”;
4,新增“FileList”;
5,新增“MediaX”;
6,新增“OpenSource”;
7,新增“Samples”;
8,新增“SoftwareBusinessLines”.
2026-02-14 23:03:23 +08:00

73 lines
2.0 KiB
C++

#ifndef MQTTCONNECT_H
#define MQTTCONNECT_H
#include "mosquitto.h"
#include "mosquittopp.h"
#include <thread>
#include <mutex>
#include <QObject>
// 设备通信模块
class MqttDealer : public QObject
{
Q_OBJECT
public:
explicit MqttDealer();
virtual ~MqttDealer();
public:
bool Open(const char* sDevIP, int iDevPort);
bool Close();
bool IsOpen();
bool Subcribe(QString strTopic);
bool Unsubcribe(QString strTopic);
void PublishDataByMQTT(QString strTopic, QString strData);
void PublishDataByMQTT(QString strTopic, QByteArray arrayData);
void SetHexData(bool bHexData);
private:
static bool InitMQTT();
static void UintMQTT();
static bool m_bIsInitMQTT;
signals:
void sigMQTTDisconnect();
void sigMQTTMessage(QString, QString);
void sigMQTTMessage(QString, QByteArray);
protected:
typedef void (MqttDealer::*ThreadRunFunPtr)();
static void ThreadEntry(ThreadRunFunPtr pRunFun, void* pOwner);
void ThreadFunLoop();
private:
static void mqtt_log_callback(struct mosquitto* mosq, void* ubuf, int level, const char* str);
static void mqtt_connect_callback(struct mosquitto* mosq, void* topic, int result);
static void mqtt_message_callback(struct mosquitto* mosq, void* obj, const struct mosquitto_message* message);
static void mqtt_disconnect_callback(struct mosquitto* mosq, void* obj, int result);
static void mqtt_publish_callback(struct mosquitto* mosq, void* obj, int mid);
private:
bool m_bOpen;
//MQTT
mosquitto* m_pMosquitto;
std::mutex m_varMutexMosquitto;
bool m_bThreadRunning;
std::thread* m_ptrThread;
QString m_strMqttServerIP; //MQTT服务器IP
int m_nMqttServerPort; //MQTT服务器连接端口
bool m_bConnectSuccess; //连接成功标志
bool m_bHexData;
};
#endif // MQTTCONNECT_H