一個很不錯的Delphi讀取和寫入IC卡的模塊類,可方便讓Delphi開發者調用,代碼注釋清楚,容易理解,下面與大家分享具體代碼:
001
unit U_Card;
002
{* 作者:肖景峰
003
*開發時間:2005-10-30
004
*模塊作用:對讀卡器進行處理
005
}
006
interface
007
{1} //打開設備,進行口令驗正
008
function Open_Card():Boolean;
009
010
{2} // 關閉設備
011
function CLose_Card():boolean;
012
{3} // 寫卡,對卡進行寫操作
013
function Write_card(COntent:pchar):boolean;
014
{4}//對卡進行讀操作
015
function Read_Card():string;
016
{5} //寫卡時內容組織
017
function Content(aa:string):string;
018
{6}//卡片比效函數
019
function Card_Compare():boolean;
020
{7}//是否有卡片在驅動器裡
021
function Check_card():Boolean;
022
implementation
023
uses u_public_define,dialogs,sysutils,StrUtils;
024
{1} //打開設備,進行口令驗正
025
function Open_Card():Boolean;
026
var
027
Status:integer;
028
aa:array[0..2]of char;
029
begin
030
g_icdev:=auto_init(0,9600);
031
g_st:=setsc_md(g_icdev,1);
032
033
aa:=chr(0)+chr(0)+chr(0);
034
// g_icdev:=auto_init(0,9600);
035
G_st := cmp_dvsc(G_icdev, 3, aa);
036
037
G_st:=setsc_md(G_icdev, 0);
038
039
G_st:=get_status(G_icdev, @Status);
040
If G_st < 0 Then
041
begin
042
showmessage('驅動器有錯誤!請檢查設備後繼續使用!');
043
OPen_Card:= False;
044
// G_st :=ic_exit(G_icdev);
045
Exit;
046
end;
047
OPen_Card := True;
048
end;
049
{2} // 關閉設備
050
function CLose_Card():boolean;
051
begin
052
G_st := ic_exit(G_icdev);
053
If G_st < 0 Then
054
begin
055
showmessage('關閉設備時有誤,請重新啟動系統');
056
close_card:=false;
057
exit;
058
end;
059
close_card:=true;
060
//
061
end;
062
{3} // 寫卡,對卡進行寫操作
063
function Write_card(COntent:pchar):boolean;
064
begin
065
G_st := swr_eeprom(G_icdev, 0, 384, Content);
066
If G_st <> 0 Then
067
begin
068
showmessage('寫卡時出錯,請檢查後使用!');
069
Write_card := False;
070
exit;
071
end;
072
073
Write_card:= True;
074
//
075
end;
076
{4}//對卡進行讀操作
077
function Read_Card():string;
078
var
079
Cent:array[0..383] of char;
080
tent:array[0..383] of char;
081
I,j:integer;
082
DD:string;
083
begin
084
G_st:= srd_eeprom(G_icdev, 0, 383, Cent);
085
If G_st < 0 Then
086
begin
087
showmessage('讀卡時出錯,請檢查後使用!');
088
Exit;
089
end;
090
For i := 0 To 383 do
091
begin
092
If i > 13 Then
093
begin
094
for j:=0 to 12 do
095
begin
096
dd:=dd+cent[j];
097
end;
098
Read_Card:= dd;
099
Exit;
100
end;
101
end;
102
end;
103
{5} //寫卡時內容組織
104
function Content(aa:string):string;
105
begin
106
//
107
end;
108
{6}//卡片比效函數
109
function Card_Compare():boolean;
110
begin
111
//
112
end;
113
{7}//
114
function check_card():boolean;
115
var
116
Status:integer;
117
aa:array[0..2]of char;
118
begin
119
status:=0;
120
G_st:=get_status(G_icdev, @Status);
121
122
If Status =0 Then
123
begin
124
//showmessage('請插入卡後使用!');
125
check_Card:=False;
126
// G_st := ic_exit(G_icdev);
127
Exit;
128
End;
129
check_Card := True;
130
end;
131
end.
由此代碼可擴展一個員工考勤系統或資料信息錄入系統,信息社會IC卡的應用十分廣泛,讀卡和寫卡操作是必不可少的,因此本模塊上有很好的實用價值。