调用VC写的DLL失败,关于指纹仪的,请高手指教,谢谢
这几天在搞个指纹仪设备的接口,对方提供了API函数的说明,但我用VB调用的时候,打开设备可行,但就是取不到指纹图像。 我觉得是不是函数声明或字段类型错误所导致的。 下面,我把相关的API函数说明以及VB调用的代码和声明发在下面,请各位高手帮我指明下问题所在或值得怀疑的地方,谢谢各位!
一、 API函数说明;
/*打开设备,可以作为检测设备用返回:true:成功 false:失败*/
BOOL OpenDevice();
/*从设备获取指纹图像
in:int nTimeOut 超时 建议取10000即10S
out:unsigned char* lpImageData 图像缓冲区,大小为200*152字节
返回:0:获取图像成功 -1:失败 -2:超时*/
int xtGetImageData( int nTimeOut, unsigned char* lpImageData);
二、VB中函数声明:
'/* 打开设备,可以作为检测设备用 返回:true:成功 false:失败 */
Public Declare Function OpenDevice Lib "xt22UfpDll.dll" () As Boolean
' 从设备获取指纹图像 in:int nTimeOut 超时 建议取10000即10S out:unsigned char* lpImageData 图像缓冲区,大小为200*152字节
' 返回:0:获取图像成功 -1:失败 -2:超时
Public Declare Function xtGetImageData Lib "xt22UfpDll.dll" (ByVal nTimeOut As Long, ByRef lpImageData As Byte) As Long
三、VB中调用函数:
1、打开设备,可以作为检测设备用
Public Function openDevicemds() As Integer
Dim rtn As Boolean
rtn = True
'返回:true:成功 false:失败
rtn = OpenDevice()
If (rtn) Then
openDevicemds = 1
iState = 1
Else
openDevicemds = 0
iState = 0
End If
End Function
2、从设备获取指纹图像
Public Function getFingermds(ByVal cs As Long) As String
Dim ret As Long
Dim bret As Boolean
On Error GoTo onerror
getFingermds = ""
Dim FingerBuf(152, 200) As Byte
Dim SrcFeatureBuf(512) As Byte
'返回:0:获取图像成功 -1:失败 -2:超时
ret = xtGetImageData(10000, FingerBuf(0, 0))
getFingermds = ""
onerror:
getFingermds = "error"
End Function
VC 函数 API VB
[解决办法]
你看看FingerBuf(0, 0)函数的使用,可能有问题
[解决办法]
既然都说了直接调用就出错,就只能是参数不对。
看了你的函数介绍。要是准确的话,只能是这个地方了。 FingerBuf(0, 0),
[解决办法]
unsigned char* lpImageData;
虽然不懂: Dim FingerBuf(152, 200) As Byte
估计是 BYTE FingerBuf[152][200];
unsigned char* 与Byte;