GrabBag/App/ParticleSize/ParticleSizeApp/IYParticleSizeStatus.h

70 lines
2.5 KiB
C
Raw Permalink Normal View History

#ifndef IYPARTICLESIZESTATUS_H
#define IYPARTICLESIZESTATUS_H
#include <string>
#include <functional>
#include <vector>
#include <QImage>
#include <QMetaType>
// 使用 AppCommon 提供的通用接口和类型
#include "IVisionApplicationStatus.h"
// 使用 AppCommon 的 WorkStatus 枚举
// WorkStatus, WorkStatusToString 已在 IVisionApplicationStatus.h 中定义
// 粒度检测位置结构体(继承自 PositionData 模板)
struct ParticleSizePosition : public PositionData<double> {
int index = 0; // 颗粒序号
double length = 0.0; // 颗粒长度(mm)
double width = 0.0; // 颗粒宽度(mm)
double height = 0.0; // 颗粒高度(mm)
bool isAlarm = false; // 是否超过告警阈值
// 默认构造函数
ParticleSizePosition() : PositionData<double>() {}
// 带参构造函数
ParticleSizePosition(double _x, double _y, double _z, double _roll, double _pitch, double _yaw)
: PositionData<double>(_x, _y, _z, _roll, _pitch, _yaw) {}
// 拷贝构造函数和赋值运算符
ParticleSizePosition(const ParticleSizePosition&) = default;
ParticleSizePosition& operator=(const ParticleSizePosition&) = default;
// 从 PositionData 拷贝构造
ParticleSizePosition(const PositionData<double>& pos)
: PositionData<double>(pos) {}
};
// 检测结果结构体(继承自 DetectionResultData 模板)
struct DetectionResult : public DetectionResultData<ParticleSizePosition> {
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<DetectionResult>
{
public:
virtual ~IYParticleSizeStatus() = default;
};
// 声明Qt元类型使这些结构体能够在信号槽中传递
Q_DECLARE_METATYPE(ParticleSizePosition)
Q_DECLARE_METATYPE(DetectionResult)
// WorkStatus 已在 IVisionApplicationStatus.h 中声明
#endif // IYPARTICLESIZESTATUS_H