#ifndef IBINOCULARMARKRECEIVER_H #define IBINOCULARMARKRECEIVER_H #include #include #include #include // 提供qint64、quint16等Qt基本类型 /** * @brief 通用 Mark 3D 数据结构 * 不依赖具体算法库的 Mark 数据定义 */ struct VrMark3D { int markID; // Mark ID double x; // X 坐标 double y; // Y 坐标 double z; // Z 坐标 VrMark3D() : markID(-1), x(0.0), y(0.0), z(0.0) {} VrMark3D(int id, double _x, double _y, double _z) : markID(id), x(_x), y(_y), z(_z) {} }; /** * @brief 双目Mark数据接收器接口 * 用于从BinocularMarkApp接收3D Mark检测结果 */ class IBinocularMarkReceiver { public: virtual ~IBinocularMarkReceiver() = default; /** * @brief Mark结果回调函数类型 * @param marks 检测到的3D标记列表 * @param timestamp 时间戳 * @param errorCode 错误码(0表示成功) */ using MarkResultCallback = std::function& marks, qint64 timestamp, int errorCode)>; /** * @brief 连接状态改变回调函数类型 * @param connected true-已连接,false-断开连接 */ using ConnectionStatusCallback = std::function; /** * @brief 启动TCP客户端并连接到服务器 * @param serverIp 服务器IP地址 * @param serverPort 服务器端口 * @return 0-成功,其他-失败 */ virtual int Connect(const std::string& serverIp, quint16 serverPort) = 0; /** * @brief 断开连接 * @return 0-成功,其他-失败 */ virtual int Disconnect() = 0; /** * @brief 检查是否已连接 * @return true-已连接,false-未连接 */ virtual bool IsConnected() const = 0; /** * @brief 发送心跳消息 * @return 0-成功,其他-失败 */ virtual int SendHeartbeat() = 0; /** * @brief 发送触发检测命令 * @return 0-成功,其他-失败 */ virtual int TriggerDetection() = 0; /** * @brief 设置Mark结果回调 * @param callback 回调函数 */ virtual void SetMarkResultCallback(MarkResultCallback callback) = 0; /** * @brief 设置连接状态回调 * @param callback 回调函数 */ virtual void SetConnectionStatusCallback(ConnectionStatusCallback callback) = 0; /** * @brief 启动心跳定时器 * @param intervalSeconds 心跳间隔(秒),默认30秒 */ virtual void StartHeartbeat(int intervalSeconds = 30) = 0; /** * @brief 停止心跳定时器 */ virtual void StopHeartbeat() = 0; /** * @brief 创建BinocularMarkReceiver实例 * @param ppReceiver 接收器实例指针 * @return 0-成功,其他-失败 */ static int CreateInstance(IBinocularMarkReceiver** ppReceiver); }; #endif // IBINOCULARMARKRECEIVER_H