aspTest.asp
3.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<HTML>
<HEAD><TITLE>测试网站</TITLE></HEAD>
<BODY>
<OBJECT id=rd codeBase=/comRD800.dll classid="clsid:638B238E-EB84-4933-B3C8-854B86140668"></OBJECT>
<script language=javascript>
function OnTest()
{
///////////////////////////////////////////////////////////////////////////////
//以下为非接触式读写器函数调用例子 for javascript
//注意个别函数(例如dc_disp_str)只有当设备满足要求(例如有数码显示)时才有效
//更详细的帮助可参照32位动态库对应的函数使用说明
///////////////////////////////////////////////////////////////////////////////
var st; //主要用于返回值
var lSnr; //本用于取序列号,但在javascript只是当成dc_card函数的一个临时变量
//初始化端口
//第一个参数为0表示COM1,为1表示COM2,以此类推
//第二个参数为通讯波特率
st = rd.dc_init(100, 115200);
if(st <= 0) //返回值小于等于0表示失败
{
alert("dc_init error!");
return;
}
alert("dc_init ok!");
//寻卡,能返回在工作区域内某张卡的序列号
//第一个参数一般设置为0,表示IDLE模式,一次只对一张卡操作
//第二个参数在javascript只是当成dc_card函数的一个临时变量,仅在vbscript中调用后能正确返回序列号
st = rd.dc_card(0, lSnr);
if(st != 0) //返回值小于0表示失败
{
alert("dc_card error!");
rd.dc_exit();
return;
}
alert("dc_card ok!");
alert(rd.get_bstrRBuffer); //序列号为rd.get_bstrRBuffer,一般有不可显示字符出现
alert(rd.get_bstrRBuffer_asc); //序列号十六进制ascll码字符串表示为rd.get_bstrRBuffer_asc
//将密码装入读写模块RAM中
//第一个参数为装入密码模式
//第二个参数为扇区号
rd.put_bstrSBuffer_asc = "FFFFFFFFFFFF"; //在调用dc_load_key必须前先设置属性rd.put_bstrSBuffer或rd.put_bstrSBuffer_asc
st = rd.dc_load_key(0, 0);
if(st != 0) //返回值小于0表示失败
{
alert("dc_load_key error!");
rd.dc_exit();
return;
}
alert("dc_load_key ok!");
//核对密码函数
//第一个参数为密码验证模式
//第二个参数为扇区号
st = rd.dc_authentication(0, 0);
if(st != 0) //返回值小于0表示失败
{
alert("dc_authentication error!");
rd.dc_exit();
return;
}
alert("dc_authentication ok!");
//向卡中写入数据,一次必须写一个块
//第一个参数为块地址
//在调用dc_write必须前先设置属性rd.put_bstrSBuffer或rd.put_bstrSBuffer_asc
rd.put_bstrSBuffer_asc = "31323334353637383930313233343536";
st = rd.dc_write(2);
if(st != 0) //返回值小于0表示失败
{
alert("dc_write error!");
rd.dc_exit();
return;
}
alert("dc_write ok!");
//读取卡中数据,一次必须读一个块
//第一个参数为块地址
//取出的数据放在属性放在rd.put_bstrSBuffer(正常表示)和rd.put_bstrSBuffer_asc(十六进制ascll码字符串表示)中
st = rd.dc_read(2);
if(st != 0) //返回值小于0表示失败
{
alert("dc_read error!");
rd.dc_exit();
return;
}
alert("dc_read ok!");
alert(rd.get_bstrRBuffer);
alert(rd.get_bstrRBuffer_asc);
//设置读写器时间
//04年 星期四 9月 9日 11点 20分 50秒
rd.put_bstrSBuffer_asc = "04040909112050";
st = rd.dc_settime();
if(st != 0) //返回值小于0表示失败
{
alert("dc_settime error!");
rd.dc_exit();
return;
}
alert("dc_settime ok!");
//在读写器的数码管上显示数字
rd.put_bstrSBuffer = "12345678\0"; //显示12345678,注意字符串后必须附加一个ascll为0x00结束符号;
st = rd.dc_disp_str();
if(st != 0) //返回值小于0表示失败
{
alert("dc_disp_str error!");
rd.dc_exit();
return;
}
alert("dc_disp_str ok!");
//蜂鸣
//第一个参数为蜂鸣时间,单位是10毫秒
st = rd.dc_beep(50);
if(st != 0) //返回值小于0表示失败
{
alert("dc_beep error!");
rd.dc_exit();
return;
}
alert("dc_beep ok!");
//关闭端口
st = rd.dc_exit();
if(st != 0) //返回值小于0表示失败
{
alert("dc_exit error!");
return;
}
alert("dc_exit ok!");
}
</script>
<!-- Insert HTML here -->
<INPUT id=test type=button value=test onclick=OnTest()></BODY>
</BODY>
</HTML>