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

📄 unit4.~pas

📁 tcp/ip通讯程序
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
    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 + -