63 lines
2.0 KiB
C
63 lines
2.0 KiB
C
|
|
#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<bool(bool success, int cameraIndex, qint64 timestamp, DetectionType detectionType)>;
|
|||
|
|
|
|||
|
|
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
|