📄 scdlldemounit.pas
字号:
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 + -