门禁管理软件开发总结
一、定制需求简述:
门禁管理软件向设备传输数据时,上传人员信息及指纹信息不全,由于门禁管理软件是按照固件版本来处理下发指纹数据,因为以前的软件对于现在的机器固件的指纹下发是处理不了的。因此需要定制。
门禁管理软件
二、实现方法:
因上传人员组合验定时,在高速下是无法成功下发。原因为,在高速上传用户时,是先写到内存中,最后提交的,而上传人员组合验证的方法,不支持高速,它会直接下发到机器,这时机器中还没有人员,所以会失败。因此,在高速上传时,上传人员组合验证的功能移到最后,待人员都上传完毕之后处理。
三、门禁管理软件代码Changelog:
主要代码如下:
UploadOk := ZkManager.UpdateBatch;
//更新组合验证 不可以放到高速里面,只有在高速完成了之后再做
//如果是高速模式还要处理 上传验证方式
First; //从头开始
while Not Eof do
begin
if Not FieldByName('Selected').AsBoolean then //此用户没有选中跳过
begin
Next;
Continue;
Application.ProcessMessages;
end;
if ckbBase.Checked then
begin
if FCancelOp then Exit;
ZeroMemory(Pointer(@UserACCfg),Sizeof(UserACCfg));
//处理验证方式
UserACCfg.VerifyStyle := 0;
//根据门禁管理软件参数[上传用户没有指定门禁权限时,门禁管理软件将默认权限(使用组1时间段)。],
//去查找此用户有没有定义用户门禁权限
bFind := SearchUserDoorPri(ZkManager.DeviceInfo.ID, IntToStr(FieldByName('UserNo').AsInteger), UserACCfg);
if not bFind then
begin
//没有找到用户自定义门禁权限, 用户在不在:组->门禁组中
bFind := SearchUserDoorPriExt(ZkManager.DeviceInfo.ID, FieldByName('UserNo').AsInteger, UserACCfg);
end;
if bFind and ZkManager.TFTACC then
begin
iVerify:=IfThen((UserACCfg.VerifyStyle > 0), (128 UserACCfg.VerifyStyle-1), 0);
ZkManager.ZKem.SetUserInfoEx(ZkManager.DeviceInfo.MachineNumber, FieldByName('UserNo').AsInteger, iVerify, Reserved);
end;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。