#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(); QJsonObject load_camera_cfg(); bool checkJsonObject(QJsonObject obj, QString& errMessage) { if (Logic_ptr) return Logic_ptr->checkJsonObject(obj, errMessage); else return false; } bool setJsonObject(QJsonObject obj) { if (Logic_ptr) Logic_ptr->setJsonObject(obj); else return false; return true; } bool initTask() { if (Logic_ptr) Logic_ptr->initTask(); else return false; return true; } bool startTask() { if (Logic_ptr) Logic_ptr->startTask(); else return false; return true; } bool stopTask() { if (Logic_ptr) Logic_ptr->stopTask(); else return false; return true; } bool exitTask() { if (Logic_ptr) Logic_ptr->exitTask(); else return false; return true; } bool restartTask() { if (Logic_ptr) Logic_ptr->restartTask(); else return false; return true; } QMutex* showMutex; QQueue< showImgStruct> queue_showImgStruct; bool getShowQImage(QQueue< showImgStruct>&); //内部使用 private: QString currPath; QString json_cfg_file_path; QJsonObject m_jsonObj; base_Logic* Logic_ptr; ReleaseFunction destory_Logic = nullptr; //释放 void check_sendImgStruct(); //对外接口 signals: void LogicTransfer_sendImage(QString, QImage*); void LogicTransfer_sendTcpStatus(bool); void LogicTransfer_writeData(QString, QString, QString, QByteArray, QString); void LogicTransfer_cameraDisconnect(QString msg, bool status); void LogicTransfer_CommunicationDisconnect(QString msg, bool status); private slots: void base_Logic_sendImage(QString key, cv::Mat mtx); void base_Logic_sendTcpStatus(bool flag); void base_Logic_writeData(QString key, QString cameraName, QString snInfo, QByteArray byte, QString sendNgInfo); void base_Logic_cameraDisconnect(QString msg, bool status); void base_Logic_CommunicationDisconnect(QString msg, bool status); };