#ifndef IYWORKPIECESTATUS_H #define IYWORKPIECESTATUS_H #include #include #include #include #include // 工作状态枚举 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 WorkpiecePosition { double x; double y; double z; double roll; double pitch; double yaw; // 默认构造函数 WorkpiecePosition() : x(0), y(0), z(0), roll(0), pitch(0), yaw(0) {} // 拷贝构造函数(编译器会自动生成,但为了明确可以保留) WorkpiecePosition(const WorkpiecePosition&) = default; WorkpiecePosition& operator=(const WorkpiecePosition&) = default; }; // 检测结果结构体 struct DetectionResult { QImage image; std::vector positions; int cameraIndex = 1; // 相机索引,默认为1(第一个相机) int workpieceType = 0; // 工件类型:1/2/3/4等 }; // 状态回调接口 class IYWorkpieceStatus { public: virtual ~IYWorkpieceStatus() = 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(WorkpiecePosition) Q_DECLARE_METATYPE(DetectionResult) #endif // IYWORKPIECESTATUS_H