GrabBag/SDK/VzNLSDK/Inc/VZNL_DetectGrains.h

107 lines
4.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.

#ifndef __VIZUM_DETECTED_GRAINS_HEADER__
#define __VIZUM_DETECTED_GRAINS_HEADER__
#include "VZNL_Export.h"
#include "VZNL_Types.h"
/// @brief
/// 获取自动检测结果
/// <param name = "pLaserResult">[in]未处理的激光线(没有偏移)</param>
/// <param name = "pProcLaserResult">[in]处理后的激光线</param>
/// <param name = "eStatus">[in]检测状态</param>
/// <param name = "pResult">[in]检测结果</param>
/// <param name = "pParam">[in]传入参数</param>
typedef int(*VzNL_GetAutoDetectGrainsResultCB)(SVzDetectGrainsLaserResult* pLaserResult, SVzDetectGrainsLaserResult* pProcLaserResult, EVzGrainLaserStatus eStatus, SVzDetectGrainResult* pResult, void* pParam);
/// @brief
/// 开始激光检测
/// <param name = "hDevice">[in]设备句柄</param>
/// @return 返回0为正确失败返回错误码
VZNLAPI int VzNL_BeginDetectGrains(VZNLHANDLE hDevice);
/// @brief
/// 激光检测
/// <param name = "hDevice">[in]设备句柄</param>
/// <param name = "nPointInterval">[in]点的间隔</param>
/// @return 返回0为正确失败返回错误码
VZNLAPI int VzNL_DetectGrainLaser(VZNLHANDLE hDevice);
/// @brief
/// 获取激光线结果点的个数
/// <param name = "hDevice">[in]设备句柄</param>
/// @return 点的个数
VZNLAPI int VzNL_GetGrainLaserResultPointCount(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_GetGrainLaser2DResult(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_GetGrainLaser3DResult(VZNLHANDLE hDevice, SVzNL3DPosition* p3DPoint, int* pnCount);
/// @brief
/// 获取结果图像
/// <param name = "hDevice">[in]设备句柄</param>
/// <param name = "ppIImageData">[in]图像数据</param>
VZNLAPI int VzNL_GetGrainImageResult(VZNLHANDLE hDevice, SVzNLImageData** ppLeftImageData, SVzNLImageData** ppRightImageData);
/// @brief
/// 设置过滤高度
/// <param name = "hDevice">[in]设备句柄</param>
/// <param name = "dHeight">[in]过滤高度</param>
/// @return 成功返回0失败返回错误码。
VZNLAPI int VzNL_ConfigGrainsFilterHeight(VZNLHANDLE hDevice, double dHeight);
/// @brief
/// 设置传送带速度值
/// <param name = "hDevice">[in]设备句柄</param>
/// <param name = "eDirect">[in]运行方向</param>
/// <param name = "dSpeed">[in]速度</param>
/// @return 成功返回0失败返回错误码。
VZNLAPI int VzNL_ConfigGrainRunSpeed(VZNLHANDLE hDevice, EVzObjRunDirect eDirect, double dSpeed);
/// @brief
/// 设置正确的个数
/// <param name = "hDevice">[in]设备句柄</param>
/// <param name = "nValidCount">[in]正确的谷物个数</param>
/// @return 成功返回0失败返回错误码。
VZNLAPI int VzNL_ConfigGrainValidCount(VZNLHANDLE hDevice, unsigned int nValidCount);
/// @brief
/// 设置两边空余的线的个数
/// <param name = "hDevice">[in]设备句柄</param>
/// <param name = "nLineCount">[in]排除的线的个数</param>
/// @return 成功返回0失败返回错误码。
VZNLAPI int VzNL_ConfigGrainExcludeLineCount(VZNLHANDLE hDevice, unsigned int nLineCount);
/// @brief
/// 开始自动检测谷物
/// <param name = "hDevice">[in]设备</param>
/// <param name = "pResultCB">[in]谷物回调</param>
/// <param name = "pParam">[in]回调参数</param>
/// @return 成功返回0失败返回错误码。
VZNLAPI int VzNL_StartAutoDetectGrains(VZNLHANDLE hDevice, EVzFlipType eFlipType, VzNL_GetAutoDetectGrainsResultCB pResultCB, void* pParam);
/// @brief
/// 停止自动检测
/// <param name = "hDevice">[in]设备句柄</param>
/// @return 成功返回0失败返回错误码。
VZNLAPI int VzNL_StopAutoDetectGrains(VZNLHANDLE hDevice);
/// @brief
/// 结束激光检测
/// <param name = "hDevice">[in]设备句柄</param>
/// @return 成功返回0失败返回错误码。
VZNLAPI void VzNL_EndDetectGrains(VZNLHANDLE hDevice);
#endif //__VIZUM_DETECTED_GRAINS_HEADER__