?? unit1.pas
字號(hào):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function MCS_LED(_bOnOff:Byte):Word;
StdCall external 'MCS_SR.dll';
function MCS_InitComm(_bPort:BYTE;_dwCommBaudRate:DWORD):Word;
StdCall external 'MCS_SR.dll';
function MCS_ErrorMsg(_wErrNo:WORD;_bErrMsg:PCHAR):Word;
StdCall external 'MCS_SR.dll';
function MCS_ExitComm():Word;
StdCall external 'MCS_SR.dll';
function MCS_Load_Key(_bMode,_bSecNr,_bNKey1,_bNKey2,_bNKey3,_bNKey4,_bNKey5,_bNKey6:Byte):Word;
StdCall external 'MCS_SR.dll';
function MCS_Config(_bMode,_bBaud:Byte):Word;
StdCall external 'MCS_SR.dll';
function MCS_Request(_bMode:Byte;_wTagType:PWORD ):Word;
StdCall external 'MCS_SR.dll';
function MCS_Buzzer(_bOnOff:Byte):Word;
StdCall external 'MCS_SR.dll';
function MCS_Anticoll(_bBcnt:Byte;_dwSnr:PDWORD):Word;
StdCall external 'MCS_SR.dll';
function MCS_Select(_dwSnr:DWORD;_bSize:PCHAR):Word;
StdCall external 'MCS_SR.dll';
function MCS_Authentication(_bMode,_bSecNr:Byte):Word;
StdCall external 'MCS_SR.dll';
function MCS_SetStringMode(_bStringMode:Byte):Word;
StdCall external 'MCS_SR.dll';
function MCS_Read(_bAdr:Byte;_bData:pChar):Word;
StdCall external 'MCS_SR.dll';
procedure TForm1.Button1Click(Sender: TObject);
var
ret,_TagType,icc_port :integer;
_lno: longint;
_BsIZE,Cardno: Pchar;
mess:pchar;
label lbl_end;
begin
GetMem(mess,50);
GetMem(_Bsize,50);
GetMem(Cardno,50);
//搜索天線范圍內(nèi)是否有Mifare卡存在
ret := MCS_Request(1,@_TagType);
if ret<>0 then
begin
MCS_ErrorMsg(ret,mess);
ret:=MCS_ExitComm();
mcs_led(1);
Showmessage('Request error'+mess);
goto lbl_end;
end;
//控制讀寫器的蜂鳴器的狀態(tài)
ret := mcs_buzzer(1);
if ret<>0 then
begin
MCS_ErrorMsg(ret,mess);
mcs_buzzer(0);
ret := MCS_ExitComm();
mcs_led(1);
Showmessage('buzzer error'+mess);
goto lbl_end;
end;
//獲得天線范圍內(nèi)的一張卡的卡號(hào)
ret := MCS_Anticoll(0,@_lno);
if ret<>0 then
begin
MCS_ErrorMsg(ret,mess);
ret:=MCS_ExitComm();
mcs_buzzer(0);
mcs_led(1);
Showmessage('Anticoll error'+mess);
goto lbl_end;
end;
//選定天線范圍內(nèi)指定卡號(hào)的卡片,_bsize為函數(shù)返回的卡片容量大小
ret:=mcs_select(_lno,_bsize);
if ret<>0 then
begin
MCS_ErrorMsg(ret,mess);
mcs_buzzer(0);
ret := MCS_ExitComm();
mcs_led(1);
Showmessage('SELECT error'+mess);
goto lbl_end;
end;
//進(jìn)行讀寫器控制模塊與Mifare卡的認(rèn)證
//對(duì)第一區(qū)以kay A進(jìn)行認(rèn)證(0為讀寫認(rèn)證,1為讀認(rèn)證)
ret:=MCS_Authentication(0,1);
if ret<>0 then
begin
MCS_ErrorMsg(ret,mess);
Showmessage('Authentication error'+mess);
mcs_buzzer(0);
mcs_led(1);
mcs_exitcomm();
goto lbl_end;
end;
//設(shè)置隨后操作中的字符串傳遞方式為asc方式(0為asc,1為hex,幫助有錯(cuò))
ret:=MCS_SetStringMode(0);
if ret<>0 then
begin
MCS_ErrorMsg(ret,mess);
Showmessage('SetStringMode error'+mess);
mcs_buzzer(0);
mcs_led(1);
mcs_exitcomm();
goto lbl_end;
end;
//從卡片內(nèi)的指定塊地址讀取卡號(hào)字符串,必須先為CardNo分配16個(gè)字節(jié)以上的空間,以訪溢出
// fillchar(CardNo,16,ord('*'));
ret := MCS_Read(4,CardNo); //4即表示讀第一區(qū)的第一塊
if ret<>0 then
begin
MCS_ErrorMsg(ret,mess);
Showmessage('read error'+mess);
mcs_buzzer(0);
mcs_led(1);
mcs_exitcomm();
goto lbl_end;
end;
Strcopy(CardNo,Pchar(Copy(CardNo,1,5))); //卡號(hào)為5位
lbl_end:
Showmessage(cardno);
FreeMem(MESS);
FreeMem(_Bsize);
FreeMem(Cardno);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
mcs_buzzer(0);
mcs_led(1);
mcs_exitcomm();
end;
procedure TForm1.Button3Click(Sender: TObject);
var
ret,_TagType,icc_port :integer;
_lno: longint;
_BsIZE,Cardno: Pchar;
mess:pchar;
label lbl_end;
begin
GetMem(mess,50);
GetMem(_Bsize,50);
GetMem(Cardno,50);
// 讀卡流程
icc_port := 1; //讀卡器端口號(hào),從0開始
//每個(gè)區(qū)的最后一個(gè)塊前后6字節(jié)為密碼區(qū),中間4個(gè)字節(jié)為讀寫權(quán)限區(qū)(固定為FF078069,16進(jìn)制)
Mcs_Led(2); //指示燈變紅
ret := 0;
//初使化端口
ret := MCS_InitComm(ICC_PORT,115200);
if ret<>0 then
begin
MCS_ErrorMsg(ret,mess);
mcs_led(1);
ret := MCS_ExitComm();
Showmessage('init_comm error'+mess);
goto lbl_end;
end;
//將第一區(qū)密鑰下載至讀寫器控制模塊內(nèi),初使密碼都為255,可自行更改密碼
ret := mcs_load_key(0,1,255,255,255,255,255,255);
if ret<>0 then
begin
MCS_ErrorMsg(ret,mess);
Showmessage('Load key error'+mess);
goto lbl_end;
end;
ret:=mcs_load_key(4,1,255,255,255,255,255,255);
if ret<>0 then
begin
MCS_ErrorMsg(ret,mess);
Showmessage('Load key error'+mess);
goto lbl_end;
end;
//設(shè)置卡片與讀寫器控制模塊之間的通訊模式及速率
ret:=MCS_Config(198,14);
if ret<>0 then
begin
MCS_ErrorMsg(ret,mess);
mcs_led(1);
ret := MCS_ExitComm();
Showmessage('config error'+mess);
goto lbl_end;
end;
lbl_end:
FreeMem(MESS);
FreeMem(_Bsize);
FreeMem(Cardno);
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -