📄 asc2setup.pas
字号:
Cells[0,i+1] := format('%4.4d',[i])+':'+format('%4.4d',[StrToInt(cardidx)]);
Cells[1,i+1] := Trim(cardid);
Cells[2,i+1] := Trim(password);
Cells[3,i+1] := Trim(expdate);
Cells[4,i+1] := Trim(timecode);
end;
CardAttribute[i+1,0] := StrToInt(enacs);
CardAttribute[i+1,1] := StrToInt(properties);
SetLamp(3);
end else
SetLamp(1);
end;
end;
procedure TASC2SetupForm.WriteCardDefButtonClick(Sender: TObject);
var
cardid,expdate,password: string;
cardidx: Word;
enacs,properties,timecode: Byte;
i: Smallint;
begin
Screen.Cursor := crHourglass;
for i:=1 to StrToInt(CardCountEdit.Text) do
begin
enacs := CardAttribute[i,0];
cardidx := StrToInt(Copy(CardStringGrid.Cells[0,i],6,4));
cardid := CardStringGrid.Cells[1,i];
password := Format('%6.6d',[StrToInt(CardStringGrid.Cells[2,i])]);
expdate := CardStringGrid.Cells[3,i];
timecode := StrToInt(CardStringGrid.Cells[4,i]);
properties := CardAttribute[i,1];
if ascAddCard(hComDev,1,devid,enacs,cardid,cardidx,properties,
expdate,timecode,password)=0 then
SetLamp(3)
else
SetLamp(1);
end;
Screen.Cursor := crDefault;
end;
procedure TASC2SetupForm.UpdateCardDefButtonClick(Sender: TObject);
var
cardid,expdate,password: string;
cardidx: Word;
enacs,properties,timecode: Byte;
i: Smallint;
begin
i:=CardStringGrid.Row;
enacs := CardAttribute[i,0];
cardidx := StrToInt(Copy(CardStringGrid.Cells[0,i],6,4));
cardid := CardStringGrid.Cells[1,i];
password := Format('%6.6d',[StrToInt(CardStringGrid.Cells[2,i])]);
expdate := CardStringGrid.Cells[3,i];
timecode := StrToInt(CardStringGrid.Cells[4,i]);
properties := CardAttribute[i,1];
if ascUpdateCard(hComDev,10,devid,enacs,cardid,cardidx,properties,
expdate,timecode,password)=0 then
SetLamp(3)
else
SetLamp(1);
end;
procedure TASC2SetupForm.ClearCardDefButtonClick(Sender: TObject);
var
i,j: Smallint;
begin
CardCountEdit.Text := '0';
with CardStringGrid do
begin
for i:=1 to 4096 do
for j:= 0 to 4 do
begin
Cells[j,i] := '';
CardAttribute[i,0] := 0;
CardAttribute[i,1] := 0;
end;
end;
if ascClrCardCount(hComDev,1,devid)=0 then
SetLamp(3)
else
SetLamp(1);
end;
procedure TASC2SetupForm.CardStringGridSelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
ReaderChkBoxL.OnClick := nil;
if ( ( CardAttribute[ARow,0] shr 7 ) and $01 ) = 1 then
ReaderChkBoxL.Checked := True
else
ReaderChkBoxL.Checked := False;
ReaderChkBoxL.OnClick := ReaderChkBoxLClick;
ReaderChkBoxR.OnClick := nil;
if ( ( CardAttribute[ARow,0] shr 6 ) and $01 ) = 1 then
ReaderChkBoxR.Checked := True
else
ReaderChkBoxR.Checked := False;
ReaderChkBoxR.OnClick := ReaderChkBoxRClick;
ValidChkBox.OnClick := nil;
if ( ( CardAttribute[ARow,1] shr 6 ) and $03 ) = 1 then
ValidChkBox.Checked := True
else
ValidChkBox.Checked := False;
ValidChkBox.OnClick := ValidChkBoxClick;
CardLevelChkBox.OnClick := nil;
if ( ( CardAttribute[ARow,1] shr 5 ) and $01 ) = 1 then
CardLevelChkBox.Checked := True
else
CardLevelChkBox.Checked := False;
CardLevelChkBox.OnClick := CardLevelChkBoxClick;
PINLenEdit.OnChange := nil;
PINLenEdit.Text := IntToStr( CardAttribute[ARow,1] and $07 );
PINLenEdit.OnChange := PINLenEditChange;
end;
procedure TASC2SetupForm.ReaderChkBoxLClick(Sender: TObject);
var
ARow: Smallint;
begin
ARow := CardStringGrid.Row;
if ReaderChkBoxL.Checked then
CardAttribute[ARow,0] := ( CardAttribute[ARow,0] or $80 )
else
CardAttribute[ARow,0] := ( CardAttribute[ARow,0] and $7F );
end;
procedure TASC2SetupForm.ReaderChkBoxRClick(Sender: TObject);
var
ARow: Smallint;
begin
ARow := CardStringGrid.Row;
if ReaderChkBoxR.Checked then
CardAttribute[ARow,0] := ( CardAttribute[ARow,0] or $40 )
else
CardAttribute[ARow,0] := ( CardAttribute[ARow,0] and $BF );
end;
procedure TASC2SetupForm.CardLevelChkBoxClick(Sender: TObject);
var
ARow: Smallint;
begin
ARow := CardStringGrid.Row;
if CardLevelChkBox.Checked then
CardAttribute[ARow,1] := ( CardAttribute[ARow,1] or $20 )
else
CardAttribute[ARow,1] := ( CardAttribute[ARow,1] and $DF );
end;
procedure TASC2SetupForm.ValidChkBoxClick(Sender: TObject);
var
ARow: Smallint;
begin
ARow := CardStringGrid.Row;
if ValidChkBox.Checked then
CardAttribute[ARow,1] := ( CardAttribute[ARow,1] or $40 )
else
CardAttribute[ARow,1] := ( CardAttribute[ARow,1] and $3F );
end;
procedure TASC2SetupForm.PINLenEditChange(Sender: TObject);
var
ARow: Smallint;
begin
ARow := CardStringGrid.Row;
CardAttribute[ARow,1] := ( CardAttribute[ARow,1] and $F8 );
CardAttribute[ARow,1] := ( CardAttribute[ARow,1] or ( StrToInt(PINLENEdit.Text) and $07 ) );
end;
// 事件记录
procedure TASC2SetupForm.ReadRecordCountButtonClick(Sender: TObject);
var
S: string;
begin
S := StringOfChar(' ',8);
SetLamp(2);
if ascGetRecordCount(hComDev,1,devid,S)=0 then
begin
SetLamp(3);
RecCountEdit.Text := S;
end else
SetLamp(1);
end;
procedure TASC2SetupForm.ClearRecordButtonClick(Sender: TObject);
var
i,j,k: Smallint;
begin
k := StrToInt(RecReadCountEdit.Text);
SetLamp(2);
if ascClrRecordCount(hComDev,1,devid,k)=0 then
begin
SetLamp(3);
Screen.Cursor := crHourglass;
RecCountEdit.Text := '0';
RecAddrEdit.Text := '0';
RecReadCountEdit.Text := '0';
with RecordStringGrid do
begin
if k=0 then
for i:=1 to 6553-1 do
for j:= 0 to 5 do
Cells[j,i] := ''
else
for i:=1 to k do
for j:= 0 to 5 do
Cells[j,i] := '';
end;
Screen.Cursor := crDefault;
end else
SetLamp(1);
end;
procedure TASC2SetupForm.ReadRecordButtonClick(Sender: TObject);
var
i,k,ptr,cnt,ret: Smallint;
S1: array[0..3] of string;
begin
Screen.Cursor := crHourglass;
if Isdigit(RecAddrEdit.Text) and IsDigit(RecReadCountEdit.Text) then
begin
stopprocess := False;
ptr := StrToInt(RecAddrEdit.Text);
cnt := StrToInt(RecReadCountEdit.Text);
for i:=ptr to ptr+cnt-1 do
begin
Application.ProcessMessages;
if stopprocess then
begin
Screen.Cursor := crDefault;
Exit;
end;
SetLamp(2);
for k:=0 to 3 do S1[k] := StringOfChar(' ',16);
ret := ascGetRecord(hComDev,1,devid,i,S1[0],S1[1],S1[2],S1[3]);
if ( ret=0 ) or ( ret=2 ) then
begin
SetLamp(3);
with RecordStringGrid do
begin
if ret=0 then
Cells[0,i+1] := IntToStr(i)
else
Cells[0,i+1] := '*'+IntToStr(i);
case StrToInt(S1[0]) of
0: Cells[1,i+1] := '通用密码';
1: Cells[1,i+1] := '卡';
2: Cells[1,i+1] := '密码';
3: Cells[1,i+1] := '卡+密码';
4: Cells[1,i+1] := '副卡';
5: Cells[1,i+1] := '副密码';
6: Cells[1,i+1] := '副卡+密码';
7: Cells[1,i+1] := '主卡';
8: Cells[1,i+1] := '主密码';
9: Cells[1,i+1] := '主卡+密码';
10: Cells[1,i+1] := '非法卡';
11: Cells[1,i+1] := '密码错';
12: Cells[1,i+1] := '超有效期';
13: Cells[1,i+1] := '时间错';
14: Cells[1,i+1] := '潜回';
15: Cells[1,i+1] := '没关门';
16: Cells[1,i+1] := '撬门';
17: Cells[1,i+1] := '按钮';
20: Cells[1,i+1] := '报警信号';
end;
case STrToInt(S1[1]) of
1: Cells[2,i+1] := '左门';
2: Cells[2,i+1] := '右门';
end;
Cells[3,i+1] := Trim(S1[2]);
Cells[4,i+1] := '20'+Copy(S1[3],1,6);
Cells[5,i+1] := Copy(S1[3],7,4);
end;
end else
begin
if ret<0 then SetLamp(1);
Break;
end;
end;
end;
Screen.Cursor := crDefault;
end;
procedure TASC2SetupForm.ForceReadRecordButtonClick(Sender: TObject);
var
i,k,ptr,cnt,ret: Smallint;
S1: array[0..3] of string;
begin
Screen.Cursor := crHourglass;
if Isdigit(RecAddrEdit.Text) and IsDigit(RecReadCountEdit.Text) then
begin
stopprocess := False;
ptr := StrToInt(RecAddrEdit.Text);
cnt := StrToInt(RecReadCountEdit.Text);
for i:=ptr to ptr+cnt-1 do
begin
Application.ProcessMessages;
if stopprocess then
begin
Screen.Cursor := crDefault;
Exit;
end;
SetLamp(2);
for k:=0 to 3 do S1[k] := StringOfChar(' ',16);
ret := ascGetRecordForce(hComDev,1,devid,i,S1[0],S1[1],S1[2],S1[3]);
if ( ret=0 ) or ( ret=2 ) then
begin
SetLamp(3);
with RecordStringGrid do
begin
if ret=0 then
Cells[0,i+1] := IntToStr(i)
else
Cells[0,i+1] := '*'+IntToStr(i);
case StrToInt(S1[0]) of
0: Cells[1,i+1] := '通用密码';
1: Cells[1,i+1] := '卡';
2: Cells[1,i+1] := '密码';
3: Cells[1,i+1] := '卡+密码';
4: Cells[1,i+1] := '副卡';
5: Cells[1,i+1] := '副密码';
6: Cells[1,i+1] := '副卡+密码';
7: Cells[1,i+1] := '主卡';
8: Cells[1,i+1] := '主密码';
9: Cells[1,i+1] := '主卡+密码';
10: Cells[1,i+1] := '非法卡';
11: Cells[1,i+1] := '密码错';
12: Cells[1,i+1] := '超有效期';
13: Cells[1,i+1] := '时间错';
14: Cells[1,i+1] := '潜回';
15: Cells[1,i+1] := '没关门';
16: Cells[1,i+1] := '撬门';
17: Cells[1,i+1] := '按钮';
20: Cells[1,i+1] := '报警信号';
end;
case STrToInt(S1[1]) of
1: Cells[2,i+1] := '左门';
2: Cells[2,i+1] := '右门';
end;
Cells[3,i+1] := Trim(S1[2]);
Cells[4,i+1] := '20'+Copy(S1[3],1,6);
Cells[5,i+1] := Copy(S1[3],7,4);
end;
end else
begin
SetLamp(1);
Break;
end;
end;
end;
Screen.Cursor := crDefault;
end;
procedure TASC2SetupForm.StopButtonClick(Sender: TObject);
begin
stopprocess := True;
end;
// 发卡
procedure TASC2SetupForm.ValidCardClearButtonClick(Sender: TObject);
var
i,j: Smallint;
begin
Screen.Cursor := crHourglass;
ValidCardCntEdit.Text := '0';
with ValidCardStringGrid do
begin
for i:=1 to 193-1 do
for j:= 0 to 1 do
Cells[j,i] := ''
end;
Screen.Cursor := crDefault;
end;
procedure TASC2SetupForm.ValidCardReadButtonClick(Sender: TObject);
var
i,ret: Smallint;
S: string;
begin
i := 1;
ret := 0;
while ret=0 do
begin
SetLamp(2);
S := STringOfChar(' ',8);
ret := ascGetValidCard(hComDev,1,devid,S);
case ret of
0:
begin
ValidCardStringGrid.Cells[0,i] := IntToStr(i);
ValidCardStringGrid.Cells[1,i] := S;
Inc(i);
SetLamp(3);
end;
1: SetLamp(2);
else SetLamp(1);
end;
end;
ValidCardCntEdit.Text := IntToStr(i-1);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -