车牌识别一体机 SDK 对接
概述
此 skill 用于指导 VZ 系列车牌识别一体机的对接开发。开发包版本 2.0.6.46,包含三种集成方式:
| 方式 | 适用场景 | 说明 |
|---|---|---|
| 一体机 SDK | C/C++/Python/Java/C#/Go/Delphi 应用 | 原生 API,功能最全(推荐) |
| ActiveX 控件 | Windows 桌面/Web 应用 | 控件化,含视频预览 |
| TCP 协议 | 跨语言/跨平台/嵌入式 | 纯 Socket 通信,开源可定制 |
集成工作流
标准接入流程
1. VzLPRClient_Setup() → 全局初始化(程序启动时调用一次)
2. VzLPRClient_Open(ip, port, ...) → 连接设备,获取 handle
3. VzLPRClient_SetPlateInfoCallBack → 注册识别结果回调
4. VzLPRClient_ForceTrigger() → 软件触发识别(按需)
5. 业务逻辑循环 → 接收识别结果、白名单验证、IO控制
6. VzLPRClient_Close(handle) → 断开设备
7. VzLPRClient_Cleanup() → 全局释放(程序退出时调用一次)
连接管理
- 使用
VzLPRClient_Open(ip, port, "admin", "admin")建立连接 - 默认端口 80,用户名/密码默认 admin/admin
VzLPRClient_IsConnected(handle, &status)检测连接状态- 连接断开后 SDK 自动重连,可通过
VZLPRClient_SetCommonNotifyCallBack监听VZ_LPRC_ONLINE/VZ_LPRC_OFFLINE事件 - 支持跨网段修改 IP:
VzLPRClient_UpdateNetworkParam(SL, SH, newIP, gw, mask)
识别结果处理
车牌识别结果通过 TH_PlateResult 结构体回调返回,关键字段参考 references/api_reference.md。
回调类型(VZ_LPRC_RESULT_TYPE):
- VZ_LPRC_RESULT_REALTIME — 实时结果(不含截图),由 SetIsOutputRealTimeResult(true) 开启
- VZ_LPRC_RESULT_STABLE — 稳定结果(默认输出)
- VZ_LPRC_RESULT_FORCE_TRIGGER — 软件触发结果
- VZ_LPRC_RESULT_IO_TRIGGER — 外部 IO 信号触发
- VZ_LPRC_RESULT_VLOOP_TRIGGER — 虚拟线圈触发
- VZ_LPRC_RESULT_RETENTION_TRIGGER — 车辆滞留
- VZ_LPRC_RESULT_RELIEVE_TRIGGER — 滞留解除
停车场出入管理业务逻辑
车辆进入检测区
↓ 识别车牌 (回调进入 VzLPRC_RESULT_STABLE / VZ_LPRC_RESULT_VLOOP_TRIGGER)
↓ 白名单验证 (ucWLResult字段)
├─ VZ_LPWL_VALID → 开闸: SetIOOutputAuto(handle, chnId=0, duration=2000)
├─ VZ_LPWL_BLACK_LIST → 报警: PlayVoice("黑名单车辆")
├─ VZ_LPWL_NOT_FOUND → 语音: "未授权"
└─ VZ_LPWL_END_TIMEOUT → 语音: "已过期"
↓ 记录保存 + 抓图
↓ 车辆滞留检测 (VZ_LPRC_RESULT_RETENTION_TRIGGER)
↓ 车辆离开 (VZ_LPRC_RESULT_RELIEVE_TRIGGER)
白名单管理
三种验证模式
通过 VzLPRClient_SetWLCheckMethod(handle, nType) 设置:
- 0 - 脱机自动启用:客户端在线时白名单停用,断线后自动启用
- 1 - 始终启用:设备基于白名单输出 IO 控制道闸
- 2 - 不启用:不使用白名单
关键操作
- 批量导入:
VzLPRClient_WhiteListImportRows(handle, count, rows, results) - 单条添加:
VzLPRClient_WhiteListInsertVehicle(handle, pVehicle) - 按车牌号删除:
VzLPRClient_WhiteListDeleteVehicleByPlateID(handle, plateID) - 分页查询:
VzLPRClient_WhiteListLoadVehicle(handle, pCondition) - 模糊查询:
VzLPRClient_WhiteListQueryVehicleByPlate(handle, partialPlateID) - 清空:
VzLPRClient_WhiteListClearCustomersAndVehicles(handle) - TCP 透传命令:也可通过 JSON 命令操作白名单(参考
references/api_reference.md)
IO 控制道闸
- 自动抬杆:
VzLPRClient_SetIOOutputAuto(handle, chnId=0, duration=2000)— IO输出后保持2000ms自动复位 - 手动控制:
VzLPRClient_SetIOOutput(handle, chnId=0, 1)抬杆 /SetIOOutput(handle, 0, 0)落杆 - 状态读取:
VzLPRClient_GetIOOutput(handle, chnId, &status)— 返回 0开路/1闭路 - GPIO 输入:
VzLPRClient_GetGPIOValue(handle, gpioIn, &value)/SetGPIORecvCallBack监听输入
中心服务器推送
设备支持将识别结果、IO 触发、串口数据推送到中心服务器(HTTP POST):
VzLPRClient_SetCenterServerNet(handle, &net)— 配置中心服务器(IP+Port+SSL)VzLPRClient_SetCenterServerPlate(handle, &plate)— 车牌结果推送到 URLVzLPRClient_SetCenterServerGionin(handle, &gio)— IO 触发推送VzLPRClient_SetCenterServerSerial(handle, &serial)— 串口数据推送VzLPRClient_SetCenterServerDeviceReg(handle, &reg)— 设备主动注册
脱机检查(断网自动切换)
# 客户端在线时白名单停用,手动开闸逻辑由云端控制
# 客户端断线后 → 设备自动启用内置白名单,自动抬杆
VzLPRClient_SetOfflineCheck(handle)
VzLPRClient_CancelOfflineCheck(handle) # 取消
语音播报
# TTS 文本转语音播报
VzLPRClient_PlayVoice(handle, "欢迎光临", interval=0, volume=80, male=0)
# male: 0女声 1男声
# interval: 播放间隔(ms),0表示立即
# volume: 音量 0-100
运行时注意事项
- 32位 vs 64位:32位应用使用 SDK 目录下的 32位 DLL,64位应用使用 SDK(64位) 目录
- DLL 依赖:编译后的程序必须将 SDK/bin 下所有 DLL 拷贝到可执行程序同级目录
- 线程安全:所有 SDK 接口多线程安全,但回调在 SDK 内部线程执行,不要在回调中做耗时操作
- 字符串编码:所有字符串(车牌号等)使用 GB2312 编码,Python 调用时需
.encode("GB2312") - 截图规则:实时结果不带截图,稳定/触发结果在
bEnableImage=1时带截图 - 虚拟线圈坐标:坐标范围为
[0, 1000],代表相对图像位置的千分比 - 默认识别类型:设备默认只识别蓝牌和黄牌,其他类型需
SetPlateRecType手动开启
参考文档
详细的 API 函数清单、数据结构定义、错误码速查见 references/api_reference.md。
TCP 协议说明文档索引见 references/protocol_structure.md。