⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asc2setup.pas

📁 朗铭科技Ls-810 门禁控制器接口 delphi源程
💻 PAS
📖 第 1 页 / 共 4 页
字号:
        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 + -