Files
2024-02-27 15:29:15 +08:00

62 lines
2.5 KiB
C++

#ifndef TASKTHREAD_H
#define TASKTHREAD_H
#include <QObject>
#include <QThread>
#include <QJsonArray>
#include <QJsonObject>
#include <QQueue>
#include <QDebug>
#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<MyModule> 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<QString,QString> map);
bool decodeAiValue(QByteArray byte,QVector<QByteArray> &vec_ret);
bool AlgorithmModuleProcessData(QString key,std::vector<cv::Mat> camera_mat,QByteArray byte); // 处理数据
QVector<QString> getWriteVector(QString &startPos,QMap<QString,QString> &map);
QByteArray writeFormat(QString startPos,QVector<QString> 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<MyModule> m_module_list; // 存储算法模块的模块列表
QList<QJsonObject> module_jsonobject_list; // 存储所有算法模块的模块列表
QMap<QString,QVector<QString>> plc_commond_vector_map; // 算法模块使用的变量
QQueue<testData> queue_exec_cameraName; // 执行当前算法的相机名称队列
signals:
};
#endif // TASKTHREAD_H