#ifndef __VIZUM_DETECTED_COUNTER_HEADER__
#define __VIZUM_DETECTED_COUNTER_HEADER__
#include "VZNL_Export.h"
#include "VZNL_Types.h"
/**
* @defgroup 钢筋计数
* @author Mjw
* @version 1.0
* @date 2019.09.10
* @{
*/
/// @brief
/// 获取自动检测结果
typedef int(*VzNL_GetCounterResultCB)(SVzNL3DPosition* p3DPoint, SVzNL2DPosition* p2DPoint, int nCount, unsigned long long nTimeStamp, double dTotleOffset, double dStep, SVzNLImageData* pLeftImage, SVzNLImageData* pRightImage, void* pParam);
/// @brief
/// 开始激光检测
/// [in]设备句柄
/// @return 返回0为正确,失败返回错误码
VZNLAPI int VzNL_BeginDetectCounter(VZNLHANDLE hDevice, VzBool bCounterOrLabel);
/// @brief
/// 一键加速
VZNLAPI int VzNL_EnableSimpleResultMode(VZNLHANDLE hDevice, VzBool bEnableSimpleMode);
/// @brief
/// 激光检测-
/// [in]设备句柄
/// [in]点的间隔
/// @return 返回0为正确,失败返回错误码
VZNLAPI int VzNL_DetectCounterLaser(VZNLHANDLE hDevice, int nPointInterval);
/// @brief
/// 获取激光线结果点的个数
/// [in]设备句柄
/// @return 点的个数
VZNLAPI int VzNL_GetCounterLaserResultPointCount(VZNLHANDLE hDevice);
/// @brief
/// 获取激光线2D结果
/// [in]设备句柄
/// [out]2D点,内存空间由用户分配
/// [in/out]传入:用户分配的SVzNL2DPoint的结构个数;传出:用户需要分配多少个SVzNL2DPoint
/// @return 成功返回0,失败返回错误码。
VZNLAPI int VzNL_GetCounterLaser2DResult(VZNLHANDLE hDevice, SVzNL2DPosition* p2DPoint, int* pnCount);
/// @brief
/// 获取激光线3D结果
/// [in]设备句柄
/// [out]3D点,内存空间由用户分配
/// [in/out]传入:用户分配的SVzNL3DPosition的结构个数;传出:用户需要分配多少个SVzNL3DPosition
/// @return 成功返回0,失败返回错误码。
VZNLAPI int VzNL_GetCounterLaser3DResult(VZNLHANDLE hDevice, SVzNL3DPosition* p3DPoint, int* pnCount);
/// @brief
/// 设置传送带速度值
VZNLAPI int VzNL_ConfigCounterRunSpeedValue(VZNLHANDLE hDevice, double dSpeed);
/// @brief
/// 开始计数
VZNLAPI int VzNL_CounterStartFromLaser(VZNLHANDLE hDevice, EVzObjRunDirect eRunDirect, VzNL_GetCounterResultCB pCB, void* pCBParam);
/// @brief
/// 结束扫描,开始结束
/// [in]设备句柄
VZNLAPI int VzNL_CounterStopLaserGetRes(VZNLHANDLE hDevice, SVzNLCounter** ppCounterRes);
/// @brief
/// 配置钢筋检测参数
/// [in]设备句柄
VZNLAPI int VzNL_CounterConfigDetectRange(VZNLHANDLE hDevice, unsigned int nFrontDis, unsigned int nBackDis);
/// @brief
/// 配置Mark大小 width或heigh为0 不检测
/// [in]设备句柄
VZNLAPI int VzNL_CounterConfigMarkSize(VZNLHANDLE hDevice, const SVzNLSize sSize);
/// @brief
/// 清理Counter
VZNLAPI void VzNL_ReleaseCounterRes(SVzNLCounter** ppCounterRes);
/// @brief
/// 结束激光检测
/// [in]设备句柄
VZNLAPI void VzNL_EndDetectCounter(VZNLHANDLE hDevice);
#endif //__VIZUM_DETECTED_COUNTER_HEADER__