《2022年车牌自动识别器DLL接口说明》由会员分享,可在线阅读,更多相关《2022年车牌自动识别器DLL接口说明(27页珍藏版)》请在金锄头文库上搜索。
1、车牌识别系统DLL软件开发对外接口使 用 说 明 书精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 27 页- 1 - 目录第一章接口概述. 2第二章对外接口函数详细说明. 31. 单个设备连接接口函数. 31.1. OpenHv . 31.2. CloseHv . 31.3. CloseIP . 41.4. HvIsConnected . 41.5. SetHvCallBack . 41.6. CARINFO_BEGIN_CALLBACK . 51.7. CARINFO_ END _CALLBACK . 51.8. PLATE_NO_
2、CALLBACK. 61.9. BIG_IMAGE_CALLBACK . 61.10. SMALL_IMAGE_CALLBACK . 71.11. BINARY _IMAGE_CALLBACK . 71.12. VIDEO _CALLBACK . 81.13. VIDEO _ HISTORY_CALLBACK . 91.14. STREAM_CALLBACK . 91.15. DEBUG_STR_CALLBACK . 10 1.16. SearchHVDeviceCount . 10 1.17. GetHVDeviceAddr . 11 1.18. SetHvIPFromMac . 11 1.
3、19. Yuv2Rgb . 11 1.20. Yuv2BMP . 12 1.21. Yuv2Jpg . 12 1.22. HV_ForceSend . 13 1.23. HV_ForceSendEx . 13 1.24. HV_ GetPlateInfo . 13 1.25. HV_ ProcessUserData . 14 1.26. HV_ GetHistoryVideo . 14 1.27. HV_CombineTwoImagesToOneImage . 15 1.28. HV_AntiTamper_Embed. 15 1.29. HV_AntiTamper_Examine . 16 1
4、.30. SendTriggerOut . 16 1.31. SetHvTime . 17 1.32. GetHvTime . 17 2. 视频检测器接口函数. 17 2.1. TRIGGERINFO_CALLBACK . 17 2.2. HV_GetStatInfo . 18 3. 主动连接接口函数. 19 3.1. OpenHvServer . 19 3.2. CloseHvServer . 19 3.3. CONNECT_EVENT . 19 3.4. DISCONNECT_EVENT . 20 3.5. SetHvServerEvent . 20 第三章应用系统开发说明. 20 第四章
5、HVDLL编程指南 . 24 1 编写回调函数. 24 2 创建句柄 . 24 3 设置回调 . 24 4 Timer 事件 . 25 5 取消回调 . 25 6 关闭句柄 . 26 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 27 页- 2 - HVDLL.dll接口概述是我公司车牌识别系统的核心接口,负责从识别器接收识别结果和视频信息,是各种接收应用程序的底层接口。由于 HVDLL API 函数内部实现中只能提供有限的保护,任何句柄和指针参数的错误传递都有可能导致后台软件的崩溃。HVDLL API 数据类型定义 : HVDLL
6、API 定义类型类型原型HV_API extern C _declspec(dllimport) HV_HANDLE void * E_HV_INV ALID_HANDLE NULL S_OK 0x00000000L E_FAIL 0x80000008L E_HANDLE 0x80000006L S_FALSE 0x00000001L E_POINTER 0x80000005L 图像格式IMAGE_YUV 1 IMAGE_JPEG 2 IMAGE_BIN 3 数据流类型定义_TYPE_PLATE_STR 0x8002 该数据所承载的信息流是 车牌号码字符流_TYPE_BIG_IMAGE 0x8
7、003 该数据所承载的信息流是 车牌大图像流_TYPE_SMALL_IMAGE 0x8004 该数据所承载的信息流是 车牌小图像流_TYPE_FULL_CMP_IMAGE 0x8005 该数据所承载的 信 息 流 是 完整的压缩视频流 _TYPE_BINARY_IMAGE 0x8006 该数据所承载的 信 息 流 是 车牌二值化小图像流 _TYPE_CARINFO_BEGIN 0x8008 该数据所承载的 信 息 流 是 车辆信息开始接收信号 _TYPE_CARINFO_END 0x8009 该数据所承载的 信 息 流 是 车辆信息结束精选学习资料 - - - - - - - - - 名师归纳
8、总结 - - - - - - -第 3 页,共 27 页- 3 - 接收信号 _TYPE_CUSTOMERDETECT_BIN 0x810D 该数据所承载的 信 息 流 是 与检测有关的调试二进制流 第一章对外接口函数详细说明1. 单个设备连接接口函数1.1. OpenHv HV_API HV_HANDLE _cdecl OpenHv( const PSTR pcIP ) 功能描述 : 打开一个视频处理系统句柄在对视频处理系统作任何操作之前, 必须使用该函数打开视频处理系统取得一个句柄后, 才可使用该句柄对视频处理系统进行操作参数说明 :pcIP 视频处理系统的IP 地址或串口名称,以0结尾返
9、回值 : 当成功地打开一个视频处理系统连接时,将返回一个的视频处理系统的句柄当打开失败时,函数返回E_HV_INVALID_HANDLE 注意 :此函数返回的是一个指针类型,用户应妥善保存该返回值,以用于后序的操作.2109 之后包括2109版本的HVDLL.dll的单连接有自动重连功能,参数设置如下:接收程序运行后,会在接收程序目录下自动生成HVDLL.ini文件,该文件的如下字段表示重连功能:ReConnect TryTimes=0 ;重连尝试次数(默认是0),0 为不尝试重连,-1 为一直尝试重连,直到连上为止,正数为尝试重连次数该参数修改后,重新OpenHv() 后生效。1.2. Cl
10、oseHv HV_API HRESULT _cdecl CloseHv( HV_HANDLE hHandle ) 功能描述 : 关闭一个视频处理系统句柄参数说明 :hHandle 由 OpenHv() 函数打开的句柄,此参数必须是OpenHv() 函数的返回值 , 否则将导致不可预想的后果,如果此参数为E_HV_INV ALID_HANDLE, 函数将不作任何操作,并且返回E_HANDLE 返回值 :返回 S_OK, 表示操作成功, 返回 E_HANDLE, 表示 hHandle 参数是一个非法的句柄返回 E_FAIL, 表示未知的错误导致操作失败精选学习资料 - - - - - - - -
11、- 名师归纳总结 - - - - - - -第 4 页,共 27 页- 4 - 注意 : 此函数成功调用后, 将关闭与视频处理系统的所有连接,并释放所有与该视频处理系统有关的所有资源1.3. CloseIP HV_API HRESULT _cdecl CloseIP(char *pszIP) 功能描述 :关闭指定IP 的视频处理系统参数说明 :pszIP 需要关闭的视频处理系统的IP 返回值 :返回 S_OK, 表示操作成功, 返回 S_FALSE, 表示没有找到该IP 的句柄,返回 E_FAIL, 表示未知的错误导致操作失败注意 : 此函数成功调用后, 将关闭与视频处理系统的所有连接,并释放
12、所有与该视频处理系统有关的所有资源1.4. HvIsConnected HV_API HRESULT _cdecl HvIsConnected( HV_HANDLE hHandle, INT32 *piStatus ) 功能描述 :获取连接状态参数说明 : hHandle 由 OpenHv() 函数打开的句柄,此参数必须是OpenHv() 函数的返回 值 , 否 则 将 导 致 不 可 预 想 的 后 果 , 如 果 此 参 数 为E_HV_INV ALID_HANDLE, 函 数 将 不 作 任 何 操 作 ,并 且 返 回E_HANDLE piStatus 输出连接状态0 表示已连接-1
13、表示未连接返回值 :返回 S_OK, 表示操作成功, 返回 E_HANDLE, 表示 hHandle 参数是一个非法的句柄返回 E_FAIL, 表示未知的错误导致操作失败注意 : 应用程序可定时调用该接口函数检查当前是否连接成功,如果当前未连接请重新连接。1.5. SetHvCallBack HV_API HRESULT _cdecl SetHvCallBack( HV_HANDLE hHandle, void *pFunction, void *pFirstParameter, WORD wVideoID, WORD wStream ) 功能描述 : 设置一个视频流的一种数据类型的回调函数精
14、选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 27 页- 5 - 在数据连接上收到的任何数据将通过回调函数的形式传递给应用程序的上层参数说明 : hHandle 由 OpenHv() 函数打开的句柄,此参数必须是OpenHv() 函数的返回 值 , 否 则 将 导 致 不 可 预 想 的 后 果 , 如 果 此 参 数 为E_HV_INV ALID_HANDLE, 函 数 将 不 作 任 何 操 作 ,并 且 返 回E_HANDLE pFunction 回调函数的函数指针,该参数是一个函数指针, 当数据连接上收到数据时 ,将调用该函数,
15、 如果该参数为NULL, 则表示关闭该回调功能 , 数据连接上的该类型数据流也随即被关闭,如果该参数为非NULL, 则表示打开该回调功能, 数据连接上的该类型数据流随即被打开,pFirstParameter 回调 pFunction 时传递的第一个参数, 该参数一般为一个对象的指针, 以便于在回调函数中直接访问一个对象,如果用户在回调函数中不准备使用该参数,则该参数可以为NULL wVideoID 表示视频ID 的 2 字节的无符号整数wStream 表示数据类型的2 字节的无符号整数返回值 : 返回 S_OK, 表示操作成功, 返回 E_HANDLE, 表示 hHandle 参数是一个非法的
16、句柄返回 E_FAIL, 表示未知的错误导致操作失败1.6. CARINFO_BEGIN_CALLBACK typedef int ( _cdecl *CARINFO_BEGIN_CALLBACK )( void *pFirstParameter, DWORD32 dwCarID ) 功能描述 : 记录数据开始类型的回调函数指针原型参数说明 : pFirstParameter 回调时传递的第一个参数dwCarID 车辆 ID 返回值 : 目前本接口的内部实现中不对此返回值作任何处理, 该返回值的存在只是为了将来的用途; 但建议函数在成功处理了该数据之后返回0,否则返回 -1 注意:系统在接收一
17、个车辆记录前或开始接收硬盘录像数据调用本函数。1.7. CARINFO_ END _CALLBACK typedef int ( _cdecl *CARINFO_END_CALLBACK )( void *pFirstParameter, DWORD32 dwCarID ) 功能描述 :记录数据结束类型的回调函数指针原型参数说明 :hHandle 由 OpenHv()函数打开的句柄; dwCarID 车辆 ID 号返回值 :目前本接口的内部实现中不对此返回值作任何处理, 该返回值的存在只是为了将来的用途; 但建议函数在成功处理了该数据之后返回0,否则返回 -1 注意 :系统在接收完一个车辆记录
18、后或结束接收硬盘录像数据调用本函数。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 27 页- 6 - 1.8. PLATE_NO_CALLBACK typedef int ( _cdecl *PLATE_NO_CALLBACK )( void *pFirstParameter, DWORD32 dwCarID, PSTR pcPlateNo, DWORD64 dwTimeMs ) 功能描述 : 车牌号码数据类型的回调函数指针原型参数说明 : pFirstParameter 回调时传递的第一个参数,该参数的值即为SetHvCallBac
19、k() 调用中 pFirstParameter 的值dwCarID 车辆 ID pPlateNo 车牌号码字符串该参数为以 0结尾的字符串指针dwTimeMs 时间 (1970-1-1 0:0:0 以来的毫秒数 ) 返回值 : 目前本接口的内部实现中不对此返回值作任何处理, 该返回值的存在只是为了将来的用途但建议函数在成功处理了该数据之后返回0,否则返回 -1 注意 : pPlateNo 这个指针所指向的内存在函数返回时即被释放, 因此如果用户希望函数返回后还使用该指针所指的内容, 则必须把该内容复制下来1.9. BIG_IMAGE_CALLBACK typedef int ( _cdecl
20、*BIG_IMAGE_CALLBACK )( void *pFirstParameter, DWORD32 dwCarID, WORD wImageWidth, WORD wImageHigh, BYTE bType, WORD wSize, PBYTE pbImage, WORD wImageID, WORD wHighImgFlag, WORD wPlateWidth, WORD wPlateHigh, DWORD64 dwTimeMs ) 功能描述 :车辆全景图数据类型的回调函数指针原型参数说明 : pFirstParameter 回调时传递的第一个参数dwCarID 车辆 ID wIm
21、ageWidth 图像的宽度wImageHigh 图像的高度bType 图像类型精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 27 页- 7 - wSize 数据大小pbImage 图像数据的指针wImageID 图像的 ID 号,表示得到的是哪一张图片,用COM 口连接只返回 0。wHighImgFlag 高清图片标志,如果该变量高8 位值是 0xFF00, 则该变量低8 位 值 为 图 片 大 小 的 高 位 值 , 即 该 图 片 数 据 大 小 为(int(wHighImgFlag & 0x00FF) OnPlate(dwCa
22、rID, pcPlateNo, dw64TimeMs); / 车牌回调函数实现int CHVDLLTestDlg:OnPlate( DWORD32 dwCarID, PSTR pcPlateNo, DWORD64 dw64TimeMs ) / 以下是函数体,表示对车牌回调的处理return 0; 2 创建句柄使用 OpenHv( const PSTR pcIP )创建一个可用的句柄, 后续操作都是基于此句柄进行,因此必须对返回的句柄进行检查。例如 : HV_HANDLE m_hHV; / 视频处理系统句柄 m_hHV = OpenHv( szIP.GetBuffer(MAX_PATH) );/
23、打开盒子句柄,szIP 为要连接的 IP地址if(E_HV_INVALID_HANDLE = m_hHV) AfxMessageBox( 句柄打开失败!输入的IP或COM 口不正确或不存在!); return ; 3 设置回调如果句柄有效,则在回调时使用HRESULT mResult2;mResult2 =SetHvCallBack( m_hHV, CHVDLLTestDlg:OnPlateProxy, this , 0, _TYPE_PLATE_STR ); if (mResult2 = E_HANDLE) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - -
24、- -第 25 页,共 27 页- 25 - AfxMessageBox(SetHvCallBack非法句柄 ); returnfalse ; 4 Timer事件在 Timer 事件中,检查dwiState 的状态, 0 为已连接, 2 为线程退出,否则就是关闭状态。/ 单连接状态检查if (m_hHV) int dwiState(-1); EnterCriticalSection( &m_csResult ); HRESULT h = HvIsConnected( m_hHV, &dwiState ); /dwiState变量:输出连接状态LeaveCriticalSection( &m_c
25、sResult ); if (h = S_OK) / 操作成功 if (dwiState = 0) GetDlgItem(IDC_CONSTATE)-SetWindowText( 连接成功 !); g_connt = 1; elseif ( dwiState = 2 ) GetDlgItem(IDC_CONSTATE)-SetWindowText(线程退出 ); else GetDlgItem(IDC_CONSTATE)-SetWindowText( 连接关闭 !); g_connt = 0; elseif (h = E_FAIL) AfxMessageBox(HvIsConnected未知错
26、误导致失败); 5 取消回调如果盒子句柄不为空,则取消回调。例如:if (m_hHV = NULL) return E_FAIL; SetHvCallBack( m_hHV, NULL, NULL, 0, _TYPE_PLATE_STR ); SetHvCallBack( m_hHV, NULL, NULL, 0, _TYPE_SMALL_IMAGE ); SetHvCallBack( m_hHV, NULL, NULL, 0, _TYPE_BINARY_IMAGE ); SetHvCallBack( m_hHV, NULL, NULL, 0, _TYPE_BIG_IMAGE ); SetHv
27、CallBack( m_hHV, NULL, NULL, 0, _TYPE_FULL_CMP_IMAGE ); SetHvCallBack( m_hHV, NULL, NULL, 1, _TYPE_FULL_CMP_IMAGE ); return S_OK; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 26 页,共 27 页- 26 - 6 关闭句柄当需要关闭连接时,调用CloseHv( HV_HANDLE hHandle ) 断开与识别器的连接,从而释放资源。例如:CloseHv(m_hHV ); 在关闭盒子句柄时,要将Timer 事情取消。例如::KillTimer(GetSafeHwnd(),1);精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 27 页,共 27 页