GrabBag/SDK/VzNLSDK/Inc/VZNL_DetectDivRebar.h

141 lines
4.2 KiB
C

/*
* 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__