GrabBag/SDK/VzNLSDK/Inc/VZNL_DetectGangue.h

158 lines
5.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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结果
/// <param name = "hDevice">[in]设备句柄</param>
/// <param name = "p2DPoint">[out]2D点内存空间由用户分配</param>
/// <param name = "pnCount">[in/out]传入:用户分配的SVzNL2DPoint的结构个数;传出:用户需要分配多少个SVzNL2DPoint</param>
/// @return 成功返回0失败返回错误码。
VZNLAPI int VzNL_GetGangue2DResult(VZNLHANDLE hDevice, SVzNL2DPosition* p2DPoint, int* pnCount);
/// @brief
/// 获取激光线3D结果
/// <param name = "hDevice">[in]设备句柄</param>
/// <param name = "p3DPoint">[out]3D点内存空间由用户分配</param>
/// <param name = "pnCount">[in/out]传入:用户分配的SVzNL3DPosition的结构个数;传出:用户需要分配多少个SVzNL3DPosition</param>
/// @return 成功返回0失败返回错误码。
VZNLAPI int VzNL_GetGangue3DResult(VZNLHANDLE hDevice, SVzNL3DPosition* p3DPoint, int* pnCount);
/// @brief
/// 获取结果图像
/// <param name = "hDevice">[in]设备句柄</param>
/// <param name = "ppIImageData">[in]图像数据</param>
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
/// 启动自动检测,并且返回激光线
/// <param name = "hDevice">[in]设备句柄</param>
/// <param name = "eFlipType">[in]激光线方向,keFlipType_Vertical垂直翻转</param>
/// <param name = "pCB">[in]回调函数</param>
/// <param name = "pCBParam">[in]回调函数参数</param>
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__