#ifndef SCREWPOSITIONTCPPROTOCOL_H #define SCREWPOSITIONTCPPROTOCOL_H #include "TCPServerProtocol.h" #include "IVrConfig.h" /** * @brief ScrewPosition 专用TCP协议类 * * 继承自 AppCommon 的 TCPServerProtocol 基类, * 重写 ParseJSONCommand 实现螺杆定位项目的协议: * - ScrewDetectRequest: 螺杆检测(输出螺杆顶端中心点XYZRPY) * - ToolDiskDetectRequest: 工具盘检测(算法后续增加) * - ScanRequest: 兼容旧协议,映射为螺杆检测 */ class ScrewPositionTCPProtocol : public TCPServerProtocol { public: /** * @brief 检测触发回调(带检测类型) * @param success 是否成功 * @param cameraIndex 相机索引(-1表示所有相机) * @param timestamp 请求时间戳(毫秒) * @param detectionType 检测类型 */ using DetectionTriggerWithTypeCallback = std::function; ScrewPositionTCPProtocol(); ~ScrewPositionTCPProtocol() override; /** * @brief 设置带检测类型的检测触发回调 */ void SetDetectionTriggerWithTypeCallback(const DetectionTriggerWithTypeCallback& callback); protected: /** * @brief 重写命令解析,支持螺杆/工具盘检测 */ void ParseJSONCommand(const TCPClient* pClient, const QJsonObject& jsonData) override; private: /** * @brief 处理螺杆检测命令 */ void HandleScrewDetectCommand(const TCPClient* pClient, qint64 timestamp); /** * @brief 处理工具盘检测命令 */ void HandleToolDiskDetectCommand(const TCPClient* pClient, qint64 timestamp); /** * @brief 触发检测(内部统一调用) */ bool TriggerDetection(const TCPClient* pClient, qint64 timestamp, DetectionType type, const QString& responseType, const QString& errorDesc); private: DetectionTriggerWithTypeCallback m_detectionTypeCallback; }; #endif // SCREWPOSITIONTCPPROTOCOL_H