一個很不錯的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卡的應用十分廣泛,讀卡和寫卡操作是必不可少的,因此本模塊上有很好的實用價值。