📄 unit4.~pas
字号:
mByteAry[Send_len] := Ic_Sector; //卡扇区
inc(Send_len);
mByteAry[Send_len] := Ic_Key; //认证密钥
inc(Send_len);
mByteAry[Send_len] := Auth_Mode;//认证方式
if RadioInAuth.Checked=true then
begin
len:=strTohex(Input_Keyt.Text,Hexstr);
for i:=0 to len-1 do
begin
inc(Send_len);
mByteAry[Send_len] :=Hexstr[i];
end;
end;
if RadioMaAuth.Checked=true then
begin
inc(Send_len);
mByteAry[Send_len] := E2rom_Sector.ItemIndex;
end;
SetLength(Send_Buff_Chang,100);
DataBuf_Change(mByteAry,Send_Buff_Chang,Send_len); //进行发送数据的调整
InitICcard_MSComm.Output :=Send_Buff_Chang; //发送命令
end;
procedure TInit_Rfcard.Close(Sender: TObject; var Action: TCloseAction);
begin
if InitICcard_MSComm.PortOpen =True then
InitICcard_MSComm.PortOpen :=False;
end;
procedure TInit_Rfcard.select_workClick(Sender: TObject);
var
Send_Len:byte;
mByteAry: array of byte;
Send_Buff_Chang:array of byte;
begin
Tishi.Caption:='请将卡片放在读卡器上!!!';
Tishi.Visible:=True;
//构造上位机报文
Send_len:=0;
SetLength(mByteAry,100);
mByteAry[Send_len] := $55; //上下行标志
inc(Send_len);
mByteAry[Send_len] := $00; //命令
SetLength(Send_Buff_Chang,100);
DataBuf_Change(mByteAry,Send_Buff_Chang,Send_len); //进行发送数据的调整
InitICcard_MSComm.Output :=Send_Buff_Chang; //发送命令
end;
procedure TInit_Rfcard.InitValueClick(Sender: TObject);
var
Send_Len:byte;
mByteAry: array of byte;
Send_Buff_Chang:array of byte;
buffer:pchar;
begin
//构造上位机报文
Send_len:=0;
SetLength(mByteAry,100);
mByteAry[Send_len] := $55; //上下行标志
inc(Send_len);
mByteAry[Send_len] := $02; //命令
inc(Send_len);
mByteAry[Send_len] := Ic_Sector;//卡扇区
inc(Send_len);
mByteAry[Send_len] := Ic_block; //块号
//------------------------------初始化值
GetMem(Buffer,10);
strcopy(buffer,pchar(init_value.EditText));
inc(Send_len);
mByteAry[Send_len] := byte((Buffer)^);
inc(Send_len);
mByteAry[Send_len] := byte((Buffer+1)^);
inc(Send_len);
mByteAry[Send_len] := byte((Buffer+2)^);
inc(Send_len);
mByteAry[Send_len] := byte((Buffer+3)^);
inc(Send_len);
mByteAry[Send_len] := not byte((Buffer)^);
inc(Send_len);
mByteAry[Send_len] := not byte((Buffer+1)^);
inc(Send_len);
mByteAry[Send_len] := not byte((Buffer+2)^);
inc(Send_len);
mByteAry[Send_len] := not byte((Buffer+3)^);
inc(Send_len);
mByteAry[Send_len] := byte((Buffer)^);
inc(Send_len);
mByteAry[Send_len] := byte((Buffer+1)^);
inc(Send_len);
mByteAry[Send_len] := byte((Buffer+2)^);
inc(Send_len);
mByteAry[Send_len] := byte((Buffer+3)^);
FreeMem(Buffer);
inc(Send_len);
mByteAry[Send_len] :=Ic_Sector*4 + Ic_block;
inc(Send_len);
mByteAry[Send_len] := not (Ic_Sector*4 + Ic_block);
inc(Send_len);
mByteAry[Send_len] := Ic_Sector*4 + Ic_block;
inc(Send_len);
mByteAry[Send_len] := not (Ic_Sector*4 + Ic_block);
//------------------------------
SetLength(Send_Buff_Chang,100);
DataBuf_Change(mByteAry,Send_Buff_Chang,Send_len); //进行发送数据的调整
InitICcard_MSComm.Output :=Send_Buff_Chang; //发送命令
end;
procedure TInit_Rfcard.RadioKeyaClick(Sender: TObject);
begin
Ic_Key :=$0A;
end;
procedure TInit_Rfcard.RadioKeybClick(Sender: TObject);
begin
Ic_Key :=$0B;
end;
procedure TInit_Rfcard.RadioInAuthClick(Sender: TObject);
begin
Auth_Mode:=$01;
Input_Keyt.Enabled:=true;
E2rom_Sector.Enabled:=false;
end;
procedure TInit_Rfcard.RadioMaAuthClick(Sender: TObject);
begin
Auth_Mode:=$02;
Input_Keyt.Enabled:=false;
E2rom_Sector.Enabled:=true;
end;
procedure TInit_Rfcard.Radio_Secot0Click(Sender: TObject);
begin
Radio_Secot0.Font.Color:=clRed;
Ic_Sector:=0;
end;
procedure TInit_Rfcard.Radio_Secot1Click(Sender: TObject);
begin
Radio_Secot1.Font.Color:=clRed;
Ic_Sector:=1;
end;
procedure TInit_Rfcard.Radio_Secot2Click(Sender: TObject);
begin
Radio_Secot2.Font.Color:=clRed;
Ic_Sector:=2;
end;
procedure TInit_Rfcard.Radio_Secot3Click(Sender: TObject);
begin
Radio_Secot3.Font.Color:=clRed;
Ic_Sector:=3;
end;
procedure TInit_Rfcard.Radio_Secot4Click(Sender: TObject);
begin
Radio_Secot4.Font.Color:=clRed;
Ic_Sector:=4;
end;
procedure TInit_Rfcard.Radio_Secot5Click(Sender: TObject);
begin
Ic_Sector:=5;
//Radio_Secot5.Font.Size:=10;
Radio_Secot5.Font.Color:=clRed;
end;
procedure TInit_Rfcard.Radio_Secot6Click(Sender: TObject);
begin
Radio_Secot6.Font.Color:=clRed;
Ic_Sector:=6;
end;
procedure TInit_Rfcard.Radio_Secot7Click(Sender: TObject);
begin
Radio_Secot7.Font.Color:=clRed;
Ic_Sector:=7;
end;
procedure TInit_Rfcard.Radio_Secot8Click(Sender: TObject);
begin
Radio_Secot8.Font.Color:=clRed;
Ic_Sector:=8;
end;
procedure TInit_Rfcard.Radio_Secot9Click(Sender: TObject);
begin
Radio_Secot9.Font.Color:=clRed;
Ic_Sector:=9;
end;
procedure TInit_Rfcard.Radio_Secot10Click(Sender: TObject);
begin
Radio_Secot10.Font.Color:=clRed;
Ic_Sector:=$A;
end;
procedure TInit_Rfcard.Radio_Secot11Click(Sender: TObject);
begin
Radio_Secot11.Font.Color:=clRed;
Ic_Sector:=$B;
end;
procedure TInit_Rfcard.Radio_Secot12Click(Sender: TObject);
begin
Radio_Secot12.Font.Color:=clRed;
Ic_Sector:=$C;
end;
procedure TInit_Rfcard.Radio_Secot13Click(Sender: TObject);
begin
Radio_Secot13.Font.Color:=clRed;
Ic_Sector:=$D;
end;
procedure TInit_Rfcard.Radio_Secot14Click(Sender: TObject);
begin
Radio_Secot14.Font.Color:=clRed;
Ic_Sector:=$E;
end;
procedure TInit_Rfcard.Radio_Secot15Click(Sender: TObject);
begin
Radio_Secot15.Font.Color:=clRed;
Ic_Sector:=$F;
end;
procedure TInit_Rfcard.Blcok0Click(Sender: TObject);
begin
Ic_block:=0;
end;
procedure TInit_Rfcard.Blcok1Click(Sender: TObject);
begin
Ic_block:=1;
end;
procedure TInit_Rfcard.Blcok2Click(Sender: TObject);
begin
Ic_block:=2;
end;
procedure TInit_Rfcard.Blcok3Click(Sender: TObject);
begin
Ic_block:=3;
end;
procedure TInit_Rfcard.Write_keyClick(Sender: TObject);
var
Send_len,len,i:byte;
mByteAry: array of byte;
Send_Buff_Chang:array of byte;
buffer:pchar;
Hexstr:array[0..12] of byte;
begin
//构造上位机报文
Send_len:=0;
SetLength(mByteAry,100);
mByteAry[Send_len] := $55; //上下行标志
inc(Send_len);
mByteAry[Send_len] := $05; //命令
inc(Send_len);
mByteAry[Send_len] := Ic_Sector;//卡扇区
//------------------------------密钥A
len:=strTohex(keyaEdit.Text,Hexstr);
for i:=0 to len-1 do
begin
inc(Send_len);
mByteAry[Send_len] :=Hexstr[i];
end;
//------------------------------存取控制
len:=strTohex(acces_edit.Text,Hexstr);
for i:=0 to len-1 do
begin
inc(Send_len);
mByteAry[Send_len] :=Hexstr[i];
end;
//------------------------------密钥b
len:=strTohex(keyb_edit.Text,Hexstr);
for i:=0 to len-1 do
begin
inc(Send_len);
mByteAry[Send_len] :=Hexstr[i];
end;
//--------------------------------------
SetLength(Send_Buff_Chang,100);
DataBuf_Change(mByteAry,Send_Buff_Chang,Send_len); //进行发送数据的调整
InitICcard_MSComm.Output :=Send_Buff_Chang; //发送命令
end;
procedure TInit_Rfcard.loadClick(Sender: TObject);
var
Send_len,len,i:byte;
mByteAry: array of byte;
Send_Buff_Chang:array of byte;
buffer:pchar;
Hexstr:array[0..12] of byte;
begin
//构造上位机报文
Send_len:=0;
SetLength(mByteAry,100);
mByteAry[Send_len] := $55; //上下行标志
inc(Send_len);
mByteAry[Send_len] := $06; //命令
inc(Send_len);
mByteAry[Send_len] := key_savesecotor.ItemIndex;//e2rom 扇区
if keya_load.Checked=true then
begin
inc(Send_len);
mByteAry[Send_len] := $0A;
end;
if keyb_load.Checked=true then
begin
inc(Send_len);
mByteAry[Send_len] := $0B;
end;
//------------------------------密钥
len:=strTohex(input_key_load.Text,Hexstr);
for i:=0 to len-1 do
begin
inc(Send_len);
mByteAry[Send_len] :=Hexstr[i];
end;
//------------------------------
SetLength(Send_Buff_Chang,100);
DataBuf_Change(mByteAry,Send_Buff_Chang,Send_len); //进行发送数据的调整
InitICcard_MSComm.Output :=Send_Buff_Chang; //发送命令
end;
procedure TInit_Rfcard.Add_valueClick(Sender: TObject);
var
Send_len,len,i:byte;
mByteAry: array of byte;
Send_Buff_Chang:array of byte;
buffer:pchar;
Hexstr:array[0..12] of byte;
begin
//构造上位机报文
Send_len:=0;
SetLength(mByteAry,100);
mByteAry[Send_len] := $55; //上下行标志
inc(Send_len);
mByteAry[Send_len] := $03; //命令
inc(Send_len);
mByteAry[Send_len] := Ic_Sector;//卡扇区
inc(Send_len);
mByteAry[Send_len] := Ic_block; //块号
if addvalue.Checked=true then
begin
inc(Send_len);
mByteAry[Send_len] := $01;
end;
if delvalue.Checked=true then
begin
inc(Send_len);
mByteAry[Send_len] := $02;
end;
//------------------------------
len:=strTohex(ad_value.Text,Hexstr);
for i:=0 to len-1 do
begin
inc(Send_len);
mByteAry[Send_len] :=Hexstr[i];
end;
SetLength(Send_Buff_Chang,100);
DataBuf_Change(mByteAry,Send_Buff_Chang,Send_len); //进行发送数据的调整
InitICcard_MSComm.Output :=Send_Buff_Chang; //发送命令
end;
procedure TInit_Rfcard.Write_valueClick(Sender: TObject);
var
Send_len,len,i:byte;
mByteAry: array of byte;
Send_Buff_Chang:array of byte;
buffer:pchar;
Hexstr:array[0..12] of byte;
begin
//构造上位机报文
Send_len:=0;
SetLength(mByteAry,100);
mByteAry[Send_len] := $55; //上下行标志
inc(Send_len);
mByteAry[Send_len] := $04; //命令
inc(Send_len);
mByteAry[Send_len] := Ic_Sector;//卡扇区
inc(Send_len);
mByteAry[Send_len] := Ic_block; //块号
if readvl.Checked=true then
begin
inc(Send_len);
mByteAry[Send_len] := $01;
end;
if writevl.Checked=true then
begin
inc(Send_len);
mByteAry[Send_len] := $02;
end;
//------------------------------
len:=strTohex(ad_value.Text,Hexstr);
for i:=0 to len-1 do
begin
inc(Send_len);
mByteAry[Send_len] :=Hexstr[i];
end;
SetLength(Send_Buff_Chang,100);
DataBuf_Change(mByteAry,Send_Buff_Chang,Send_len); //进行发送数据的调整
InitICcard_MSComm.Output :=Send_Buff_Chang; //发送命令
end;
procedure TInit_Rfcard.send_messgeClick(Sender: TObject);
begin
Init_Rfcard.OnDestroy(Sender);
end;
procedure TInit_Rfcard.Send_MessageClick(Sender: TObject);
var
Send_len,len,i:byte;
mByteAry: array of byte;
Send_Buff_Chang:array of byte;
buffer:pchar;
Hexstr:array[0..12] of byte;
at_string:string;
begin
//构造上位机报文
Send_len:=0;
SetLength(mByteAry,30);
mByteAry[Send_len] := byte('a');
inc(Send_len);
mByteAry[Send_len] := byte('t');
inc(Send_len);
mByteAry[Send_len] := byte('+');
inc(Send_len);
mByteAry[Send_len] := byte('c');
inc(Send_len);
mByteAry[Send_len] := byte('m');
inc(Send_len);
mByteAry[Send_len] := byte('g');
inc(Send_len);
mByteAry[Send_len] := byte('r');
inc(Send_len);
mByteAry[Send_len] := byte('=');
inc(Send_len);
mByteAry[Send_len] := byte('2');
inc(Send_len);
mByteAry[Send_len] := byte('3');
inc(Send_len);
mByteAry[Send_len] := $0d;
// mByteAry[Send_len] := $0d;
//------------------------------
// len:=strTohex(ad_value.Text,Hexstr);
// for i:=0 to len-1 do
// begin
// inc(Send_len);
// mByteAry[Send_len] :=Hexstr[i];
// end;
// SetLength(Send_Buff_Chang,100);
// DataBuf_Change(mByteAry,Send_Buff_Chang,Send_len); //进行发送数据的调整
// at_string:='AT\n';
InitICcard_MSComm.Output :=mByteAry; //发送命令
//sleep(10);
//InitICcard_MSComm.Output :=$0D;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -