GrabBag/App/ParticleSize/ParticleSizeApp/IYParticleSizeStatus.h

70 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 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