| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- unit rfexamp;
- interface
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, Buttons;
- type
- TForm1 = class(TForm)
- ListBox1: TListBox;
- Button4: TButton;
- Button3: TButton;
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure Button3Click(Sender: TObject);
- procedure Button4Click(Sender: TObject);
-
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- icdev: longint;
- snr:longint;
- n1key,n2key,keya,keyb,wdata,sendblock,B0,B1,B2,B3,Bk:pchar;
- st,sector,block,loadmode:smallint;
- status:Array[0..18]of Char;
- databuff:Array[0..15]of Char;
- ack:Array[0..255]of Char;
- {a example for your to try using .dll. add_s return i+1}
- function add_s(i: smallint): smallint; stdcall;
- far;external 'mwrf32.dll' name 'add_s';
- {comm function.}
- function rf_init(port: smallint;baud:longint): longint; stdcall;
- far;external 'mwrf32.dll' name 'rf_init';
- function rf_exit(icdev: longint):smallint;stdcall;
- far;external 'mwrf32.dll'name 'rf_exit';
- function rf_encrypt(key:pchar;ptrsource:pchar;msglen:smallint;ptrdest:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_encrypt';
- function rf_decrypt(key:pchar;ptrsource:pchar;msglen:smallint;ptrdest:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_decrypt';
- //
- function rf_card(icdev:longint;mode:smallint;snr:pChar):smallint;stdcall;
- far;external 'mwrf32.dll'name 'rf_card';
- function rf_load_key(icdev:longint;mode,secnr:smallint;nkey:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_load_key';
- function rf_load_key_hex(icdev:longint;mode,secnr:smallint;nkey:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_load_key_hex';
- function rf_authentication(icdev:longint;mode,secnr:smallint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_authentication';
- //
- function rf_read(icdev:longint;adr:smallint;data:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_read';
- function rf_read_hex(icdev:longint;adr:smallint;data:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_read_hex';
- function rf_write(icdev:longint;adr:smallint;data:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_write';
- function rf_write_hex(icdev:longint;adr:smallint;data:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_write_hex';
- function rf_HL_writehex(icdev:longint;adr:smallint;snr:longint;data:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_HL_writehex';
- function rf_halt(icdev:longint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_halt';
- function rf_reset(icdev:longint;msec:smallint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_reset';
- //M1 CARD
- function rf_initval(icdev:longint;adr:smallint;value:longint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_initval';
- function rf_readval(icdev:longint;adr:smallint;value:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_readval';
- function rf_increment(icdev:longint;adr:smallint;value:longint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_increment';
- function rf_decrement(icdev:longint;adr:smallint;value:longint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_decrement';
- function rf_restore(icdev:longint;adr:smallint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_restore';
- function rf_transfer(icdev:longint;adr:smallint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_transfer';
- function rf_check_write(icdev,snr:longint;adr,authmode:smallint;data:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_check_write';
- function rf_check_writehex(icdev,snr:longint;adr,authmode:smallint;data:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_check_writehex';
- //M1 CARD HIGH FUNCTION
- function rf_HL_initval(icdev:longint;mode:smallint;secnr:smallint;value:longint;snr:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_HL_initval';
- function rf_HL_increment(icdev:longint;mode:smallint;secnr:smallint;value,snr:longint;svalue,ssnr:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_HL_increment';
- function rf_HL_decrement(icdev:longint;mode:smallint;secnr:smallint;value:longint;snr:longint;svalue,ssnr:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_HL_decrement';
- function rf_HL_write(icdev:longint;mode,adr:smallint;ssnr,sdata:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_HL_write';
- function rf_HL_read(icdev:longint;mode,adr:smallint;snr:longint;sdata,ssnr:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_HL_read';
- function rf_changeb3(icdev:longint;Adr:smallint;keyA:pchar;B0:smallint;B1:smallint;B2:smallint;B3:smallint;Bk:smallint;KeyB:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_changeb3';
- //DEVICE
- function rf_get_status(icdev:longint;status:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_get_status';
- function rf_beep(icdev:longint;time:smallint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_beep';
- function rf_ctl_mode(icdev:longint;ctlmode:smallint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_ctl_mode';
- function rf_disp_mode(icdev:longint;mode:smallint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_disp_mode';
- function rf_disp8(icdev:longint;len:longint;disp:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_disp8';
- function rf_disp(icdev:longint;pt_mode:smallint;disp:longint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_disp';
- //
- //寻卡
- function rf_request(icdev:longint;find_mode:smallint;cardtype:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_request';
- function rf_anticoll(icdev:longint;find_mode:pchar;snr:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_anticoll';
- function rf_select(icdev:longint;snr:longint;size:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_select';
- function rf_settimehex(icdev:longint;dis_time:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_settimehex';
- function rf_gettimehex(icdev:longint;dis_time:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_gettimehex';
- function rf_swr_eeprom(icdev:longint;offset,len:smallint;data:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_swr_eeprom';
- function rf_srd_eeprom(icdev:longint;offset,len:smallint;data:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_srd_eeprom';
- //ML CARD
- function rf_authentication_2(icdev:longint;mode,keyNum,secnr:smallint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_authentication_2';
- function rf_initval_ml(icdev:longint;value:longint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_initval_ml';
- function rf_readval_ml(icdev:longint;rvalue:pchar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_readval_ml';
- function rf_decrement_transfer(icdev:longint;adr:smallint;value:longint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_decrement_transfer';
- function rf_sam_rst(icdev:longint;baud:smallint;samack:pChar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_sam_rst';
- function rf_sam_trn(icdev:longint;samblock,recv:pChar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_sam_trn';
- function rf_sam_off(icdev:longint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_sam_off';
- function rf_cpu_rst(icdev:longint;baud:smallint;cpuack:pChar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_cpu_rst';
- function rf_cpu_trn(icdev:longint;cpublock,recv:pChar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_cpu_trn';
- function rf_pro_rst(icdev:longint;_Data:pChar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_pro_rst';
- function rf_pro_trn(icdev:longint;problock,recv:pChar):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_pro_trn';
- function rf_pro_halt(icdev:longint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'rf_pro_halt';
- function hex_a(hex,a:pChar;length:smallint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'hex_a';
- function a_hex(a,hex:pChar;length:smallint):smallint;stdcall;
- far;external 'mwrf32.dll' name 'a_hex';
- implementation
- {$R *.DFM}
- procedure TForm1.Button4Click(Sender: TObject);
- begin
- icdev:=rf_init(0,115200); //串口1 波特率115200
- if icdev<=0 then
- listbox1.Items.Add('Init error');
- st:=rf_get_status(icdev,@status);
- if st<>0 then
- listbox1.Items.Add('Init ERR')
- else
- listbox1.Items.Add('Init OK');
- listbox1.Items.Add('Hard Ver: '+ status);
- n1key:='ffffffffffff';
- n2key:='ffffffffffff';
- for block:=0 to 15 do
- begin
- st:=rf_load_key_hex(icdev,0,block,n1key); //加载A密码
- st:=rf_load_key_hex(icdev,4,block,n2key); //加载B密码
- end;
- if st<>0 then
- listbox1.items.add('load keyhex error')
- else
- listbox1.items.add('load keyhex Ok');
- rf_beep(icdev,50);
- end;
- procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
- begin
- st:=rf_exit(icdev);
- end;
- procedure TForm1.Button3Click(Sender: TObject);
- var
- value,i:longint;
- cardtype:longint;
- size:pchar;
- begin
- st:=rf_card(icdev,0,@snr); //寻卡
- if st<>0 then
- listbox1.items.add('card snr error')
- else
- listbox1.items.add('card snr Ok:'+inttostr(snr));
- wdata:='ffffffffffffff078069ffffffffffff'; //要改写的密码块,前12位为A密码 ,后12位为B密码 ,中间ff078069为控制块
- sector:= 2; //扇区
- block:=sector*4+3; //密码块
- st:=rf_authentication(icdev,0,sector); //以A密码验证
- //st:=rf_authentication(icdev,4,sector); //以B密码验证
- if st<>0 then
- listbox1.items.add(IntToStr(sector)+'密码验证不成功!!!!!!!!!!!');
- //else
- //listbox1.items.add(IntToStr(sector)+'密码验证成功 Ok');
- listBox1.ItemIndex:=ListBox1.Items.Count-1;
- st:=rf_write_hex(icdev,block,wdata);
- if st<>0 then
- listbox1.items.add(IntToStr(sector)+'密码修改不成功!!!!!!!!!!!')
- else
- listbox1.items.add(IntToStr(sector)+'扇区 change key Ok');
- //rf_beep(icdev,10); //beep 200ms
- listBox1.ItemIndex:=ListBox1.Items.Count-1;
- rf_beep(icdev,50);
- end;
- end.
|