📄 新建 文本文档 (2).txt
字号:
Win98/2000 下32位动态链接库函数说明
================================================================================
一、JINCARD7.dll函数说明(SJE313B、SJE323B、SJE333B、SJE343B、SJE353B写卡机)
1) Init_com(sett:pchar):integer
功能:初始化串口.
返回:整型
= 1:正确。
0:通信失败。
-1:串口打开错误。
-3:串口设置错误。
参数:
sett: 字符串,用来设置串口.
格式:"1,9600,N,8,1" ------ (1=com1或2=com2),
(9600=baud9600或4800=baud4800
或2400=baud2400或1200=baud1200),
(N=无校验或O=奇校验或N=偶校验),
(8=8个数据位或7=7个数据位),
(1=1个停止位或2=2个停止位).
如:"2,9600,O,7,1" 表示串口2,波特率9600.奇校验,7个数据位,1个停止位.
--------------------------------------------------------------------------------
2) close_com
功能:关闭Init_com函数打开的串口.
返回:无返回
参数:无参数
--------------------------------------------------------------------------------
3) Wcard(wdata:pchar;track:integer):integer;
功能:控制SJE353B磁卡读写机进行写磁卡操作.
返回: 整型
= 1: 写卡正确
-1: 所选串行口打不开
-2: 与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
-3: 串口设置错误
-4: 写卡错误
-5: 用户 ESC 退出当前操作
-6: 写卡操作超时,现退出当前操作
-8: 通信失败
参数:
track: 需要进行写卡操作的磁道选择号(具体定义如下:)
-------- 1:选择第1磁轨
2:选择第2磁轨
3:选择第3磁轨
4:选择第2和第1磁轨
5:选择第2和第3磁轨
当track为6时,此时的功能为硬复位。
wdata: 字符串,所要向卡上写的数据.
格式:"磁道1数据" ------ 写第1轨数据(此时 track 为1)
"磁道2数据" ------ 写第2轨数据(此时 track 为2)
"磁道3数据" ------ 写第3轨数据(此时 track 为3)
"磁道2数据a磁道1数据" ------ 写第2轨数据和第1轨数据(此时track 为4,
小写字符a作为磁道2和磁道1的数据的间隔符)
"磁道2数据a磁道3数据" ------ 写第2轨数据和第3轨数据(此时track 为5,
小写字符a作为磁道2和磁道3的数据的间隔符)
其中: 小写字符a为磁道2与磁道1(或磁道2与磁道3)的数据的分隔符
1轨数据可为字母或数字,最多76个
2轨数据只可为数字,最多37个
3轨数据只可为数字,最多104个
如: Wcard("1111111111",1)
-------- 表示向第1磁轨中写入数据:1111111111
Wcard("2222222222",2)
-------- 表示向第2磁轨中写入数据:2222222222
Wcard("3333333333",3)
-------- 表示向第3磁轨中写入数据:3333333333
Wcard("2222222222a1111111111",4)
-------- 表示向第2磁轨中写入数据:2222222222 并且
向第1磁轨中写入数据:1111111111
Wcard("2222222222a3333333333",5)
-------- 表示向第2磁轨中写入数据:2222222222 并且
向第3磁轨中写入数据:3333333333
--------------------------------------------------------------------------------
4) Rcard(rdata:pchar;track:integer):integer;
功能:控制sje353b进行读磁卡操作,按ESC键可退出.
返回: 整型
= 1: 读卡正确,
-1: 所选串行口打不开
-2: 与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
-3: 串口设置错误
-4: 读卡错误
-41: 第一磁道读卡失败
-42: 第二磁道读卡失败
-43: 第三磁道读卡失败
-5: 用户 ESC 退出当前操作
-6: 读卡操作超时,现退出当前操作
-8: 通信失败
参数:
track: 需要进行读卡操作的磁道选择号(具体定义如下:)
-------- 1:选择第1磁轨
2:选择第2磁轨
3:选择第3磁轨
4:选择第2和第1磁轨
5:选择第2和第3磁轨
rdata: 读卡数据输出缓冲区(用于存放读卡成功后的返回数据)字符串,长度不少于300字节.
读卡成功返回格式:
rdata = "磁道1数据" ------- 返回磁道1数据(此时track为1)
rdata = "磁道2数据" ------- 返回磁道2数据(此时track为2)
rdata = "磁道3数据" ------- 返回磁道3数据(此时track为3)
rdata = "磁道2数据a磁道1数据" ------- 返回磁道2数据和磁道1数据(此时track为4)
rdata = "磁道2数据a磁道3数据" ------- 返回磁道2数据和磁道3数据(此时track为5)
读卡错误: Rcard函数返回值为-4
其中: 小写字符a为磁道2与磁道1(或磁道2与磁道3)的数据的分隔符
1道数据可为字母或数字,最多76个
2道数据只可为数字,最多37个
3数据只可为数字,最多104个
如:
Rcard(rdata,1)
-------- 表示从第1磁轨中读取数据(存放在rdata中)
Rcard(rdata,2)
-------- 表示从第2磁轨中读取数据(存放在rdata中)
Rcard(rdata,3)
-------- 表示从第3磁轨中读取数据(存放在rdata中)
Rcard(rdata,4)
-------- 表示从第2磁轨和第1磁轨中读取数据
(存放在rdata中,中间以小写字符a作间隔)
Rcard(rdata,5)
-------- 表示从第2磁轨和第3磁轨中读取数据
(存放在rdata中,中间以小写字符a作间隔)
5) Den_Set(cmd:integer):integer
功能:设置记录密度
参数:整型
1:为低密
2:为高密
返回:整型
= 1:正确
0: 失败
-1: 所选串行口打不开
-2: 与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
-3: 串口设置错误
-8: 通信失败
当记录密度设置成低密时,磁道2最大字符数为37个。
当记录密度设置成高密时,磁道2最大字符数为104个。
6) Rec_Set(cmd:integer):integer
功能:设置记录格式
参数:整型
1:为ISO记录格式
2:为IBM记录格式
返回:整型
= 1:正确
0: 失败
-1: 所选串行口打不开
-2: 与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
-3: 串口设置错误
-8: 通信失败
================================================================================
二、card.dll函数说明(SJE363B写卡机)
1) Init_comm(sett:pchar):integer
功能:初始化串口.
返回:整型
= 1:正确。
0:通信失败。
-1:串口被占用。
-3:串口设置错误。
参数:
sett: 字符串数组,用来设置串口.
格式:"1,9600,N,8,1" ------ (1=com1或2=com2),
(9600=baud9600或4800=baud4800
或2400=baud2400或1200=baud1200),
(N=无校验或O=奇校验或E=偶校验),
(8=8个数据位或7=7个数据位),
(1=1个停止位或2=2个停止位).
如:"2,9600,O,7,1" 表示串口2,波特率9600.奇校验,7个数据位,1个停止位.
--------------------------------------------------------------------------------
2) close_comm
功能:关闭Init_com函数打开的串口.
返回:无返回
参数:无参数
--------------------------------------------------------------------------------
3) Link:integer;
功能:控制磁卡读写机进行联络操作.
返回: 整型
= 1: 联络正确
-1: 所选串行口打不开
-2: 与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
-3: 串口设置错误
参数:无
--------------------------------------------------------------------------------
4) _reset:integer;
功能:控制磁卡读写机进行复位操作.
返回: 整型
= -1: 所选串行口打不开
-2: 与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
-3: 串口设置错误
参数:无
--------------------------------------------------------------------------------
5) W_card(wdata:pchar):integer;
功能:控制磁卡读写机进行写磁卡操作.
返回: 整型
= 1: 写卡正确
-1: 所选串行口打不开
-2: 与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
-3: 串口设置错误
-4: 写卡错误
-5: 按"ESC"键退出写卡
参数:
wdata : 字符串数组,所要向卡上写的数据.
格式:"%xxxxxxxxxxxxxx?" ------ 写第1轨数据(其中:x 为数据)
";xxxxxxxxxxxxxx?" ------ 写第2轨数据(其中:x 为数据)
"+xxxxxxxxxxxxxx?" ------ 写第3轨数据(其中:x 为数据)
"%xxxxx?;xxxxxxx?" ------ 写第1,2轨数据(其中:x为数据)
";xxxxx?+xxxxxxx?" ------ 写第2,3轨数据(其中:x为数据)
"%xxxxx?;xxxxxxx?+xxxxxx?" ------ 写第1,2,3轨数据(其中:x为数据)
1轨数据可为字母或数字,最多76个
2轨数据只可为数字,最多37个
3轨数据只可为数字,最多104个
如: W_card("%1111111111?")
-------- 表示向第1磁轨中写入数据:1111111111
W_card(";2222222222?")
-------- 表示向第2磁轨中写入数据:2222222222
W_card("+3333333333?")
-------- 表示向第3磁轨中写入数据:3333333333
W_card("%2222222222?;1111111111?")
-------- 表示向第2磁轨中写入数据:2222222222 并且
向第1磁轨中写入数据:1111111111
W_card(";2222222222?+3333333333?")
-------- 表示向第2磁轨中写入数据:2222222222 并且
向第3磁轨中写入数据:3333333333
W_card("%1111111111?;2222222222?+3333333333?")
-------- 表示向第1磁轨中写入数据:1111111111 并且
向第2磁轨中写入数据:2222222222 并且
向第3磁轨中写入数据:3333333333
--------------------------------------------------------------------------------
6) R_card(rdata1:pchar;rdata2:pchar;rdata3:pchar;track:integer):integer;
功能:控制读磁卡操作.
返回: 整型
= 1: 读卡正确,
-1: 所选串行口打不开
-2: 与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
-3: 串口设置错误
-4: 读卡错误
-41: 第一磁道读卡失败
-42: 第二磁道读卡失败
-43: 第三磁道读卡失败
-412: 第一,二磁道读卡失败
-413: 第一,三磁道读卡失败
-423: 第二,三磁道读卡失败
-5: 按"ESC"键退出写卡
参数:
track: 需要进行读卡操作的磁道选择号(具体定义如下:)
-------- 1:选择第1磁轨
2:选择第2磁轨
3:选择第3磁轨
4:选择第2和第1磁轨
5:选择第2和第3磁轨
6:选择第1和2及第3磁轨
rdata1: 存放磁道1中的数据。
rdata2: 存放磁道2中的数据。
rdata3: 存放磁道3中的数据。
字符串数组,长度不少于300字节.
1道数据可为字母或数字,最多76个
2道数据只可为数字,最多37个
3数据只可为数字,最多104个
================================================================================
例程(以JINCARD7.DLL函数为例,其它动态库函数用法可参照以下例程):
在演示程序中把dll文件声明于implementation中下面
function Rcard(rdata:pchar;track:integer):integer;stdcall;external'JINCARD7.dll';
function Wcard(wdata:pchar;track:integer):integer;stdcall;external'JINCARD7.dll';
//主程序 :
if 1 = Init_com('1,9600,n,8,1') then //初始化端口成功
begin
if 1 = Rcard(rdata,5) then //调用库中的读函数,读二,三磁道,若成功则
begin
i:=pos ('a',rdata);
strlcopy(str2,rdata,i-1); //拷贝磁道二中的内容于str2中
strcopy(str3,rdata+i); //拷贝磁道三中的内容于str3中
ShowMessage('读卡成功!'); //显示读卡成功对话框
end;
wdata:= '2222222222a333333333';
if 1 = Wcard(wdata,5) then //调用库中的写函数进行写二,三磁道,若成功则
begin
ShowMessage('写卡成功!'); //显示写卡成功对话框
end;
end; //根据Wcard函数所返回值判断写卡的状态
注意:
1. 将DLL文件拷贝到\windows\system\目录下。
2. 仅系统启动时初始化串口,系统退出时关闭串口。
3. 字符串变量定义时,一定要分配字符空间。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -