/*
* Header: VZNL_Graphics.h
* Description:当前文件为伟景智能(Vizum)所研发的EyeCB板提供检测函数接口。
*
* Sample:
* VzNL_BeginDetectLaser();
*
* VzNL_SetLaserStandard();
*
* VzNL_EndDetectLaser();
* Author: Mjw
* Date: 2018/08/28
*/
#ifndef __VIZUM_DETECTED_GANGUE_HEADER__
#define __VIZUM_DETECTED_GANGUE_HEADER__
#include "VZNL_Export.h"
#include "VZNL_Types.h"
/**
* @brief 开始激光检测
* @param [in] hDevice 设备句柄
* @return 返回0表示正确
* @retval 0 表示成功
* @retval 非0 表示失败,可以使用VzNL_GetErrorInfo获取
*/
VZNLAPI int VzNL_BeginDetectGangue(VZNLHANDLE hDevice);
/**
* @brief 设置激光门限值
* @param [in] hDevice 设备句柄
* @param [in] nLaserThres 激光门限值[Range:0~255]
* @return 返回0表示正确
* @retval 0 表示成功
* @retval 非0 表示失败,可以使用VzNL_GetErrorInfo获取
*/
VZNLAPI int VzNL_SetGangueThres(VZNLHANDLE hDevice, int nLaserThres);
VZNLAPI int VzNL_GetGangueThres(VZNLHANDLE hDevice, int* pnLaserThres);
/**
* @brief 激光检测
* @param [in] hDevice 设备句柄
* @param [in] nPointInterval 点的间隔
* @return 返回0为正确,失败返回错误码
*/
VZNLAPI int VzNL_DetectGangue(VZNLHANDLE hDevice, int nPointInterval);
/**
* @brief 获取激光线结果点的个数
* @param [in] hDevice 设备句柄
* @param [in] nPointInterval 点的间隔
* @return 返回点的个数
*/
VZNLAPI int VzNL_GetGangueResultPointCount(VZNLHANDLE hDevice);
/// @brief
/// 获取激光线2D结果
/// [in]设备句柄
/// [out]2D点,内存空间由用户分配
/// [in/out]传入:用户分配的SVzNL2DPoint的结构个数;传出:用户需要分配多少个SVzNL2DPoint
/// @return 成功返回0,失败返回错误码。
VZNLAPI int VzNL_GetGangue2DResult(VZNLHANDLE hDevice, SVzNL2DPosition* p2DPoint, int* pnCount);
/// @brief
/// 获取激光线3D结果
/// [in]设备句柄
/// [out]3D点,内存空间由用户分配
/// [in/out]传入:用户分配的SVzNL3DPosition的结构个数;传出:用户需要分配多少个SVzNL3DPosition
/// @return 成功返回0,失败返回错误码。
VZNLAPI int VzNL_GetGangue3DResult(VZNLHANDLE hDevice, SVzNL3DPosition* p3DPoint, int* pnCount);
/// @brief
/// 获取结果图像
/// [in]设备句柄
/// [in]图像数据
VZNLAPI int VzNL_GetGangueImageResult(VZNLHANDLE hDevice, SVzNLImageData** ppLeftImageData, SVzNLImageData** ppRightImageData);
/**
* @brief 设置气枪个数
* @param [in] nCount 气枪个数
* @return 返回0表示正确
* @retval 0 表示成功
* @retval 非0 表示失败,可以使用VzNL_GetErrorInfo获取
*/
VZNLAPI int VzNL_SetGangueDetectParam(VZNLHANDLE hDevice, const SVzDetectGangueParam* psParam);
VZNLAPI int VzNL_GetGangueDetectParam(VZNLHANDLE hDevice, SVzDetectGangueParam* psParam);
/**
* @brief 标定
* @return 返回0表示正确
* @retval 0 表示成功
* @retval 非0 表示失败,可以使用VzNL_GetErrorInfo获取
*/
VZNLAPI int VzNL_CalibrationGangue(VZNLHANDLE hDevice);
/**
* @brief 设置PLC网络
* @param [in] szPLCIP 气枪个数
* @return 返回0表示正确
* @retval 0 表示成功
* @retval 非0 表示失败,可以使用VzNL_GetErrorInfo获取
*/
VZNLAPI int VzNL_SetGanguePLCNetwork(VZNLHANDLE hDevice, char szPLCIP[VZNL_SDK_NETWORK_IPv4_LENGTH]);
VZNLAPI int VzNL_GetGanguePLCNetwork(VZNLHANDLE hDevice, char szPLCIP[VZNL_SDK_NETWORK_IPv4_LENGTH]);
/**
* @brief 设置气枪个数
* @param [in] nPointInterval 点间隔
* @return 返回0表示正确
* @retval 0 表示成功
* @retval 非0 表示失败,可以使用VzNL_GetErrorInfo获取
*/
VZNLAPI int VzNL_SetGanguePointInterval(VZNLHANDLE hDevice, int nPointInterval);
VZNLAPI int VzNL_GetGanguePointInterval(VZNLHANDLE hDevice, int* pnPointInterval);
/**
* @brief 设置传送带速度
* @param [in] dSpeed 传送带速度
* @return 返回0表示正确
* @retval 0 表示成功
* @retval 非0 表示失败,可以使用VzNL_GetErrorInfo获取
*/
VZNLAPI int VzNL_SetGangueConveyorBeltSpeed(VZNLHANDLE hDevice, double dSpeed);
VZNLAPI int VzNL_GetGangueConveyorBeltSpeed(VZNLHANDLE hDevice, double* pdSpeed);
/**
* @brief 启用/禁用地面过滤
* @param [in] bEnable 启用/禁用
* @return 返回0表示正确
* @retval 0 表示成功
* @retval 非0 表示失败,可以使用VzNL_GetErrorInfo获取
*/
VZNLAPI int VzNL_EnableGangueFilterBaseHeight(VZNLHANDLE hDevice, VzBool bEnable);
VZNLAPI VzBool VzNL_IsEnableGangueFilterBaseHeight(VZNLHANDLE hDevice, int* pnErrorCode);
// @brief
// 获取结果
VZNLAPI int VzNL_GetGangueObjResult(VZNLHANDLE hDevice, SVzGangueObjectResult* pResult, int* pnCount);
/// @brief
/// 启动自动检测,并且返回激光线
/// [in]设备句柄
/// [in]激光线方向,keFlipType_Vertical垂直翻转
/// [in]回调函数
/// [in]回调函数参数
VZNLAPI int VzNL_StartAutoDetectGangue(VZNLHANDLE hDevice, EVzFlipType eFlipType, VzNL_GetAutoDetectResultCB pCB, void* pCBParam);
VZNLAPI int VzNL_StopAutoDetectGangue(VZNLHANDLE hDevice);
/**
* @brief 结束激光检测
* @param [in] hDevice 设备句柄
* @return 返回点的个数
*/
VZNLAPI void VzNL_EndDetectGangue(VZNLHANDLE hDevice);
#endif //__VIZUM_DETECTED_GANGUE_HEADER__