#ifndef __VIZUM_DETECTED_GRAINS_HEADER__ #define __VIZUM_DETECTED_GRAINS_HEADER__ #include "VZNL_Export.h" #include "VZNL_Types.h" /// @brief /// 获取自动检测结果 /// [in]未处理的激光线(没有偏移) /// [in]处理后的激光线 /// [in]检测状态 /// [in]检测结果 /// [in]传入参数 typedef int(*VzNL_GetAutoDetectGrainsResultCB)(SVzDetectGrainsLaserResult* pLaserResult, SVzDetectGrainsLaserResult* pProcLaserResult, EVzGrainLaserStatus eStatus, SVzDetectGrainResult* pResult, void* pParam); /// @brief /// 开始激光检测 /// [in]设备句柄 /// @return 返回0为正确,失败返回错误码 VZNLAPI int VzNL_BeginDetectGrains(VZNLHANDLE hDevice); /// @brief /// 激光检测 /// [in]设备句柄 /// [in]点的间隔 /// @return 返回0为正确,失败返回错误码 VZNLAPI int VzNL_DetectGrainLaser(VZNLHANDLE hDevice); /// @brief /// 获取激光线结果点的个数 /// [in]设备句柄 /// @return 点的个数 VZNLAPI int VzNL_GetGrainLaserResultPointCount(VZNLHANDLE hDevice); /// @brief /// 获取激光线2D结果 /// [in]设备句柄 /// [out]2D点,内存空间由用户分配 /// [in/out]传入:用户分配的SVzNL2DPoint的结构个数;传出:用户需要分配多少个SVzNL2DPoint /// @return 成功返回0,失败返回错误码。 VZNLAPI int VzNL_GetGrainLaser2DResult(VZNLHANDLE hDevice, SVzNL2DPosition* p2DPoint, int* pnCount); /// @brief /// 获取激光线3D结果 /// [in]设备句柄 /// [out]3D点,内存空间由用户分配 /// [in/out]传入:用户分配的SVzNL3DPosition的结构个数;传出:用户需要分配多少个SVzNL3DPosition /// @return 成功返回0,失败返回错误码。 VZNLAPI int VzNL_GetGrainLaser3DResult(VZNLHANDLE hDevice, SVzNL3DPosition* p3DPoint, int* pnCount); /// @brief /// 获取结果图像 /// [in]设备句柄 /// [in]图像数据 VZNLAPI int VzNL_GetGrainImageResult(VZNLHANDLE hDevice, SVzNLImageData** ppLeftImageData, SVzNLImageData** ppRightImageData); /// @brief /// 设置过滤高度 /// [in]设备句柄 /// [in]过滤高度 /// @return 成功返回0,失败返回错误码。 VZNLAPI int VzNL_ConfigGrainsFilterHeight(VZNLHANDLE hDevice, double dHeight); /// @brief /// 设置传送带速度值 /// [in]设备句柄 /// [in]运行方向 /// [in]速度 /// @return 成功返回0,失败返回错误码。 VZNLAPI int VzNL_ConfigGrainRunSpeed(VZNLHANDLE hDevice, EVzObjRunDirect eDirect, double dSpeed); /// @brief /// 设置正确的个数 /// [in]设备句柄 /// [in]正确的谷物个数 /// @return 成功返回0,失败返回错误码。 VZNLAPI int VzNL_ConfigGrainValidCount(VZNLHANDLE hDevice, unsigned int nValidCount); /// @brief /// 设置两边空余的线的个数 /// [in]设备句柄 /// [in]排除的线的个数 /// @return 成功返回0,失败返回错误码。 VZNLAPI int VzNL_ConfigGrainExcludeLineCount(VZNLHANDLE hDevice, unsigned int nLineCount); /// @brief /// 开始自动检测谷物 /// [in]设备 /// [in]谷物回调 /// [in]回调参数 /// @return 成功返回0,失败返回错误码。 VZNLAPI int VzNL_StartAutoDetectGrains(VZNLHANDLE hDevice, EVzFlipType eFlipType, VzNL_GetAutoDetectGrainsResultCB pResultCB, void* pParam); /// @brief /// 停止自动检测 /// [in]设备句柄 /// @return 成功返回0,失败返回错误码。 VZNLAPI int VzNL_StopAutoDetectGrains(VZNLHANDLE hDevice); /// @brief /// 结束激光检测 /// [in]设备句柄 /// @return 成功返回0,失败返回错误码。 VZNLAPI void VzNL_EndDetectGrains(VZNLHANDLE hDevice); #endif //__VIZUM_DETECTED_GRAINS_HEADER__