Files
eUi/include/interface.h
T
RCiRoot 97462c8aab On main: V20260416-2.5.1
增加halconGuard类,用于防止halcon算法的输入输出和程序不一致而引起的报错,并且会检查算法文件是否存在,如不存在则会弹窗提示。
增加handleAiGpuThreadGuard类,用于防止因重复调用同一个模型而引起的报错,并且支持不停机更新模型,支持初始化时检测模型文件是否存在。
增加内存占用显示控件。
用户管理增加root权限,默认密码为dseuiroot,模型热更新时需要此权限。
支持缓存界面上的检测数据。
相机模块新增在回调后的指定时间没有取图时则清空容器的功能。
增加等待结果汇总功能,在启用时同一个SN的图片会等待总结果后再进行存图。
存图线程修改为多线程编码,单线程储存,提高IO效率。并且增加根据内存占用的百分比更新存图逻辑的功能,默认占用超过70%不储存OK原图,超过80%不储存原图,超过90%时不储存所有图片。
2026-04-26 12:25:13 +08:00

129 lines
4.9 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();
};
//后端对象
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;//修改指定参数的值
};
extern "C" {
__declspec(dllexport) IBackend* CreateBackend();
__declspec(dllexport) void ReleaseBackend(IBackend* backend);
}
typedef IBackend* (*CreateBackendFunc)();
typedef void (*ReleaseBackendFunc)(IBackend*);