#ifndef _MV3D_RGBD_API_H_ #define _MV3D_RGBD_API_H_ #include "Mv3dRgbdDefine.h" #ifdef __cplusplus extern "C" { #endif /************************************************************************* * @~chinese * @brief 获取SDK版本号 * @param pstVersion [OUT] 版本信息 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @~english * @brief Get SDK Version * @param pstVersion [OUT] version info * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_GetSDKVersion(MV3D_RGBD_VERSION_INFO* pstVersion); /************************************************************************ * @~chinese * @brief SDK运行环境初始化 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @~english * @brief SDK run environment initialization * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_Initialize(); /************************************************************************ * @~chinese * @brief SDK运行环境释放 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @~english * @brief SDK run environment release * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_Release(); /************************************************************************ * @~chinese * @brief 获取当前环境中设备数量 * @param nDeviceType [IN] 设备类型,见Mv3dRgbdDeviceType,可全部获取(DeviceType_Ethernet | DeviceType_USB | DeviceType_Ethernet_Vir | DeviceType_USB_Vir) * @param pDeviceNumber [OUT] 设备数量 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @~english * @brief gets the number of devices in the current environment * @param nDeviceType [IN] device type,refer to Mv3dRgbdDeviceType,get all(DeviceType_Ethernet | DeviceType_USB | DeviceType_Ethernet_Vir | DeviceType_USB_Vir) * @param pDeviceNumber [OUT] device number * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_GetDeviceNumber(uint32_t nDeviceType, uint32_t* pDeviceNumber); /************************************************************************ * @~chinese * @brief 获取设备列表 * @param nDeviceType [IN] 设备类型,见Mv3dRgbdDeviceType,可全部获取(DeviceType_Ethernet | DeviceType_USB | DeviceType_Ethernet_Vir | DeviceType_USB_Vir) * @param pstDeviceInfos [IN OUT] 设备列表 * @param nMaxDeviceCount [IN] 设备列表缓存最大个数 * @param pDeviceCount [OUT] 填充列表中设备个数 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @~english * @brief gets 3D cameras list * @param nDeviceType [IN] device type,refer to Mv3dRgbdDeviceType,get all(DeviceType_Ethernet | DeviceType_USB | DeviceType_Ethernet_Vir | DeviceType_USB_Vir) * @param pstDeviceInfos [IN OUT] devices list * @param nMaxDeviceCount [IN] max number of device list caches * @param pDeviceCount [OUT] number of devices in the fill list * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_GetDeviceList(uint32_t nDeviceType, MV3D_RGBD_DEVICE_INFO* pstDeviceInfos, uint32_t nMaxDeviceCount, uint32_t* pDeviceCount); /************************************************************************ * @~chinese * @brief 打开设备 * @param handle [IN OUT] 相机句柄 * @param pstDeviceInfo [IN] 枚举的设备信息,默认为空,打开第一个相机 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @remark 设置工作模式为深度图模式,图片模式为深度图,并打开RGB Chunk * @~english * @brief open device * @param handle [IN OUT] camera handle * @param pstDeviceInfo [IN] enum camera info. the default is null, open first camera * @return Success, return MV3D_RGBD_OK. Failure, return error code * @remark Set working mode to depth, image mode to depth, and open RGB Chunk ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_OpenDevice(HANDLE *handle, MV3D_RGBD_DEVICE_INFO* pstDeviceInfo = NULL); /************************************************************************ * @~chinese * @brief 通过设备自定义名称打开设备 * @param handle [IN OUT] 相机句柄 * @param chDeviceName [IN] 设备用户自定义名称 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @remark 设置工作模式为深度图模式,图片模式为深度图,并打开RGB Chunk * @~english * @brief open device by device user defined name * @param handle [IN OUT] camera handle * @param chDeviceName [IN] device user defined name * @return Success, return MV3D_RGBD_OK. Failure, return error code * @remark Set working mode to depth, image mode to depth, and open RGB Chunk ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_OpenDeviceByName(HANDLE *handle, const char* chDeviceName); /************************************************************************ * @~chinese * @brief 通过序列号打开设备 * @param handle [IN OUT] 相机句柄 * @param chSerialNumber [IN] 序列号 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @remark 设置工作模式为深度图模式,图片模式为深度图,并打开RGB Chunk * @~english * @brief open device by serial number * @param handle [IN OUT] camera handle * @param chSerialNumber [IN] serial number * @return Success, return MV3D_RGBD_OK. Failure, return error code * @remark Set working mode to depth, image mode to depth, and open RGB Chunk ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_OpenDeviceBySerialNumber(HANDLE *handle, const char* chSerialNumber); /************************************************************************ * @~chinese * @brief 通过IP打开设备,仅网口设备有效 * @param handle [IN OUT] 相机句柄 * @param chIP [IN] IP地址 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @remark 设置工作模式为深度图模式,图片模式为深度图,并打开RGB Chunk * @~english * @brief open device by ip,only network device is valid * @param handle [IN OUT] camera handle * @param chIP [IN] IP * @return Success, return MV3D_RGBD_OK. Failure, return error code * @remark Set working mode to depth, image mode to depth, and open RGB Chunk ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_OpenDeviceByIp(HANDLE *handle, const char* chIP); /************************************************************************ * @~chinese * @brief 关闭设备 * @param handle [IN] 相机句柄 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @~english * @brief close Device * @param handle [IN] camera handle * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_CloseDevice(HANDLE *handle); /************************************************************************ * @~chinese * @brief 获取当前设备的详细信息 * @param handle [IN] 相机句柄 * @param pstDevInfo [IN][OUT] 返回给调用者有关相机设备信息结构体指针 * @return 成功,MV3D_RGBD_OK,失败,返回错误码 * @~english * @brief get current device information * @param handle [IN] camera handle * @param pstDevInfo [IN][OUT] structure pointer of device information * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_GetDeviceInfo(HANDLE handle, MV3D_RGBD_DEVICE_INFO* pstDevInfo); /************************************************************************ * @~chinese * @brief 配置IP,仅网口设备有效 * @param chSerialNumber [IN] 序列号 * @param pstIPConfig [IN] IP配置,静态IP,DHCP等 * @return 成功,MV3D_RGBD_OK,失败,返回错误码 * @~english * @brief ip configuration,only network device is valid * @param chSerialNumber [IN] serial number * @param pstIPConfig [IN] IP Config, Static IP,DHCP * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_SetIpConfig(const char* chSerialNumber, MV3D_RGBD_IP_CONFIG* pstIPConfig); /*********************************************************************** * @~chinese * @brief 注册图像数据回调 * @param handle [IN] 相机句柄 * @param cbOutput [IN] 回调函数指针 * @param pUser [IN] 用户自定义变量 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @remark 当传入的用户自定义变量为NULL时,取消回调注册 * @~english * @brief register image data callback * @param handle [IN] camera handle * @param cbOutput [IN] callback function pointer * @param pUser [IN] user defined variable * @return Success, return MV3D_RGBD_OK. Failure, return error code * @remark Cancel callback registration when pUser is NULL ***********************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_RegisterFrameCallBack(HANDLE handle, MV3D_RGBD_FrameDataCallBack cbOutput, void* pUser); /************************************************************************ * @~chinese * @brief 注册异常消息回调 * @param handle: [IN] 相机句柄 * @param cbException [IN] 异常回调函数指针 * @param pUser [IN] 用户自定义变量 * @return 见返回错误码 * @~english * @brief register exception message callBack * @param handle: [IN] camera handle * @param cbException [IN] exception message callback function pointer * @param pUser [IN] user defined variable * @return Refer to error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_RegisterExceptionCallBack(HANDLE handle, MV3D_RGBD_ExceptionCallBack cbException, void* pUser); /************************************************************************ * @~chinese * @brief 开始取流前获取数据流配置列表 * @param handle [IN] 相机句柄 * @param pstStreamCfgList [IN][OUT] 返回给调用者数据流配置列表指针 * @return 成功,MV3D_RGBD_OK,失败,返回错误码 * @~english * @brief get stream cfg list before start working * @param handle [IN] camera handle * @param pstStreamCfgList [IN][OUT] structure pointer of stream cfg list * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_GetStreamCfgList(HANDLE handle, MV3D_RGBD_STREAM_CFG_LIST* pstStreamCfgList); /*********************************************************************** * @~chinese * @brief 开始工作 * @param handle [IN] 相机句柄 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @~english * @brief start working * @param handle [IN] camera handle * @return Success, return MV3D_RGBD_OK. Failure, return error code ***********************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_Start(HANDLE handle); /*********************************************************************** * @~chinese * @brief 停止工作 * @param handle [IN] 相机句柄 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @~english * @brief stop working * @param handle [IN] camera handle * @return Success, return MV3D_RGBD_OK. Failure, return error code ***********************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_Stop(HANDLE handle); /************************************************************************ * @~chinese * @brief 轮询方式获取帧数据 * @param handle [IN] 相机句柄 * @param pstFrameData [IN][OUT] 数据指针 * @param nTimeOut [IN] 超时时间(ms) * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @~english * @brief fetch frame data * @param handle [IN] camera handle * @param pstFrameData [IN] data set pointer * @param nTimeOut [IN] timevalue(ms) * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_FetchFrame(HANDLE handle, MV3D_RGBD_FRAME_DATA* pstFrameData, uint32_t nTimeOut); /************************************************************************ * @~chinese * @brief 执行设备软触发 * @param handle [IN] 相机句柄 * @return 成功,返回MV3D_RGBD_OK,失败,返回错误码 * @remark 设置触发模式为打开,设置触发源为软触发并执行 * @~english * @brief execute camera soft trigger * @param handle [IN] camera handle * @return Success, return MV3D_RGBD_OK. Failure, return error code * @remark Set trigger mode to open, trigger source to software, and excute soft trigger ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_SoftTrigger(HANDLE handle); /************************************************************************ * @~chinese * @brief 执行设备Command命令 * @param handle [IN] 相机句柄 * @param strKey [IN] 属性键值 * @return 成功,返回MV3D_RGBD_OK,失败,返回错误码 * @~english * @brief execute camera command * @param handle [IN] camera handle * @param strKey [IN] key value * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_Execute(HANDLE handle, const char* strKey); /************************************************************************ * @~chinese * @brief 获取相机当前标定信息 * @param handle [IN] 相机句柄 * @param nCoordinateType [IN] 坐标系类型,见Mv3dRgbdCoordinateType * @param pstCalibInfo [IN][OUT] 输出标定信息 * @return 成功,返回MV3D_RGBD_OK,失败,返回错误码 * @~english * @brief get camera current calibration info * @param handle [IN] camera handle * @param nCoordinateType [IN] coordinate type, refer to Mv3dRgbdCoordinateType * @param pstCalibInfo [IN][OUT] calibration info * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_GetCalibInfo(HANDLE handle, uint32_t nCoordinateType, MV3D_RGBD_CALIB_INFO* pstCalibInfo); /************************************************************************ * @~chinese * @brief 获取相机内外参信息 * @param handle [IN] 相机句柄 * @param pstCameraParam [IN][OUT] 输出相机内外参数信息 * @return 成功,返回MV3D_RGBD_OK,失败,返回错误码 * @~english * @brief get camera intrinsic and extrinsic information * @param handle [IN] camera handle * @param pstCameraParam [IN][OUT] camera intrinsic and extrinsic Info * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_GetCameraParam(HANDLE handle, MV3D_RGBD_CAMERA_PARAM* pstCameraParam); /************************************************************************ * @~chinese * @brief 设备升级 * @param handle [IN] 相机句柄 * @param pFilePathName [IN] 文件名 * @return 成功,返回MV3D_RGBD_OK,失败,返回错误码 * @~english * @brief device upgrade * @param handle [IN] camera handle * @param pFilePathName [IN] file name * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_LocalUpgrade(HANDLE handle, const char* pFilePathName); /************************************************************************ * @~chinese * @brief 获取升级进度 * @param handle [IN] 相机句柄 * @param pProcess [OUT] 进度接收地址 * @return 成功,返回MV3D_RGBD_OK,失败,返回错误码 * @~english * @brief get upgrade progress * @param handle [IN] camera handle * @param pProcess [OUT] progress receiving address * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_GetUpgradeProcess(HANDLE handle, uint32_t* pProcess); /************************************************************************ * @~chinese * @brief 获取相机参数值 * @param handle [IN] 相机句柄 * @param strKey [IN] 属性键值 * @param pstParam [IN] 返回的相机参数结构体指针 * @return 成功,返回MV3D_RGBD_OK,失败,返回错误码 * @~english * @brief get camera param value * @param handle [IN] camera handle * @param strKey [IN] key value * @param pstParam [IN] structure pointer of camera param * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_GetParam(HANDLE handle, const char* strKey, MV3D_RGBD_PARAM* pstParam); /************************************************************************ * @~chinese * @brief 设置相机参数值 * @param handle [IN] 相机句柄 * @param strKey [IN] 属性键值 * @param pstParam [IN] 输入的相机参数结构体指针 * @return 成功,返回MV3D_RGBD_OK,失败,返回错误码 * @~english * @brief set camera param value * @param handle [IN] camera handle * @param strKey [IN] key value * @param pstParam [IN] structure pointer of camera param * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_SetParam(HANDLE handle, const char* strKey, MV3D_RGBD_PARAM* pstParam); /************************************************************************ * @~chinese * @brief 导出相机参数 * @param handle [IN] 相机句柄 * @param pOutFileName [IN] 导出文件名称 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @~english * @brief export camera param * @param handle [IN] camera handle * @param pOutFileName [IN] export file name * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_ExportAllParam(HANDLE handle, const char* pOutFileName); /************************************************************************ * @~chinese * @brief 导入相机参数 * @param handle [IN] 相机句柄 * @param pInFileName [IN] 导入文件名称 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @~english * @brief import camera param * @param handle [IN] camera handle * @param pInFileName [IN] import file name * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_ImportAllParam(HANDLE handle, const char* pInFileName); /************************************************************************ * @~chinese * @brief 从相机读取文件 * @param handle [IN] 句柄地址 * @param pstFileAccess [IN] 文件存取结构体 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @~english * @brief read the file from the camera * @param handle [IN] camera handle * @param pstFileAccess [IN] file access structure * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_FileAccessRead(void* handle, MV3D_RGBD_FILE_ACCESS* pstFileAccess); /************************************************************************ * @~chinese * @brief 将文件写入相机 * @param handle [IN] 句柄地址 * @param pstFileAccess [IN] 文件存取结构体 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @~english * @brief write the file to camera * @param handle [IN] camera handle * @param pstFileAccess [IN] file access structure * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_FileAccessWrite(void* handle, MV3D_RGBD_FILE_ACCESS* pstFileAccess); /************************************************************************ * @~chinese * @brief 获取文件存取的进度 * @param handle [IN] 句柄地址 * @param pstFileAccessProgress [IN] 文件存取进度结构体 * @return 成功,返回MV3D_RGBD_OK;错误,返回错误码 * @~english * @brief get file access progress * @param handle [IN] camera handle * @param pstFileAccessProgress [IN] file access progress structure * @return Success, return MV3D_RGBD_OK. Failure, return error code ************************************************************************/ MV3D_RGBD_API MV3D_RGBD_STATUS MV3D_RGBD_GetFileAccessProgress(void* handle, MV3D_RGBD_FILE_ACCESS_PROGRESS* pstFileAccessProgress); #ifdef __cplusplus } #endif #endif // _MV3D_RGBD_API_H_