使用PHP zklib管理ZK考勤机时如何触发设备采集用户指纹并绑定
基于PHP ZKlib实现ZK考勤机远程指纹采集绑定操作指南
- 首先完成前置校验:确认你已经通过
CMD_USER_WRQ指令将用户基础信息成功写入设备,且已获取到该用户在考勤机内部的唯一整数ID(注意区分自定义工号和设备内部用户ID,部分设备二者可以一致,但需以设备内存储的ID为准),写入后可调用用户查询接口确认用户存在,避免后续绑定失败。 - 发送远程采集触发指令:使用
CMD_STARTENROLL指令触发设备进入采集状态,指令需要携带3个参数:目标用户的设备内部ID、指纹序号(单个用户最多支持10枚指纹,序号范围0-9)、采集超时时间(单位秒,建议设置15-30)。参考代码示例:
// $zk 为已完成连接认证的ZKlib实例 $user_internal_id = 1003; // 刚才新增用户的设备内部ID $finger_index = 0; // 本次采集为该用户的第1枚指纹 $timeout = 30; // 30秒超时未完成采集自动退出 // 构造指令发送,若你的ZKlib未封装该指令,可手动传入指令码1002(0x3EA) $response = $zk->sendCommand(1002, pack('SSS', $user_internal_id, $finger_index, $timeout));
- 等待用户完成采集:指令发送成功后,设备会自动跳转到指纹采集界面,屏幕会提示用户放置手指,通常需要连续放置3次完成指纹录入,整个过程不需要额外代码干预,设备会自动处理:
- 采集成功时设备会返回成功状态码,指纹模板会自动和对应用户ID绑定存储,无需额外操作
- 采集失败(超时、手指放置不规范、指纹重复)时设备会返回对应错误码,可根据错误码引导用户重新触发采集
- 验证绑定结果:采集完成后,可调用
CMD_USERTEMP_RRQ指令读取该用户的指纹模板列表,确认对应序号的指纹模板是否存在,判断操作是否成功。参考代码:
// 获取指定用户的所有指纹模板 $finger_templates = $zk->getUserTemplates($user_internal_id); if(isset($finger_templates[$finger_index]) && !empty($finger_templates[$finger_index])){ // 指纹采集绑定成功 }
注意:部分早期型号的ZK考勤机不支持远程触发指纹采集功能,仅支持本地设备端操作录入,若发送指令后设备无响应,可查阅对应设备的官方开发手册确认是否支持该功能。若你使用的ZKlib版本没有封装指纹采集相关方法,可手动补充
CMD_STARTENROLL指令码1002即可调用。
内容的提问来源于stack exchange,提问作者Munawir
相关产品推荐
相关产品推荐

