62 lines
2.5 KiB
C++
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
|