Files
ds-628/HanddleAI/Logic_transfer.h
T
2024-09-27 14:31:22 +08:00

85 lines
2.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#pragma once
//通用逻辑接口
#include "base_Logic.h"
//无法用信号槽传递图像?
//返回图片的结构体
struct showImgStruct
{
QImage* show_QImage; //返回的图像
QString cameraKey_index; //关键字_序号
};
typedef base_Logic* (*CreateFunction)();
typedef void (*ReleaseFunction)(base_Logic* animal);
#pragma execution_character_set("utf-8")
//QT_CHARTS_USE_NAMESPACE
class Logic_transfer : public base_Logic
{
Q_OBJECT
public:
Logic_transfer();
~Logic_transfer();
//1、加载配置文件
QJsonObject load_camera_cfg(QString cfg);
//2、检查配置文件,返回检查结果(true表示配置文件正常,false表示异常)及字符串
//配置文件正常也有字符串返回,可按照返回结果进行弹窗提示。
bool checkJsonObject(QJsonObject obj, QString& errMessage);
//3、传递配置文件到通用逻辑框架
bool setJsonObject(QJsonObject obj);
//4、初始化任务
bool initTask();
//5、开始任务
bool startTask();
//6、获取全部图像显示数据;
//可使用定时器,或者线程;
bool getShowQImage(QQueue< showImgStruct>&);
//8、退出所有类、释放模块
bool exitTask();
//重新加载配置文件json,设置参数
bool reLoadJsonSetParameter(QStringList moduleKeyList);
//按需:停止任务、清理数据
bool stopTask();
//按需:重新运行
bool restartTask();
//发送指令给PLC
bool sendPLC(QString cmd);
//内部使用
private:
QString currPath;
QString json_cfg_file_path;
QJsonObject m_jsonObj;
base_Logic* Logic_ptr;
ReleaseFunction destory_Logic = nullptr; //释放
void check_sendImgStruct();
void decodeImage(QString key, cv::Mat mtx);
QMutex* showMutex;
QQueue< showImgStruct> queue_showImgStruct;
//对外接口
signals:
//7.信号:检测、汇总算法返回的数据
//检测、汇总算法返回的数据;key,算法名称;cameraName,相机key_图像序号;snInfo,SN_时间戳;byte,结果数据;
void LogicTransfer_writeData(QString key, QString cameraName, QString snInfo, QByteArray byte);
//void LogicTransfer_sendImage(QString, QImage*);
void LogicTransfer_sendTcpStatus(bool);
void LogicTransfer_cameraDisconnect(QString msg, bool status);
//void LogicTransfer_CommunicationDisconnect(QString msg, bool status);
private slots:
void base_Logic_sendTcpStatus(bool flag);
//检测、汇总算法返回的数据;key,算法名称;cameraName,相机key_图像序号;snInfo,SN_时间戳;byte,结果数据;
void base_Logic_writeData(QString key, QString cameraName, QString snInfo, QByteArray byte);
void base_Logic_cameraDisconnect(QString msg, bool status);
//void base_Logic_CommunicationDisconnect(QString msg, bool status);
};