#ifndef FIRINGWIDGET_H #define FIRINGWIDGET_H #include "navprogress.h" #include "../mqtt/mqttclient.h" #include "../blastRecord/hblastrecord.h" #include "../blastRecord/hblastrecorddao.h" #include "../blastRecordDet/hblastrecorddetdao.h" #include "../blastRegRecord/hblastregrecorddao.h" #include "../databasemanager.h" #include #include #include #include "../des3encryption.h" #include "../mqttthread.h" #include "../serial/serialtool.h" namespace Ui { class firingWidget; } class firingWidget : public QWidget { Q_OBJECT public: explicit firingWidget(const int& row ,const bool& select ,const QString& uuid = "",QWidget *parent = nullptr); ~firingWidget(); void cancelBlasting(); public slots: void onCountdownFinished(const QString &topic, const QString &message); private slots: void on_pushButton_2_clicked(); void on_sendTest_4_clicked(); void handleMessageAndTopic(const QByteArray &message, const QMqttTopicName &topic); signals: void progressChanged(int value,int row); void lastStageChanged(int newStage); void updateBlastStatus(int status,int row); void selectSignal(QString uuid); void updateButton(int status,int row); void updateProjectStatus(QString uuid); void updateData(const QJsonObject &jsonObj); void countdown(QString uuid,const QString &topic,const QString &message); void closeFiring(QString uuid); private slots: // 处理 MQTT 连接成功的槽函数 void onMqttConnected(); //双键按下 void onButtonPressedReceived(const QString &topic,const QString &message); void onLastStageChanged(int newStage); void updateWebData(const QJsonObject &data); private: bool addRegData(const QJsonObject &jsonObj); bool addDetData(const QJsonObject &jsonObj); bool danUpload(const QJsonObject &jsonObj); void sendMqttMessage(const QString &topic, const QByteArray &message); void startBlasting(); private: Ui::firingWidget *ui; MqttClient *pcPorjectBC; HBlastRecordDao dao; HBlastRecordDetDao daoDet; HBlastRegRecordDao daoReg; NavProgress *navProgress; MqttThread* mqttThread; SerialTool* serialTool=nullptr; QString m_uuid; // 用于存储 uuid QString reg_uuid; // 用于存储 uuid QString blast_uuid; // 用于存储 uuid QString topic; int m_row; int lastStage = -1; // 用于记录上一次的 stage 状态 bool m_isMqttConnected = false; bool m_select; QMetaObject::Connection connection; // 声明 connection 变量 QMetaObject::Connection connectionPress; QString lat; QString lon; }; #endif // FIRINGWIDGET_H