// RecvDataHandler.h #ifndef RECVDATAHANDLER_H #define RECVDATAHANDLER_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "../Media/Media.h" #include "../Media/VideoDecoder/FFmpegDecoder.h" #include "../LicenseGenerate/LicenseGenerate.h" #include "MsgTpye.h" #define YUV420 1 #define YUV422 2 class DataHandler : public QObject { Q_OBJECT public: explicit DataHandler(QLabel* leftLens_imageLabel, QLabel* rightLens_imageLabel, QLabel* videoLabel, QTextEdit* licenseHwInfoEdit, QMap* devInfoLineEdits, QJsonArray frontBoardOneClickTest, QJsonArray frontBoardTest, QJsonArray frontBoardFuncConfig, QJsonArray frontBoardDevInfoJson, QJsonArray frontBoardLicenseJson, QJsonArray backBoardOneClickTest, QJsonArray backBoardTest, QJsonArray backBoardFuncConfig, QJsonArray backBoardDevInfoJson, QJsonArray backBoardUuidJson, QJsonArray getPicJson, QJsonArray getVideoJson, QObject* parent = nullptr); ~DataHandler(); public slots: void handleData(const QString& client, const QByteArray& data, int msg_id, int currentRecvItemIndex, int currentRecvFuncItemIndex, const QString& itemData, const QString& funcItemData, const QJsonArray& jsonArray, int itemJsonIndex); void handleOpenFocusWindow(int itemIndex); signals: void statusUpdated(const QString& clientAddress, int currentItemIndex, int currentFuncItemIndex, bool success, const QString& currentItemLabel, const QString& currentFuncItemLabel, const QJsonArray& jsonArray, int itemJsonIndex); private: QJsonArray frontBoardOneClickTest; // 前板一键功能测试 JSON QJsonArray frontBoardTest; // 前板单项测试 JSON QJsonArray frontBoardFuncConfig; // 前板功能配置参数 JSON QJsonArray frontBoardDevInfoJson; // 前板设备信息参数 JSON QJsonArray frontBoardLicenseJson; // 前板license信息 JSON QJsonArray backBoardOneClickTest; // 后板一键功能测试 JSON QJsonArray backBoardTest; // 后板单项测试 JSON QJsonArray backBoardFuncConfig; // 后板功能配置参数 JSON QJsonArray backBoardDevInfoJson; // 后板设备信息参数 JSON QJsonArray backBoardUuidJson; // 后板UUID和SN参数 JSON QJsonArray getDevInfoJson; // 获取设备信息 JSON 配置 QJsonArray getPicJson; // 发送取图指令 JSON 配置 QJsonArray getVideoJson; // 发送拉视频指令 JSON 配置 QLabel* leftLens_m_imageLabel; QLabel* rightLens_m_imageLabel; QLabel* videoLabel; QTextEdit* licenseHwInfoEdit; QByteArray allRecvData; // 完整的一帧数据 int remain = 0; int start_run = 0; long dataLen = 0; FFmpegDecoder* ffmpegDecoder; QByteArray *buffer; QHash clientLastMsgId; QMap* devInfoLineEdits; QMap msgIdToCmdMap; // 如果接收十六进制数据,转为二进制 QByteArray hexStringToByteArray(const QString& hexString); void showVideo(const QString& client, const QByteArray& valData); void clearAllRecvData(); void handleCmd(int msg_id, const QString& client, QByteArray actual_data); void handleFrontCmd(int msg_id, const QString& client, QByteArray actual_data); void handleDevInfo(int msg_id, const QString& client, QByteArray actual_data); void handleBackCmd(int msg_id, const QString& client, QByteArray actual_data); void initializeMsgIdToCmdMap(); void updateLineEdit(int msg_id, const QByteArray& actual_data); }; #endif // DATAHANDLER_H