GrabBag/App/WheelMeasure/WheelMeasureApp/IWheelMeasureStatus.h
2025-12-27 09:34:02 +08:00

138 lines
3.9 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 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