前言
总结RVC.h文件主要内容。参考文档:(RVC SDK Documentaion.html)
RVC->File->File List->RVC.h
二、声明
1.成员函数
代码如下:
RVC_EXPORT int GetLastError();
RVC_EXPORT const char *GetVersion();
- int GetLastError() 返回最近一次发生错误的错误代码。
- const char *GetVersion() 返回当前SDK的版本号。
2.枚举类型
代码如下:
enum CameraID {
CameraID_NONE = 0,
CameraID_0 = 1 << 0,
CameraID_1 = 1 << 1,
CameraID_2 = 1 << 2,
CameraID_3 = 1 << 3,
CameraID_Left = CameraID_0,
CameraID_Right = CameraID_1,
CameraID_Both = CameraID_Left | CameraID_Right,
};
enum PortType {
PortType_NONE = 0,
PortType_USB = 1,
PortType_GIGE = 2,
};
enum NetworkType {
NetworkType_DHCP = 0,
NetworkType_STATIC = 1,
};
enum ProjectorColor {
ProjectorColor_None = 0,
ProjectorColor_Red = 1,
ProjectorColor_Green = 2,
ProjectorColor_Blue = 4,
ProjectorColor_White = 8,
ProjectorColor_ALL = ProjectorColor_Red | ProjectorColor_Green | ProjectorColor_Blue | ProjectorColor_White,
};
enum BalanceSelector {
BalanceSelector_None = 0,
BalanceSelector_Red,
BalanceSelector_Green,
BalanceSelector_Blue,
};
enum NetworkDevice {
NetworkDevice_LightMachine = 0,
NetworkDevice_LeftCamera = 1,
NetworkDevice_RightCamera = 2,
};
enum NetworkDeviceStatus_ {
NetworkDeviceStatus_OK,
NetworkDeviceStatus_Not_Reachable,
NetworkDeviceStatus_In_Use,
NetworkDeviceStatus_Conflict,
};
enum CaptureMode {
CaptureMode_Fast = 1 << 0,
CaptureMode_Normal = 1 << 1,
CaptureMode_Ultra = 1 << 2,
CaptureMode_Robust = 1 << 3,
CaptureMode_All = CaptureMode_Fast | CaptureMode_Normal | CaptureMode_Ultra | CaptureMode_Robust,
};
- CameraID 枚举类型定义了不同的相机 ID,用于区分不同的摄像头。CameraID_NONE 表示没有相机,CameraID_Left 和 CameraID_Right 表示两个不同的相机,CameraID_Both 表示同时使用两个相机。
- PortType 枚举类型定义了端口类型,包括 USB 和 GIGE 两种类型。
- NetworkType 枚举类型定义了网络类型,包括 DHCP 和 STATIC 两种类型。
- ProjectorColor 枚举类型定义了投影仪的颜色,包括红、绿、蓝、白以及所有颜色的组合。
- BalanceSelector 枚举类型定义了颜色平衡的选择器,包括红、绿、蓝以及无选择器。
- NetworkDevice 枚举类型定义了不同的网络设备,包括 LightMachine、LeftCamera 和 RightCamera。
- NetworkDeviceStatus_ 枚举类型定义了网络设备的状态,包括 OK、Not_Reachable、In_Use 和 Conflict 四种状态。
- CaptureMode 枚举类型定义了不同的采集模式,包括 Fast、Normal、Ultra 和 Robust 四种模式。
3.结构体DeviceInfo
代码如下:
struct RVC_EXPORT DeviceInfo {
char name[32];
char sn[32];
char factroydate[32];
char port[32];
enum PortType type;
enum CameraID cameraid;
int boardmodel;
bool support_x2;
enum ProjectorColor support_color;
int workingdist_near_mm;
int workingdist_far_mm;
char firmware_version[128];
enum CaptureMode support_capture_mode;
};
这个结构体定义了一个设备的信息,包括:
- 设备名称(name)、序列号(sn)、出厂日期(factroydate)和端口(port)等基本属性。
- 端口类型(type)、相机 ID(cameraid)、主板型号(boardmodel)、是否支持 X2、支持的投影仪颜色(support_color)等更加详细的属性。
- 工作距离的近和远限制(workingdist_near_mm 和 workingdist_far_mm)、固件版本号(firmware_version)以及支持的捕获模式(support_capture_mode)等其他信息。
4.结构体Device和SystemListDeviceType
代码如下:
struct RVC_EXPORT Device {
static void Destroy(Device d);
bool IsValid() const;
void Print() const;
bool GetDeviceInfo(DeviceInfo *pinfo);
#ifndef NOT_EXPORT_TO_USER
int SetDeviceCalibrationData(const char *left_norm, const char *left_535a, const char *right_norm,
const char *right_535a);
int GetDeviceCalibrationData(char *left_norm, char *left_535a, char *right_norm, char *right_535a);
#endif
int SetNetworkConfig(enum NetworkDevice d, NetworkType type, const char *ip, const char *netMask,
const char *gateway);
int GetNetworkConfig(enum NetworkDevice d, NetworkType *type, char *ip, char *netMask, char *gateway, int *status);
#ifndef NOT_EXPORT_TO_USER
int GetNetworkInterfaceInfo(enum NetworkDevice d, char *interface_name, char *ip, char *netMask);
#endif
Handle m_handle;
};
struct RVC_EXPORT SystemListDeviceType {
enum Enum {
None = 0,
USB = 1 << 0,
GigE = 1 << 1,
All = USB | GigE,
};
static const char *ToString(const SystemListDeviceType::Enum e);
};
这段代码定义了一个 Device 结构体,该结构体是用于代表设备的一个类。该结构体包含以下成员函数:
- 静态函数 Destroy(),用于销毁一个 Device 对象。
- 成员函数 IsValid(),用于判断该 Device 实例是否有效。
- 成员函数 Print(),用于输出该 Device 实例的信息。
- 成员函数 GetDeviceInfo(),用于获取该 Device 实例的设备信息。
- 成员函数 SetDeviceCalibrationData() 和 GetDeviceCalibrationData(),用于设定和获取该 Device 实例的设备校准数据。
- 成员函数 SetNetworkConfig() 和 GetNetworkConfig(),用于设置和获取该 Device 实例的网络配置信息。
- 多个成员函数(如 GetNetworkInterfaceInfo())只有异常情况下不可见。
其中,enum NetworkDevice、enum NetworkType 和 NetworkType::Enum 等是在之前的代码段中定义的枚举类型。RVC_EXPORT 宏用于导出该结构体。Handle m_handle 是一个句柄,可能是指向具体设备的句柄,用于标识该 Device 实例所代表的设备。
这段代码定义了一个名为 SystemListDeviceType 的结构体,用于代表系统中的设备类型。其中,该结构体包含以下成员:
- 枚举类型 Enum,定义了 None、USB、GigE 和 All 四种设备类型。其中,USB 和 GigE 分别对应二进制位上的第 0 位和第 1 位。
- 静态函数 ToString(),用于将一个 SystemListDeviceType::Enum 类型的实例转化为字符串。
5.函数(和系统初始化和关闭有关)
代码如下:
RVC_EXPORT bool SystemInit();
RVC_EXPORT bool SystemIsInited();
RVC_EXPORT void SystemShutdown();
这段代码定义了三个函数,用于初始化和关闭系统以及检查系统是否已经初始化。具体含义如下:
- RVC_EXPORT bool SystemInit():该函数用于初始化系统,返回一个 bool 类型的值表示初始化是否成功。
- RVC_EXPORT bool SystemIsInited():该函数用于检查系统是否已经初始化,返回一个 bool 类型的值表示系统是否已经初始化。
- RVC_EXPORT void SystemShutdown():该函数用于关闭系统,无返回值。
6.列举和查找设备的函数
代码如下:
#ifndef NOT_EXPORT_TO_USER
RVC_EXPORT int SystemListDevices(std::vector<Device> *pdevices,
SystemListDeviceType::Enum opt = SystemListDeviceType::All);
#endif
RVC_EXPORT int SystemListDevices(Device *pdevices, size_t size, size_t *actual_size,
SystemListDeviceType::Enum opt = SystemListDeviceType::All);
RVC_EXPORT Device SystemFindDevice(const char *serialNumber);
这段代码定义了三个函数,它们可能是某种图像采集或图像处理库中用于列举和查找设备的函数。具体含义如下:
- #ifndef NOT_EXPORT_TO_USER 和 #endif 之间所列举的 SystemListDevices 函数,用于列举系统中的所有设备,并将结果存储到一个向量(std::vector)类型的指针 pdevices 中,返回值为 int 类型。其中,opt 参数表示需要列举的设备类型,默认为 SystemListDeviceType::All,即列举所有设备。
- RVC_EXPORT int SystemListDevices(Device *pdevices, size_t size, size_t *actual_size, SystemListDeviceType::Enum opt = SystemListDeviceType::All):该函数也用于列举系统中的所有设备。与上述函数不同的是,它将结果存储到 Device 类型的指针 pdevices 中,而向量类型的指针则被省略了。size 参数表示 pdevices 可存储的设备数目,actual_size 参数表示实际列举到的设备数目,opt 参数的含义与上述函数相同。返回值为 int 类型。
- RVC_EXPORT Device SystemFindDevice(const char *serialNumber):该函数用于查找序列号为 serialNumber 的设备,并返回该设备的 Device 类型的实例。如果找不到对应的设备,则返回一个无效实例。该函数的返回值为 Device 类型。
其中,RVC_EXPORT 宏用于导出这些函数,以供其他代码调用。#ifndef NOT_EXPORT_TO_USER 和 #endif 之间所列举的 SystemListDevices 函数是只在某个特定的环境中可见的,不能被用户访问。
总结
简单总结了RVC.h代码的591~913行。