Files
ds-628/HanddleAI/Logic_transfer.h
T

84 lines
2.9 KiB
C++
Raw Normal View History

2024-09-27 14:31:22 +08:00
#pragma once
//通用逻辑接口
#include "base_Logic.h"
#include <qobject.h>
2024-09-27 14:31:22 +08:00
//无法用信号槽传递图像?
//返回图片的结构体
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);
};