GrabBag/SDK/VzNLSDK/Inc/VZNL_DetectGangue.h

158 lines
5.2 KiB
C
Raw Normal View History

2025-07-23 01:35:14 +08:00
/*
* Header: VZNL_Graphics.h
* Description:<EFBFBD><EFBFBD>ǰ<EFBFBD>ļ<EFBFBD>Ϊΰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Vizum)<EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD>EyeCB<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڡ<EFBFBD>
*
* 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 <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
* @retval 0 <EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD>
* @retval <EFBFBD><EFBFBD>0 <EFBFBD><EFBFBD>ʾʧ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>VzNL_GetErrorInfo<EFBFBD><EFBFBD>ȡ
*/
VZNLAPI int VzNL_BeginDetectGangue(VZNLHANDLE hDevice);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] nLaserThres <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ[Range:0~255]
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
* @retval 0 <EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD>
* @retval <EFBFBD><EFBFBD>0 <EFBFBD><EFBFBD>ʾʧ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>VzNL_GetErrorInfo<EFBFBD><EFBFBD>ȡ
*/
VZNLAPI int VzNL_SetGangueThres(VZNLHANDLE hDevice, int nLaserThres);
VZNLAPI int VzNL_GetGangueThres(VZNLHANDLE hDevice, int* pnLaserThres);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] nPointInterval <EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0Ϊ<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_DetectGangue(VZNLHANDLE hDevice, int nPointInterval);
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] nPointInterval <EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI int VzNL_GetGangueResultPointCount(VZNLHANDLE hDevice);
/// @brief
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2D<32><44><EFBFBD><EFBFBD>
/// <param name = "hDevice">[in]<5D><EFBFBD><E8B1B8><EFBFBD><EFBFBD></param>
/// <param name = "p2DPoint">[out]2D<32><EFBFBD>ڴ<EFBFBD><DAB4>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name = "pnCount">[in/out]<5D><><EFBFBD><EFBFBD>:<3A>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SVzNL2DPoint<6E>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD>:<3A>û<EFBFBD><C3BB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٸ<EFBFBD>SVzNL2DPoint</param>
/// @return <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>ʧ<EFBFBD>ܷ<EFBFBD><DCB7>ش<EFBFBD><D8B4><EFBFBD><EFBFBD>
VZNLAPI int VzNL_GetGangue2DResult(VZNLHANDLE hDevice, SVzNL2DPosition* p2DPoint, int* pnCount);
/// @brief
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3D<33><44><EFBFBD><EFBFBD>
/// <param name = "hDevice">[in]<5D><EFBFBD><E8B1B8><EFBFBD><EFBFBD></param>
/// <param name = "p3DPoint">[out]3D<33><EFBFBD>ڴ<EFBFBD><DAB4>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name = "pnCount">[in/out]<5D><><EFBFBD><EFBFBD>:<3A>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SVzNL3DPosition<6F>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD>:<3A>û<EFBFBD><C3BB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٸ<EFBFBD>SVzNL3DPosition</param>
/// @return <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>ʧ<EFBFBD>ܷ<EFBFBD><DCB7>ش<EFBFBD><D8B4><EFBFBD><EFBFBD>
VZNLAPI int VzNL_GetGangue3DResult(VZNLHANDLE hDevice, SVzNL3DPosition* p3DPoint, int* pnCount);
/// @brief
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
/// <param name = "hDevice">[in]<5D><EFBFBD><E8B1B8><EFBFBD><EFBFBD></param>
/// <param name = "ppIImageData">[in]ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
VZNLAPI int VzNL_GetGangueImageResult(VZNLHANDLE hDevice, SVzNLImageData** ppLeftImageData, SVzNLImageData** ppRightImageData);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] nCount <EFBFBD><EFBFBD>ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
* @retval 0 <EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD>
* @retval <EFBFBD><EFBFBD>0 <EFBFBD><EFBFBD>ʾʧ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>VzNL_GetErrorInfo<EFBFBD><EFBFBD>ȡ
*/
VZNLAPI int VzNL_SetGangueDetectParam(VZNLHANDLE hDevice, const SVzDetectGangueParam* psParam);
VZNLAPI int VzNL_GetGangueDetectParam(VZNLHANDLE hDevice, SVzDetectGangueParam* psParam);
/**
* @brief <EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
* @retval 0 <EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD>
* @retval <EFBFBD><EFBFBD>0 <EFBFBD><EFBFBD>ʾʧ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>VzNL_GetErrorInfo<EFBFBD><EFBFBD>ȡ
*/
VZNLAPI int VzNL_CalibrationGangue(VZNLHANDLE hDevice);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>PLC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] szPLCIP <EFBFBD><EFBFBD>ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
* @retval 0 <EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD>
* @retval <EFBFBD><EFBFBD>0 <EFBFBD><EFBFBD>ʾʧ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>VzNL_GetErrorInfo<EFBFBD><EFBFBD>ȡ
*/
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 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] nPointInterval <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
* @retval 0 <EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD>
* @retval <EFBFBD><EFBFBD>0 <EFBFBD><EFBFBD>ʾʧ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>VzNL_GetErrorInfo<EFBFBD><EFBFBD>ȡ
*/
VZNLAPI int VzNL_SetGanguePointInterval(VZNLHANDLE hDevice, int nPointInterval);
VZNLAPI int VzNL_GetGanguePointInterval(VZNLHANDLE hDevice, int* pnPointInterval);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>ٶ<EFBFBD>
* @param [in] dSpeed <EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>ٶ<EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
* @retval 0 <EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD>
* @retval <EFBFBD><EFBFBD>0 <EFBFBD><EFBFBD>ʾʧ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>VzNL_GetErrorInfo<EFBFBD><EFBFBD>ȡ
*/
VZNLAPI int VzNL_SetGangueConveyorBeltSpeed(VZNLHANDLE hDevice, double dSpeed);
VZNLAPI int VzNL_GetGangueConveyorBeltSpeed(VZNLHANDLE hDevice, double* pdSpeed);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] bEnable <EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȷ
* @retval 0 <EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD>
* @retval <EFBFBD><EFBFBD>0 <EFBFBD><EFBFBD>ʾʧ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>VzNL_GetErrorInfo<EFBFBD><EFBFBD>ȡ
*/
VZNLAPI int VzNL_EnableGangueFilterBaseHeight(VZNLHANDLE hDevice, VzBool bEnable);
VZNLAPI VzBool VzNL_IsEnableGangueFilterBaseHeight(VZNLHANDLE hDevice, int* pnErrorCode);
// @brief
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
VZNLAPI int VzNL_GetGangueObjResult(VZNLHANDLE hDevice, SVzGangueObjectResult* pResult, int* pnCount);
/// @brief
/// <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><E2A3AC><EFBFBD>ҷ<EFBFBD><D2B7>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD>
/// <param name = "hDevice">[in]<5D><EFBFBD><E8B1B8><EFBFBD><EFBFBD></param>
/// <param name = "eFlipType">[in]<5D><><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>,keFlipType_Vertical<61><6C>ֱ<EFBFBD><D6B1>ת</param>
/// <param name = "pCB">[in]<5D>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name = "pCBParam">[in]<5D>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
VZNLAPI int VzNL_StartAutoDetectGangue(VZNLHANDLE hDevice, EVzFlipType eFlipType, VzNL_GetAutoDetectResultCB pCB, void* pCBParam);
VZNLAPI int VzNL_StopAutoDetectGangue(VZNLHANDLE hDevice);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [in] hDevice <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI void VzNL_EndDetectGangue(VZNLHANDLE hDevice);
#endif //__VIZUM_DETECTED_GANGUE_HEADER__