注册 登录
编程论坛 VFP论坛

求助各位大佬,调用DLL的一段代码,实在弄不明白了,请大佬们赐教

qwdn 发布于 2020-11-17 21:01, 1749 次点击
DLL的定义是这样的:
函数声明: long ICC_Reader_PowerOn (long ReaderHandle,unsigned char
ICC_Slot_No,unsigned char* Response)
参数说明:
ReaderHandle: 设备句柄;
ICC_Slot_No: ICC 连接器号, 0x01--ICC主卡座,0x11--SAM1
卡,0x12--SAM2 卡 ,0x13--SAM3卡,0x14--SAM4 卡;
Response: 指向存放响应数据的存储区的指针。
——————————————————————————
我写的代码是这样的(没严格写,参考了吹水大佬的写法哈):
DECLARE long ICC_Reader_Open IN F4_MDS.dll string
aaa=icc_reader_open("AUTO")
DECLARE long ICC_Reader_PowerOn IN F4_MDS.dll long ,string ,string@
bb="0x01"
cc=REPLICATE(0h00,200)
ddd=ICC_Reader_PowerOn(aaa,bb,@cc)

然后就ddd值是-14,错误是:F_ParameterError,(动态库)命令参数错误
我将bb改为0h01,也是不行,怎么弄都不成了,请大佬们指教哈!
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2020-11-17 21:24编辑过]

3 回复
#2
qwdn2020-11-17 21:43
回复 楼主 qwdn
改成这样,能跑过去了,但不知道对不对。
DECLARE long ICC_Reader_PowerOn IN F4_MDS.dll long ,long ,string@
bb=0x01
cc=REPLICATE(0h00,200)
ddd=ICC_Reader_PowerOn(aaa,bb,@cc)

[此贴子已经被作者于2020-11-17 22:01编辑过]

#3
吹水佬2020-11-17 22:33
以下是引用qwdn在2020-11-17 21:43:10的发言:

改成这样,能跑过去了,但不知道对不对。
DECLARE long ICC_Reader_PowerOn IN F4_MDS.dll long ,long ,string@
bb=0x01
cc=REPLICATE(0h00,200)
ddd=ICC_Reader_PowerOn(aaa,bb,@cc)

应该对的
unsigned char 是无符号BYTE,数值在 0x00 -- 0xFF
VFP的 DECLARE 命令中参数的数值类型有INTEGER和LONG
#4
qwdn2020-11-17 22:41
回复 3楼 吹水佬
多谢大佬指点!
1