GrabBag/BeltTearingApp/IStatusUpdate.h

82 lines
2.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef ISTATUSUPDATE_H
#define ISTATUSUPDATE_H
#include <string>
#include <functional>
#include <vector>
#include <QImage>
#include <QMetaType>
#include <QDateTime>
// 皮带撕裂检测工作状态枚举
class BeltTearingWorkStatus {
public:
enum Type {
InitIng, // 初始化中
Ready, // 准备就绪
Working, // 正在检测
Completed, // 检测完成
Error, // 设备异常
Disconnected // 连接断开
};
BeltTearingWorkStatus() : value(InitIng) {}
BeltTearingWorkStatus(Type v) : value(v) {}
operator Type() const { return value; }
Type operator()() const { return value; }
private:
Type value;
};
// 工作状态转换为字符串的工具函数
inline std::string BeltTearingWorkStatusToString(BeltTearingWorkStatus status) {
switch (status) {
case BeltTearingWorkStatus::InitIng: return "初始化中";
case BeltTearingWorkStatus::Ready: return "准备就绪";
case BeltTearingWorkStatus::Working: return "正在检测";
case BeltTearingWorkStatus::Completed: return "检测完成";
case BeltTearingWorkStatus::Error: return "设备异常";
case BeltTearingWorkStatus::Disconnected: return "连接断开";
default: return "未知状态";
}
}
// 皮带撕裂检测结果结构体
struct BeltTearingResult {
QImage image; // 检测图像
QString result; // 检测结果描述
double confidence = 0.0; // 置信度
QString serverName; // 服务器名称
QDateTime timestamp; // 时间戳
};
// 皮带撕裂检测状态更新接口
class IStatusUpdate {
public:
virtual ~IStatusUpdate() = default;
// 状态文字回调
virtual void OnStatusUpdate(const QString& statusMessage) = 0;
// 撕裂检测结果回调
virtual void OnTearingResult(const BeltTearingResult& result) = 0;
// 服务器连接状态回调
virtual void OnServerConnected(const QString& serverName) = 0;
virtual void OnServerDisconnected(const QString& serverName) = 0;
// 工作状态回调
virtual void OnWorkStatusChanged(BeltTearingWorkStatus status) = 0;
// 错误信息回调
virtual void OnErrorOccurred(const QString& errorMessage) = 0;
};
// 声明Qt元类型使这些结构体能够在信号槽中传递
Q_DECLARE_METATYPE(BeltTearingWorkStatus)
Q_DECLARE_METATYPE(BeltTearingResult)
#endif // ISTATUSUPDATE_H