执行函数GetUserTmpEx报错,这里要怎么写
Dim axCZKEM1 As New zkemkeeper.CZKEM
Dim bIsConnected = axCZKEM1.Connect_Net("10.11.1.5", "4370")
If bIsConnected = False Then
MsgBox("Please connect the device first", MsgBoxStyle.Exclamation, "Error")
Return ""
End If
Dim iGLCount = 0
Dim idwErrorCode As Integer
Dim iMachineNumber As Integer = 1
Dim dwEnrollNumber As String
Dim dwFingerIndex As Integer
Dim Flag As Integer
Dim TmpData As Integer
Dim TmpLength As Integer
If AxCZKEM1.ReadAllTemplate(iMachineNumber) Then
Output.Show("OK")
''''下载指纹代码有问题
While AxCZKEM1.GetUserTmpEx(iMachineNumber, dwEnrollNumber, dwFingerIndex, Flag, TmpData, TmpLength)
iGLCount += 1
output.show(iGLCount.ToString())
output.show(dwEnrollNumber)
output.show(dwFingerIndex.ToString())
output.show(Flag.ToString())
output.show(TmpData.ToString())
output.show(TmpLength.ToString())
output.show("-----------------------------")
End While
Else
AxCZKEM1.GetLastError(idwErrorCode)
If idwErrorCode <> 0 Then
MsgBox("Reading data from terminal failed,ErrorCode: " & idwErrorCode, MsgBoxStyle.Exclamation, "Error")
Else
MsgBox("No data from terminal returns!", MsgBoxStyle.Exclamation, "Error")
End If
End If
调试……
''''下载指纹代码有问题
msgbox(1)
While AxCZKEM1.GetUserTmpEx(iMachineNumber, dwEnrollNumber, dwFingerIndex, Flag, TmpData, TmpLength)
msgbox(2)
iGLCount += 1
msgbox(3)
output.show(iGLCount.ToString())
msgbox(4)
output.show(dwEnrollNumber)
msgbox(5)
output.show(dwFingerIndex.ToString())
msgbox(6)
output.show(Flag.ToString())
msgbox(7)
output.show(TmpData.ToString())
msgbox(8)
output.show(TmpLength.ToString())
msgbox(9)
output.show("-----------------------------")
End While
……
看哪个提示不能弹出来
报这个错误

此主题相关图片如下:qq截图20230712093806.png
[此贴子已经被作者于2023/7/12 9:39:26编辑过]
AxCZKEM1.GetUserTmpEx这个是第三方硬件厂家提供的函数,如果有问题只能找硬件厂家了。
试试这个参数给个初始值看看,看看开发文档这个参数是不是有什么特殊要求
Dim dwEnrollNumber As String = ""
加了初始值之后,就弹出"1",后面不弹出,也没报错
VARIANT_BOOL GetUserTmpEx ( LONG dwMachineNumber,
BSTR dwEnrollNumber,
LONG dwFingerIndex,
LONG *Flag,
BYTE *TmpData,
LONG *TmpLength
)
以二进制方式获得用户ZKFinger 10.0指纹模板 ,和GetUserTmpExStr不同的仅是指纹模板格式不同而已。
参数
参数说明如下表:
name | type | param direction | description of param |
dwMachineNumber | LONG | [in] | 机器号 |
dwEnrollNumber | BSTR | [in] | 用户号 |
dwFingerIndex | LONG | [in] | 指纹索引号 |
Flag | LONG* | [out] | 标示指纹模板是否有效或者是否为胁迫指纹 |
TmpData | BYTE* | [out] | 指纹模板 |
TmpLength | LONG* | [out] | 指纹模板长度 |
返回
返回值说明如下:
name | type | description of value |
True | BOOL | 函数执行成功 |
False | BOOL | 函数执行失败 |
参见
注意
1.要求机器固件支持胁迫指纹功能(固件内部版本号 Ver6.60 及以上)。
2.Flag参数标示指纹模板是否有效或者是否为胁迫指纹,其具体表示为:0 表示指纹模板无效,1 表示指纹模板有效,3 表示胁迫指纹。
注解
适用于BW,TFT,IFACE设备
Dim dwEnrollNumber As String
改为
Dim dwEnrollNumber As new Stringbuilder
然后试试
dim 返回值 as boolean = AxCZKEM1.GetUserTmpEx(iMachineNumber, dwEnrollNumber, dwFingerIndex, Flag, TmpData, TmpLength)
if 返回值 then
msgbox("执行成功")
else
msgbox("执行失败")
end if

此主题相关图片如下:qq截图20230712100519.png

这样不行,报错