#ifndef IYPARTICLESIZESTATUS_H #define IYPARTICLESIZESTATUS_H #include #include #include #include #include // 使用 AppCommon 提供的通用接口和类型 #include "IVisionApplicationStatus.h" // 使用 AppCommon 的 WorkStatus 枚举 // WorkStatus, WorkStatusToString 已在 IVisionApplicationStatus.h 中定义 // 粒度检测位置结构体(继承自 PositionData 模板) struct ParticleSizePosition : public PositionData { int index = 0; // 颗粒序号 double length = 0.0; // 颗粒长度(mm) double width = 0.0; // 颗粒宽度(mm) double height = 0.0; // 颗粒高度(mm) bool isAlarm = false; // 是否超过告警阈值 // 默认构造函数 ParticleSizePosition() : PositionData() {} // 带参构造函数 ParticleSizePosition(double _x, double _y, double _z, double _roll, double _pitch, double _yaw) : PositionData(_x, _y, _z, _roll, _pitch, _yaw) {} // 拷贝构造函数和赋值运算符 ParticleSizePosition(const ParticleSizePosition&) = default; ParticleSizePosition& operator=(const ParticleSizePosition&) = default; // 从 PositionData 拷贝构造 ParticleSizePosition(const PositionData& pos) : PositionData(pos) {} }; // 检测结果结构体(继承自 DetectionResultData 模板) struct DetectionResult : public DetectionResultData { int particleCount = 0; // 检测到的颗粒数量 double maxParticleSize = 0.0; // 最大颗粒尺寸(mm) double minParticleSize = 0.0; // 最小颗粒尺寸(mm) double avgParticleSize = 0.0; // 平均颗粒尺寸(mm) int alarmCount = 0; // 超过告警阈值的颗粒数量 // 默认构造函数 DetectionResult() = default; // 拷贝构造函数和赋值运算符 DetectionResult(const DetectionResult&) = default; DetectionResult& operator=(const DetectionResult&) = default; }; // 状态回调接口(继承自 IVisionApplicationStatus 模板) // 使用 AppCommon 提供的通用接口,无需重复定义回调方法 class IYParticleSizeStatus : public IVisionApplicationStatus { public: virtual ~IYParticleSizeStatus() = default; }; // 声明Qt元类型,使这些结构体能够在信号槽中传递 Q_DECLARE_METATYPE(ParticleSizePosition) Q_DECLARE_METATYPE(DetectionResult) // WorkStatus 已在 IVisionApplicationStatus.h 中声明 #endif // IYPARTICLESIZESTATUS_H