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

📄 scdlldemounit.pas

📁 Delphi源码实现的SC1000非接触式IC卡读写器
💻 PAS
📖 第 1 页 / 共 2 页
字号:
          Memo1.Lines.Add('无法连接读写器,请检查通讯线是否已连接......');
          Exit;
     end;
}    //ClosePort(rHandle);
     for i:= 1 to 9 do
     begin
          Memo1.Lines.Add( '正在连接读写器,请稍候...... ' );
          iRe:=InitPort(i,rHandle);
          Application.ProcessMessages;
          iRe := SC_Beep(rHandle,0,2);
{          if iRe <> 0 then
          Begin
               ClosePort(rHandle);
          end;
}
          if iRe = 0 then
          Begin
               Memo1.Lines.Add( '打开COM'+intToStr(i)+' 成功!' );
               break;
          end;

     end;

     if iRe <> 0 then
     Begin
          Memo1.Lines.Add('无法连接读写器,请检查通讯线是否已连接......');
          Exit;
     end;
     
     {
     if iRE = 0 then
     Begin
          Memo1.Lines.Add( '打开COM '+' 成功!' );
     End;
     }
     iRe := SC_Request(rHandle); //寻卡

     if iRe = 1 then
     Begin
          Memo1.Lines.Add( '读写器上无卡,请放卡......' );
          //Application.MessageBox('读写器上无卡,请放卡......','温馨提示',MB_OK+MB_ICONWARNING);
          Exit;
     end;

     if iRe = 4 then
     Begin
          Memo1.Lines.Add( '卡型为: S50 (8K位) 卡' );
     end;

     if iRe = 2 then
     Begin
          Memo1.Lines.Add( '卡型为: S70 (32K位) 卡' );
     end;

     GetMem(pSNR,16);
     iRe:=SC_GetSnr(rHandle,pSNR);
     Memo1.Lines.Add( '序列号:   '+String(pSNR));
     FreeMem(pSNR,16);

     iRe:=SC_SelectSnr(rHandle,pSNR);
     //Memo1.Lines.Add( IntToStr(iRe) +'   '+String(pSNR));

     iSector := (StrToInt(BlockNoCBB.Text) div 4 );  //SectorCBB.ItemIndex ;
     iMode := 60;
     pKey := Pchar('FFFFFFFFFFFF');
     iRe:=SC_EncryptAuth(rHandle, iSector, iMode, pKey);
     if iRe = 0 then
     Begin
          Memo1.Lines.Add('核对 '+IntTostr(iSector)+' 扇区密钥 FFFFFFFFFFFF 成功!');
     end else begin
          Memo1.Lines.Add('核对 '+IntTostr(iSector)+' 扇区密钥 FFFFFFFFFFFF 失败!');
     end;
     
     GetMem(pData,128);
     iRe := SC_ENRead(rHandle,StrToInt(BlockNoCBB.text),pData);
     if iRe =0 then
     Begin
          Memo1.Lines.Add(BlockNoCBB.Text+ ' 块数据:'+String(pData) );
          BlockDataCBB.Text := String(pData);
          //BlockDataCBB.Refresh;
          Label18.Caption := ' 当前字符数:' + IntToStr(Length(BlockDataCBB.Text));
          if Length(BlockDataCBB.Text)= 32 then
          Begin
               Label18.Font.Color := clGreen;
          end else Begin
               Label18.Font.Color := clRed;
          end;
     end;     
     FreeMem(pData,128);

    // ClosePort(rHandle);
end;

procedure TDemoFrm.WriteBBtnClick(Sender: TObject);
Var
   pData,pKey:Pchar;
   i, iSector,iMode :integer;
   icom:longint;
begin

     if BlockNoCBB.Text = '0' then
     Begin
          Memo1.Lines.Add('0块为只读 '+ IntToStr(iRe) );
          Exit;
     end;

     if Length(BlockDataCBB.Text) <> 32 then
     Begin
          Memo1.Lines.Add('块数据必须为0~9 A~F 个字节'+ IntToStr(iRe) );
     end;

     Memo1.Lines.Add('');
{
     iRe:=InitPort(ComPortCBB.ItemIndex +1,rHandle);

     iRe := SC_Beep(rHandle,0,StrToInt(Edit2.Text));
     if iRe <> 0 then
     Begin
          Memo1.Lines.Add('无法连接读写器,请检查通讯线是否已连接......');
          Exit;
     end;
}    //ClosePort(rHandle);
     for i:= 1 to 9 do
     begin
          Memo1.Lines.Add( '正在连接读写器,请稍候...... ' );
          iRe:=InitPort(i,rHandle);
          Application.ProcessMessages;
          iRe := SC_Beep(rHandle,0,2);
{          if iRe <> 0 then
          Begin
               ClosePort(rHandle);
          end;
}
          if iRe = 0 then
          Begin
               Memo1.Lines.Add( '打开COM'+intToStr(i)+' 成功!' );
               break;
          end;

     end;

     if iRe <> 0 then
     Begin
          Memo1.Lines.Add('无法连接读写器,请检查通讯线是否已连接......');
          Exit;
     end;
     
     {
     if iRE = 0 then
     Begin
          Memo1.Lines.Add( '打开COM '+' 成功!' );
     End;
     }
     iRe := SC_Request(rHandle); //寻卡

     if iRe = 1 then
     Begin
          Memo1.Lines.Add( '读写器上无卡,请放卡......' );
          //Application.MessageBox('读写器上无卡,请放卡......','温馨提示',MB_OK+MB_ICONWARNING);
          Exit;
     end;

     if iRe = 4 then
     Begin
          Memo1.Lines.Add( '卡型为: S50 (8K位) 卡' );
     end;

     if iRe = 2 then
     Begin
          Memo1.Lines.Add( '卡型为: S70 (32K位) 卡' );
     end;

     GetMem(pSNR,16);
     iRe:=SC_GetSnr(rHandle,pSNR);
     Memo1.Lines.Add( '序列号:   '+String(pSNR));
     FreeMem(pSNR,16);

     iRe:=SC_SelectSnr(rHandle,pSNR);
     //Memo1.Lines.Add( IntToStr(iRe) +'   '+String(pSNR));

     iSector := (StrToInt(BlockNoCBB.Text) div 4 );  //SectorCBB.ItemIndex ;
     iMode := 60;
     pKey := Pchar('FFFFFFFFFFFF');
     iRe:=SC_EncryptAuth(rHandle, iSector, iMode, pKey);
     if iRe = 0 then
     Begin
          Memo1.Lines.Add('核对 '+IntTostr(iSector)+' 扇区密钥 FFFFFFFFFFFF 成功!');
     end else begin
          Memo1.Lines.Add('核对 '+IntTostr(iSector)+' 扇区密钥 FFFFFFFFFFFF 失败!');
     end;

     iRe := SC_ENWrite(rHandle,StrToInt(BlockNoCBB.text), Pchar(BlockDataCBB.text) );
     if iRe = 0 then
     Begin
          Memo1.Lines.Add(BlockNoCBB.text+'块,写卡完成 ' );
     end;

     GetMem(pData,128);
     iRe := SC_ENRead(rHandle,StrToInt(BlockNoCBB.text),pData);
     if iRe =0 then
     Begin
          Memo1.Lines.Add('写如数据为: '+ String(pData) );
     end;


end;

procedure TDemoFrm.BlockDataCBBChange(Sender: TObject);
begin
     Label18.Caption := ' 当前字符数:' + IntToStr(Length(BlockDataCBB.Text));
     if Length(BlockDataCBB.Text)= 32 then
     Begin
          Label18.Font.Color := clGreen;
     end else Begin
          Label18.Font.Color := clRed;     
     end;  
end;

procedure TDemoFrm.BlockDataCBBKeyPress(Sender: TObject; var Key: Char);
begin
     if Not (Key in ['0'..'9','A'..'F','a'..'f',#8]) Then Key:=#0;
end;

procedure TDemoFrm.BitBtn2Click(Sender: TObject);
Var
   i,iMode:integer;
   pKey:pchar;
begin

     for i:= 1 to 9 do
     begin
          Memo1.Lines.Add( '正在连接读写器,请稍候...... ' );
          iRe:=InitPort(i,rHandle);
          Application.ProcessMessages;
          iRe := SC_Beep(rHandle,0,2);

          if iRe = 0 then
          Begin
               Memo1.Lines.Add( '打开COM'+intToStr(i)+' 成功!' );
               break;
          end;

     end;

     if iRe <> 0 then
     Begin
          Memo1.Lines.Add('无法连接读写器,请检查通讯线是否已连接......');
          Exit;
     end;
     
     iRe := SC_Request(rHandle); //寻卡

     if iRe = 1 then
     Begin
          Memo1.Lines.Add( '读写器上无卡,请放卡......' );
          //Application.MessageBox('读写器上无卡,请放卡......','温馨提示',MB_OK+MB_ICONWARNING);
          Exit;
     end;

     if iRe = 4 then
     Begin
          Memo1.Lines.Add( '卡型为: S50 (8K位) 卡' );
     end;

     if iRe = 2 then
     Begin
          Memo1.Lines.Add( '卡型为: S70 (32K位) 卡' );
     end;

     GetMem(pSNR,16);
     iRe:=SC_GetSnr(rHandle,pSNR);
     Memo1.Lines.Add( '序列号:   '+String(pSNR));
     FreeMem(pSNR,16);

     iRe:=SC_SelectSnr(rHandle,pSNR);
     //Memo1.Lines.Add( IntToStr(iRe) +'   '+String(pSNR));
    iMode := 60;
    pKey := Pchar(Copy(OldkeyCBB.Text,1,12));
    iRe:=SC_EncryptAuth(rHandle, StrToInt(Trim(SectorNoCBB.Text)), iMode, pKey);
    if iRe =0 then
    Begin
         iRe := SC_EnChangekey(rHandle,StrToInt(SectorNoCBB.Text),Pchar(Copy(NewKeyCBB.text,1,12)) );
         if iRe = 0 then
         Begin
              Memo1.Lines.Add('修改密钥成功!');
         end else begin
              Memo1.Lines.Add('修改卡密钥失败!');
         end;
         
    end else Begin
         Memo1.Lines.Add('核对密钥错误!');
    end;

end;

procedure TDemoFrm.OldkeyCBBKeyPress(Sender: TObject; var Key: Char);
begin
      if Not (Key in ['0'..'9','A'..'F','a'..'f',#8]) Then Key:=#0;
end;

procedure TDemoFrm.NewKeyCBBKeyPress(Sender: TObject; var Key: Char);
begin
      if Not (Key in ['0'..'9','A'..'F','a'..'f',#8]) Then Key:=#0;
end;

procedure TDemoFrm.BlockNoCBBKeyPress(Sender: TObject; var Key: Char);
begin
     if Not (Key in ['0'..'9','A'..'F','a'..'f',#8]) Then Key:=#0;
end;

procedure TDemoFrm.DotCBBKeyPress(Sender: TObject; var Key: Char);
begin
     if Not (Key in ['0'..'9','A'..'F',#8]) Then Key:=#0;    
end;

procedure TDemoFrm.LEDCBBKeyPress(Sender: TObject; var Key: Char);
begin
     if Not (Key in ['0'..'9','A'..'F',#8]) Then Key:=#0;
end;

procedure TDemoFrm.SectorCBBKeyPress(Sender: TObject; var Key: Char);
begin
if Not (Key in ['0'..'9','A'..'F','a'..'f',#8]) Then Key:=#0;
end;

procedure TDemoFrm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
     if Not (Key in ['0'..'9','A'..'F','a'..'f',#8]) Then Key:=#0;
end;

procedure TDemoFrm.Label1Click(Sender: TObject);
begin
     ShellExecute(handle,nil,pchar('http://www.sino-card.com'),nil,nil,SW_shownormal); //shellapi 

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -