门禁管理软件开发总结
一、定制需求简述:
门禁管理软件向设备传输数据时,上传人员信息及指纹信息不全,由于门禁管理软件是按照固件版本来处理下发指纹数据,因为以前的软件对于现在的机器固件的指纹下发是处理不了的。因此需要定制。
门禁管理软件
二、实现方法:
因上传人员组合验定时,在高速下是无法成功下发。原因为,在高速上传用户时,是先写到内存中,最后提交的,而上传人员组合验证的方法,不支持高速,它会直接下发到机器,这时机器中还没有人员,所以会失败。因此,在高速上传时,上传人员组合验证的功能移到最后,待人员都上传完毕之后处理。
三、门禁管理软件代码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;
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!