GrabBag/App/LapWeld/LapWeldApp/IYLapWeldStatus.h

92 lines
2.5 KiB
C
Raw Normal View History

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