132 lines
5.2 KiB
C++
132 lines
5.2 KiB
C++
#pragma once
|
|
#include <nlohmannJson.hpp>
|
|
#include <sql/qSqlBase.h>
|
|
#include <sql/dataRecorder.h>
|
|
|
|
enum initStatus {
|
|
NotInit,
|
|
InitFailure,
|
|
InitOK
|
|
};
|
|
|
|
struct showImgPack {
|
|
cv::Mat img;
|
|
QString name = "";
|
|
QString type;
|
|
showImgPack() {};
|
|
showImgPack(QString name, QString type) : type(type), name(name) {}
|
|
};
|
|
|
|
enum valueType {
|
|
finsShort,
|
|
finsFloat
|
|
};
|
|
|
|
// PLC 值查看器的配置结构体
|
|
struct PlcValueViewerStruct {
|
|
QString valueName;
|
|
int valueAddr;
|
|
valueType type = finsShort;
|
|
QVariant value = -999;
|
|
};
|
|
|
|
//后端信号集成
|
|
class bSignalHub :public QObject {
|
|
Q_OBJECT
|
|
public:
|
|
explicit bSignalHub(QObject* parent = nullptr) : QObject(parent) {}
|
|
// 禁止拷贝
|
|
Q_DISABLE_COPY(bSignalHub)
|
|
signals:
|
|
// 汇总数据
|
|
void summaryData_addData(QString window, double data);
|
|
// 日志相关
|
|
void loadingWindow_appendInitLog(const QString& text, const QColor& color);
|
|
void loadingWindow_modifyLog(int col, const QString& text, const QColor& color);
|
|
void loadingWindow_clearLog();
|
|
// 登录结果
|
|
void initResult(initStatus result);
|
|
// 图像显示
|
|
void displayWidget_sendImg(showImgPack pack);
|
|
//数据到界面
|
|
//饼图
|
|
void pieWidgetModifyData(int modifyOkData, int modiftNgData);
|
|
//柱状图
|
|
void histogramWidgetAddData(int modifyOkData, int modiftNgData, std::vector<std::string>);
|
|
//设置PLC连接失败(闪红灯)
|
|
void setPlcConnectionError();
|
|
//设置PLC连接成功(绿灯常亮)
|
|
void setPlcConnectionOk();
|
|
//设置相机连接失败(闪红灯)
|
|
void setCamConnectionError();
|
|
//设置相机连接成功(绿灯常亮)
|
|
void setCamConnectionOk();
|
|
//数据到折线图
|
|
void waveFormAddData(QString windowName, double value);
|
|
//排障
|
|
//在排障界面添加功能按钮
|
|
void runCommand_addBtn(runCommandWidgetType,const QString& btnName, const QString& tip, const QString& uuid);
|
|
//在排障界面添加PLC地址值监控控件
|
|
void runCommand_addPlcValueViewer(const QString& , const std::vector<std::pair<QString, int>>&);
|
|
//刷新排障界面PLC监控的值
|
|
void runCommand_refeshPlcValueViewer(const int& address, const QString& value);
|
|
|
|
//算法耗时监测
|
|
void halconManager_addTimeCostViewer(const QString& groupName, const std::vector<QString>& viewerNames);
|
|
void halconManager_refreshTimeCostViewer(const QString& address, const QString& avgTime, const QString& maxTime, const QString& minTime);
|
|
|
|
//模型耗时监测
|
|
void handleAiManager_addTimeCostViewer(const QString& groupName, const std::vector<QString>& viewerNames);
|
|
void handleAiManager_refreshTimeCostViewer(const QString& address, const QString& avgTime, const QString& maxTime, const QString& minTime);
|
|
|
|
//存储任务json
|
|
void saveMissionJson();
|
|
|
|
//性能监测-将每秒与PLC交互的次数等信息发送到主页面
|
|
void sendTriggerManagerLoopData(int loopCounterPerMin, int maxInterval);
|
|
//添加命令预设
|
|
void Cli_addPreset(QString btnName, QString tips, QStringList commands);
|
|
//在模型界面添加功能按钮
|
|
void modelInit_addBtn(const QString& btnName, const QString& tip, const QString& command);
|
|
//在通过界面将模型初始化的结果
|
|
void modelInit_modelInitResult(const bool& initSuccess, const QString& Reason);
|
|
//后端任务等待前端初始化任务确认
|
|
void waitForFrontendInitComfirm(const QString& message, const std::vector<QString>& options,std::shared_ptr<std::atomic<bool>> recivedResult,std::shared_ptr<std::atomic<int>> Result);
|
|
//弹窗
|
|
void showMessageBox(const QString& message);
|
|
//备份及替换halcon算法文件
|
|
void backupAndReplaceAlgoFile(const std::string& path);
|
|
//重新加载所有相机为虚拟相机
|
|
void reloadAllCameraAsVirtual();
|
|
//更新用户权限 用户名 持续时间 等级(0访客,1管理员,2ROOT根管理员(一般不给予))
|
|
void updateUserPermission(const QString& userName, int duration, int level);
|
|
};
|
|
|
|
|
|
//后端对象
|
|
class IBackend :public QThread {
|
|
Q_OBJECT
|
|
public:
|
|
bSignalHub _signalHub; //后端信号集成
|
|
virtual ~IBackend() = default;
|
|
virtual void init(SQLiteDB* ,nlohmann::ordered_json& json) = 0;
|
|
virtual nlohmann::ordered_json getBackendJson() = 0;//获取后端配置文件
|
|
public slots:
|
|
virtual bool ansyncExcuteCliCommand(const QString& command) = 0;//执行指令
|
|
virtual bool ansyncExcuteCliCommandPreset(const QString& uuid) = 0;//执行预先注册的指令
|
|
virtual void triggerAndCaptureImage(std::string cameraName, std::vector<cv::Mat>* mats) = 0;//触发并获取返回图片
|
|
virtual void getCameraNames(std::vector<std::string>* cameraNames) = 0;//获取所有相机的名称
|
|
virtual void getAllParams(std::vector<std::pair<QString, QVariant>>* params) = 0;//获取所有参数及值
|
|
virtual void editParam(QString group, QString name, QVariant value) = 0;//修改指定参数的值
|
|
virtual void launguageChanged(const std::string& language) = 0;//语言变更
|
|
};
|
|
|
|
extern "C" {
|
|
__declspec(dllexport) IBackend* CreateBackend();
|
|
__declspec(dllexport) void ReleaseBackend(IBackend* backend);
|
|
}
|
|
typedef IBackend* (*CreateBackendFunc)();
|
|
typedef void (*ReleaseBackendFunc)(IBackend*);
|
|
|
|
|