#pragma once
#include "VZNL_Types.h"
// 协议定义
enum ProtocolDef
{
PROTOCOL_HEADER = 0xAA55, // 协议头
PROTOCOL_TAIL = 0x55AA // 协议尾
};
// Feature标志位定义
enum FeatureFlags
{
FEATURE_RGB_CAMERA = 0x01, // RGB相机
FEATURE_SWING_MECHANISM = 0x02, // 摆动机构
FEATURE_DUAL_OUTPUT = 0x04, // 双端出图
FEATURE_STEREO_COLOR = 0x08, // 双目彩色
FEATURE_WELDING_CAMERA = 0x10 // 焊接相机
};
// Feature数据结构
struct FeatureData
{
unsigned short version; // 版本号
unsigned short flags; // 特性标志位
unsigned short pupilDistance; // 相机瞳距配置
};
/// @brief 极光眼信息接口
class IVzLaserEyeInfoInterface
{
public:
/// @brief 获取Q矩阵信息
/// [in]设备句柄
/// [out]Q矩阵信息
/// Tip: C Mode 下是 C Mode 的 Q
/// Ori Mode 是 Ori Mode 下的 Q
virtual int QueryQMatrix(VZNLHANDLE hDevice, double dQMatrix[4][4]) = 0;
/// @brief 获取原始Q矩阵
virtual int QueryOriQMatrix(VZNLHANDLE hDevice, double dQMatrix[4][4]) = 0;
/// @brief 获取固定视察
virtual int QueryFixedDistance(VZNLHANDLE hDevice, int& nFixedDistance) = 0;
/// @brief 获取原始图像固定视察
virtual int QueryOriFixedDistance(VZNLHANDLE hDevice, int& nFixedDistance) = 0;
// Feature数据序列化(包含协议头尾、长度、CRC校验)
virtual int SerializeFeature(const FeatureData& feature, unsigned char* data) = 0;
// Feature数据反序列化(验证协议头尾、长度、CRC校验)
virtual int DeserializeFeature(const unsigned char* data, int dataLen, FeatureData& feature) = 0;
};