#ifndef TASKTHREAD_H #define TASKTHREAD_H #include #include #include #include #include #include #include "camera_thread.h" #pragma execution_character_set("utf-8") class taskThread : public QThread { Q_OBJECT public: explicit taskThread(QObject *parent = nullptr); ~taskThread(); void run(); void setFinsTcpPtr(Base* finsPtr) { finstcp_ptr = finsPtr; } void setMutex( QMutex *mutex){ m_mutex = mutex; } bool initTaskThread(int index,QString stationName,QJsonArray array,QList list); bool processTask(); bool appendPlcCmd(QJsonObject); bool sendCatchCommond(); bool sendDataCommond( QString m_type,cv::Mat mat,QByteArray byte, int index = 0); bool saveAlgorithmData ( testData m_testdata,QByteArray byte); bool writeAiCommond(QString cameraName,QByteArray byte); bool writeAiCommond(QString cameraName, QByteArray byte,int index); bool writeTcpData(QMap map); bool decodeAiValue(QByteArray byte,QVector &vec_ret); bool AlgorithmModuleProcessData(QString key,std::vector camera_mat,QByteArray byte); // 处理数据 QVector getWriteVector(QString &startPos,QMap &map); QByteArray writeFormat(QString startPos,QVector vector_value); // 写入的起始位置,写入的内容+长度 MyModule getExecModule(QString key); QJsonObject getModuleObject(QString key); // 处理黑匣子中的可执行数据 bool processExecData(); private: Base* finstcp_ptr = nullptr; QObject *m_obj; QMutex *m_mutex; QString m_name; // 算法名称 QString m_type; // 类型 bool m_stoprun = true; int m_thread_index = -1; // 当前线程的下标 QString m_stationName = nullptr; // 当前站名 QString save_data_flag = "false"; // 是否保存数据 MyModule m_exec_module; // 当前执行的模块 QJsonObject m_exec_object; // 当前执行的模块配置文件 QList m_module_list; // 存储算法模块的模块列表 QList module_jsonobject_list; // 存储所有算法模块的模块列表 QMap> plc_commond_vector_map; // 算法模块使用的变量 QQueue queue_exec_cameraName; // 执行当前算法的相机名称队列 signals: }; #endif // TASKTHREAD_H