GrabBag/App/LapWeld/LapWeldApp/IYLapWeldStatus.h
2025-09-14 14:51:38 +08:00

92 lines
2.5 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 IYLAPWELDSTATUS_H
#define IYLAPWELDSTATUS_H
#include <string>
#include <functional>
#include <vector>
#include <QImage>
#include <QMetaType>
// 工作状态枚举
enum class WorkStatus {
InitIng, // 初始化中
Ready, // 准备就绪
Working, // 正在工作
Completed, // 监测完成
Error // 设备异常
};
// 工作状态转换为字符串的工具函数
inline std::string WorkStatusToString(WorkStatus status) {
switch (status) {
case WorkStatus::InitIng: return "初始化中";
case WorkStatus::Ready: return "准备就绪";
case WorkStatus::Working: return "正在工作";
case WorkStatus::Completed: return "检测完成";
case WorkStatus::Error: return "设备异常";
default: return "未知状态";
}
}
// 坐标结构体
struct LapWeldPosition {
double x;
double y;
double z;
double roll;
double pitch;
double yaw;
// 默认构造函数
LapWeldPosition() : x(0), y(0), z(0), roll(0), pitch(0), yaw(0) {}
// 拷贝构造函数(编译器会自动生成,但为了明确可以保留)
LapWeldPosition(const LapWeldPosition&) = default;
LapWeldPosition& operator=(const LapWeldPosition&) = default;
};
// 检测结果结构体
struct DetectionResult {
QImage image;
std::vector<LapWeldPosition> positions;
int cameraIndex = 1; // 相机索引默认为1第一个相机
};
// 状态回调接口
class IYLapWeldStatus
{
public:
virtual ~IYLapWeldStatus() = default;
// 状态文字回调
virtual void OnStatusUpdate(const std::string& statusMessage) = 0;
// 算法监测结果回调
virtual void OnDetectionResult(const DetectionResult& result) = 0;
// 相机状态回调
virtual void OnCamera1StatusChanged(bool isConnected) = 0;
virtual void OnCamera2StatusChanged(bool isConnected) = 0;
// 机械臂连接状态回调
virtual void OnRobotConnectionChanged(bool isConnected) = 0;
// 串口连接状态回调
virtual void OnSerialConnectionChanged(bool isConnected) = 0;
// 相机个数回调
virtual void OnCameraCountChanged(int cameraCount) = 0;
// 工作状态回调
virtual void OnWorkStatusChanged(WorkStatus status) = 0;
};
// 声明Qt元类型使这些结构体能够在信号槽中传递
Q_DECLARE_METATYPE(WorkStatus)
Q_DECLARE_METATYPE(LapWeldPosition)
Q_DECLARE_METATYPE(DetectionResult)
#endif // IYLAPWELDSTATUS_H