2024-09-27 14:31:22 +08:00
|
|
|
|
#pragma once
|
|
|
|
|
|
//通用逻辑接口
|
|
|
|
|
|
#include "base_Logic.h"
|
2024-10-17 16:37:42 +08:00
|
|
|
|
|
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
|
2024-10-17 16:37:42 +08:00
|
|
|
|
|
2024-09-27 14:31:22 +08:00
|
|
|
|
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);
|
|
|
|
|
|
};
|