/* * Header: VZNL_DetectDivRebar.h * Description: * * Sample: * VzNL_BeginDetectDivRebar(); * * VzNL_SetLaserStandard(); * * VzNL_EndDetectDivRebar(); * Author: Mjw * Date: 2021/02/05 */ #ifndef __VIZUM_DETECTED_DIVREBAR_HEADER__ #define __VIZUM_DETECTED_DIVREBAR_HEADER__ #include "VZNL_Export.h" #include "VZNL_Types.h" /// @brief /// 分钢结果 typedef struct { EVzResultDataType eDataType; //< 数据类型 SVzLaserLineData* pLineData; //< 线数据 unsigned int nLineCount; //< 线数 }SVzNLDivRebarBlockData; /// @brief /// 分钢计数结果 typedef void(*VzFunDivRebarResultDataCB)(SVzNLDivRebarBlockData* pDivRebarBlockData, void* pParam); /** * @brief 创建物流体积检测函数 * @param [in] hDevice 设备句柄 * @return 返回0表示正确 * @retval 0 表示成功 * @retval 非0 表示失败,可以使用VzNL_GetErrorInfo获取 */ VZNLAPI int VzNL_BeginDetectDivRebar(VZNLHANDLE hDevice); /** * @brief 设置/获取过滤高度 * @param [in] hDevice 设备句柄 * @param [in] dFilterHeight 过滤高度(此高度以下的数据不输出) * @return 如果标定过返回VzTrue */ VZNLAPI int VzNL_SetDivRebarFilterZRange(VZNLHANDLE hDevice, float fZMin, float fZMax); VZNLAPI int VzNL_GetDivRebarFilterZRange(VZNLHANDLE hDevice, float* pfZMin, float* pfZMax); /** * @brief 设置/获取过滤高度 * @param [in] hDevice 设备句柄 * @param [in] dFilterHeight 过滤高度(此高度以下的数据不输出) * @return 如果标定过返回VzTrue */ VZNLAPI int VzNL_SetDivRebarFilterYRange(VZNLHANDLE hDevice, float fYMin, float fYMax); VZNLAPI int VzNL_GetDivRebarFilterYRange(VZNLHANDLE hDevice, float* pfYMin, float* pfYMax); /** * @brief 设置/获取扫描延时时间 * @param [in] hDevice 设备句柄 * @param [in] nScanDelay 扫描延时 * @return 返回错误值 */ VZNLAPI int VzNL_SetDivRebarScanDelay(VZNLHANDLE hDevice, unsigned int nScanDelay); VZNLAPI int VzNL_GetDivRebarScanDelay(VZNLHANDLE hDevice, unsigned int* pnScanDelay); /** * @brief 设置/获取最大检测激光线个数 * @param [in] hDevice 设备句柄 * @param [in] nScanMaxLine 单个物体最大扫描线数 * @return 返回错误值 */ VZNLAPI int VzNL_SetDivRebarScanMaxLine(VZNLHANDLE hDevice, unsigned int nScanMaxLine); VZNLAPI int VzNL_GetDivRebarScanMaxLine(VZNLHANDLE hDevice, unsigned int* pnScanMaxLine); /** * @brief 设置点云计算模式 * @param [in] hDevice 设备句柄 * @param [in] eRunMode 运行模式 * @return 返回错误值 */ VZNLAPI int VzNL_SetDivRebarRunMode(VZNLHANDLE hDevice, EVzPointCloudProcMode eCloudMode); VZNLAPI int VzNL_GetDivRebarRunMode(VZNLHANDLE hDevice, EVzPointCloudProcMode* peCloudMode); /** * @brief 设置传送带速度值 * @param [in] hDevice 设备句柄 * @param [in] dSpeed 速度 * @return 如果标定过返回VzTrue */ VZNLAPI int VzNL_SetDivRebarSpeed(VZNLHANDLE hDevice, double dSpeed); VZNLAPI int VzNL_GetDivRebarSpeed(VZNLHANDLE hDevice, double* pdSpeed); /** * @brief 设置/获取物流编码器距离 * @param [in] hDevice 设备句柄 * @param [in] fDistance 脉冲间距 (3.1415926 * 传动轴直径) / 编码器分辨率 * @return 返回错误值 */ VZNLAPI int VzNL_SetDivRebarEncodeDistance(VZNLHANDLE hDevice, float fDistance); VZNLAPI int VzNL_GetDivRebarEncodeDistance(VZNLHANDLE hDevice, float* pfDistance); /** * @brief 设置/获取物体最小线束 * @param [in] hDevice 设备句柄 * @param [in] nValidMinLine 物体有效的最小线数 * @return 返回错误值 */ VZNLAPI int VzNL_SetDivRebarValidLines(VZNLHANDLE hDevice, unsigned int nValidMinLine); VZNLAPI int VzNL_GetDivRebarValidLines(VZNLHANDLE hDevice, unsigned int* pnValidMinLine); /** * @brief 设置/获取最小物体间隔有效线 * @param [in] hDevice 设备句柄 * @param [in] nBlockMinLines 物体间隔的最小线数 * @return 返回错误值 */ VZNLAPI int VzNL_SetDivRebarBlockMinLines(VZNLHANDLE hDevice, unsigned int nBlockMinLines); VZNLAPI int VzNL_GetDivRebarBlockMinLines(VZNLHANDLE hDevice, unsigned int* pnBlockMinLines); /** * @brief 设置运行模式 * @param [in] hDevice 设备句柄 * @param [in] pCB 回调函数 * @param [in] pCBParam 回调参数 * @return 返回错误值 */ VZNLAPI int VzNL_StartDivRebarAutoDetect(VZNLHANDLE hDevice, VzFunDivRebarResultDataCB pCB, void* pCBParam); VZNLAPI int VzNL_StopDivRebarAutoDetect(VZNLHANDLE hDevice); /** * @brief 结束物流检测 * @param [in] hDevice 设备句柄 * @return 返回点的个数 */ VZNLAPI void VzNL_EndDetectDivRebar(VZNLHANDLE hDevice); #endif //__VIZUM_DETECTED_DIVREBAR_HEADER__