#pragma once //通用逻辑接口 #include "base_Logic.h" #include //无法用信号槽传递图像? //返回图片的结构体 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); };