GrabBag/App/WheelMeasure/WheelMeasureApp/IWheelMeasureStatus.h

138 lines
3.8 KiB
C
Raw Normal View History

2026-03-28 10:49:55 +08:00
#ifndef IWHEELMEASURESTATUS_H
#define IWHEELMEASURESTATUS_H
#include "IVisionApplicationStatus.h"
#include "IVrWheelMeasureConfig.h"
#include <QString>
#include <QStringList>
/**
* @brief 设备状态枚举
*/
enum class DeviceStatus
{
Unknown = 0, // 未知状态
Online, // 在线
Offline, // 离线
Error // 错误
};
/**
* @brief 车轮拱高测量状态更新接口
* 继承自IVisionApplicationStatus模板类,用于Presenter向UI层传递状态更新
*/
class IWheelMeasureStatus : public IVisionApplicationStatus<WheelMeasureResult>
{
public:
virtual ~IWheelMeasureStatus() = default;
// ============ 继承自IVisionApplicationStatus的方法 ============
// 状态文字回调 (std::string版本)
void OnStatusUpdate(const std::string& statusMessage) override {
OnStatusUpdate(QString::fromStdString(statusMessage));
}
// 算法监测结果回调 - 映射到OnMeasureResult
void OnDetectionResult(const WheelMeasureResult& result) override {
OnMeasureResult(result);
}
// 相机1状态回调
void OnCamera1StatusChanged(bool isConnected) override {
OnCameraStatusChanged("Camera1", isConnected);
}
// 相机2状态回调
void OnCamera2StatusChanged(bool isConnected) override {
OnCameraStatusChanged("Camera2", isConnected);
}
// 机械臂连接状态回调 - 默认空实现
void OnRobotConnectionChanged(bool /*isConnected*/) override {}
// 串口连接状态回调 - 默认空实现
void OnSerialConnectionChanged(bool /*isConnected*/) override {}
// 相机个数回调
void OnCameraCountChanged(int cameraCount) override {
Q_UNUSED(cameraCount);
}
// 工作状态回调 (WorkStatus版本) - 直接使用公用WorkStatus
void OnWorkStatusChanged(WorkStatus status) override {
OnWorkStatusChangedImpl(status);
}
// ============ WheelMeasure 特有的接口方法 ============
/**
* @brief 状态信息更新 (QString版本)
* @param statusMessage 状态消息
*/
virtual void OnStatusUpdate(const QString& statusMessage) = 0;
/**
* @brief 需要显示的相机数量
* @param cameraNames 相机名称列表
*/
virtual void OnNeedShowImageCount(const QStringList& cameraNames) = 0;
/**
* @brief 设备状态改变
* @param deviceName 设备名称
* @param deviceStatus 设备状态
*/
virtual void OnDeviceStatusChanged(const QString& deviceName, int deviceStatus) = 0;
/**
* @brief 测量结果回调
* @param result 测量结果
*/
virtual void OnMeasureResult(const WheelMeasureResult& result) = 0;
/**
* @brief 相机连接成功
* @param cameraName 相机名称
*/
virtual void OnCameraConnected(const QString& cameraName) = 0;
/**
* @brief 相机断开连接
* @param cameraName 相机名称
*/
virtual void OnCameraDisconnected(const QString& cameraName) = 0;
/**
* @brief 相机状态变化 (通用方法)
* @param cameraName 相机名称
* @param isConnected 是否连接
*/
virtual void OnCameraStatusChanged(const QString& cameraName, bool isConnected) {
if (isConnected) {
OnCameraConnected(cameraName);
} else {
OnCameraDisconnected(cameraName);
}
}
/**
* @brief 工作状态改变 (纯虚函数,子类实现)
* @param status 工作状态
*/
virtual void OnWorkStatusChangedImpl(WorkStatus status) = 0;
/**
* @brief 错误发生
* @param errorMessage 错误消息
*/
virtual void OnErrorOccurred(const QString& errorMessage) = 0;
/**
* @brief 清空测量数据
*/
virtual void OnClearMeasureData() = 0;
};
#endif // IWHEELMEASURESTATUS_H