#ifndef IWHEELMEASURESTATUS_H #define IWHEELMEASURESTATUS_H #include "IVisionApplicationStatus.h" #include "IVrWheelMeasureConfig.h" #include #include /** * @brief 设备状态枚举 */ enum class DeviceStatus { Unknown = 0, // 未知状态 Online, // 在线 Offline, // 离线 Error // 错误 }; /** * @brief 车轮拱高测量状态更新接口 * 继承自IVisionApplicationStatus模板类,用于Presenter向UI层传递状态更新 */ class IWheelMeasureStatus : public IVisionApplicationStatus { 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