请高手帮助----dll调用问题
以下是dll说明:我不知道在delphi里如何调用VC的dll,在implementation里面声明的时候总出错,请高人指点一下:
1) INT Wcard(CHAR *SET,CHAR *WDATA,INT TRACK)
功能:控制SJE353B磁卡读写机进行写磁卡操作,按ESC键可退出.
返回: 整型
= 1: 写卡正确
-1: 所选串行口打不开
-2: 与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
-3: 串口设置错误
-4: 写卡错误
-5: 用户 ESC 退出
参数:
SET: 字符串,用来设置串口.
格式: "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个停止位.
TRACK: 需要进行写卡操作的磁道选择号(具体定义如下:)
-------- 1:选择第1磁轨
2:选择第2磁轨
3:选择第3磁轨
4:选择第2和第1磁轨
5:选择第2和第3磁轨
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( "1,9600,N,8,1 ", "1111111111 ",1)
-------- 表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
无校验的方式向第1磁轨中写入数据:1111111111
Wcard( "1,9600,N,8,1 ", "2222222222 ",2)
-------- 表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
无校验的方式向第2磁轨中写入数据:2222222222
Wcard( "1,9600,N,8,1 ", "3333333333 ",3)
-------- 表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
无校验的方式向第3磁轨中写入数据:3333333333
Wcard( "1,9600,N,8,1 ", "2222222222a1111111111 ",4)
-------- 表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
无校验的方式向第2磁轨中写入数据:2222222222 并且
向第1磁轨中写入数据:1111111111
Wcard( "1,9600,N,8,1 ", "2222222222a3333333333 ",5)
-------- 表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
无校验的方式向第2磁轨中写入数据:2222222222 并且
向第3磁轨中写入数据:3333333333
具体见SLE300系列磁卡读写机使用说明书
2) INT Rcard(CHAR *SET,CHAR *RDATA,INT TRACK)
功能:控制sLe353b进行读磁卡操作,按ESC键可退出.
返回: 整型
= 1: 读卡正确,
-1: 所选串行口打不开
-2: 与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)
-3: 串口设置错误
-4: 读卡错误
-5: 用户 ESC 退出
参数:
SET: 字符串,用来设置串口.
格式: "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个停止位.
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( "1,9600,N,8,1 ",RDATA,1)
-------- 表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
无校验的方式从第1磁轨中读取数据(存放在RDATA中)
Rcard( "1,9600,N,8,1 ",RDATA,2)
-------- 表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
无校验的方式从第2磁轨中读取数据(存放在RDATA中)
Rcard( "1,9600,N,8,1 ",RDATA,3)
-------- 表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
无校验的方式从第3磁轨中读取数据(存放在RDATA中)
Rcard( "1,9600,N,8,1 ",RDATA,4)
-------- 表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
无校验的方式从第2磁轨和第1磁轨中读取数据
(存放在RDATA中,中间以小写字符a作间隔)
Rcard( "1,9600,N,8,1 ",RDATA,5)
-------- 表示通过串行口1以波特率9600BPS,8位数据位,1位停止位,
无校验的方式从第2磁轨和第3磁轨中读取数据
(存放在RDATA中,中间以小写字符a作间隔)
[解决办法]
INT Wcard(CHAR *SET,CHAR *WDATA,INT TRACK)
function Wcard(Set: PChar; WDATA: PChar; TRACK: Integer): Integer;stdcall; extenal
[解决办法]
PostMessage(handle,WM_KEYDOWN,27,0);