門(mén)禁管理軟件開(kāi)發(fā)總結(jié)
一、定制需求簡(jiǎn)述:
門(mén)禁管理軟件向設(shè)備傳輸數(shù)據(jù)時(shí),上傳人員信息及指紋信息不全,由于門(mén)禁管理軟件是按照固件版本來(lái)處理下發(fā)指紋數(shù)據(jù),因?yàn)橐郧暗能浖?duì)于現(xiàn)在的機(jī)器固件的指紋下發(fā)是處理不了的。因此需要定制。
門(mén)禁管理軟件
二、實(shí)現(xiàn)方法:
因上傳人員組合驗(yàn)定時(shí),在高速下是無(wú)法成功下發(fā)。原因?yàn)?,在高速上傳用戶時(shí),是先寫(xiě)到內(nèi)存中,最后提交的,而上傳人員組合驗(yàn)證的方法,不支持高速,它會(huì)直接下發(fā)到機(jī)器,這時(shí)機(jī)器中還沒(méi)有人員,所以會(huì)失敗。因此,在高速上傳時(shí),上傳人員組合驗(yàn)證的功能移到最后,待人員都上傳完畢之后處理。
三、門(mén)禁管理軟件代碼Changelog:
主要代碼如下:
UploadOk := ZkManager.UpdateBatch;
//更新組合驗(yàn)證 不可以放到高速里面,只有在高速完成了之后再做
//如果是高速模式還要處理 上傳驗(yàn)證方式
First; //從頭開(kāi)始
while Not Eof do
begin
if Not FieldByName('Selected').AsBoolean then //此用戶沒(méi)有選中跳過(guò)
begin
Next;
Continue;
Application.ProcessMessages;
end;
if ckbBase.Checked then
begin
if FCancelOp then Exit;
ZeroMemory(Pointer(@UserACCfg),Sizeof(UserACCfg));
//處理驗(yàn)證方式
UserACCfg.VerifyStyle := 0;
//根據(jù)門(mén)禁管理軟件參數(shù)[上傳用戶沒(méi)有指定門(mén)禁權(quán)限時(shí),門(mén)禁管理軟件將默認(rèn)權(quán)限(使用組1時(shí)間段)。],
//去查找此用戶有沒(méi)有定義用戶門(mén)禁權(quán)限
bFind := SearchUserDoorPri(ZkManager.DeviceInfo.ID, IntToStr(FieldByName('UserNo').AsInteger), UserACCfg);
if not bFind then
begin
//沒(méi)有找到用戶自定義門(mén)禁權(quán)限, 用戶在不在:組->門(mén)禁組中
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;
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。