以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求教中控考勤机指纹和面部下载  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=187356)

--  作者:KB2020
--  发布时间:2023/7/12 9:33:00
--  求教中控考勤机指纹和面部下载
执行函数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

--  作者:有点蓝
--  发布时间:2023/7/12 9:35:00
--  
调试
……
    \'\'\'\'下载指纹代码有问题
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
……
看哪个提示不能弹出来

--  作者:KB2020
--  发布时间:2023/7/12 9:37:00
--  
msgbox(2)弹不出来
--  作者:KB2020
--  发布时间:2023/7/12 9:39:00
--  
报这个错误
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20230712093806.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2023/7/12 9:39:26编辑过]

--  作者:有点蓝
--  发布时间:2023/7/12 9:41:00
--  
AxCZKEM1.GetUserTmpEx这个是第三方硬件厂家提供的函数,如果有问题只能找硬件厂家了。

试试这个参数给个初始值看看,看看开发文档这个参数是不是有什么特殊要求

Dim dwEnrollNumber As String = ""

--  作者:KB2020
--  发布时间:2023/7/12 9:45:00
--  
加了初始值之后,就弹出"1",后面不弹出,也没报错
--  作者:有点蓝
--  发布时间:2023/7/12 9:47:00
--  
看看开发文档这个参数是不是有什么特殊要求。函数说明发上来看看
--  作者:KB2020
--  发布时间:2023/7/12 9:53:00
--  

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设备 


--  作者:有点蓝
--  发布时间:2023/7/12 9:58:00
--  
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

--  作者:KB2020
--  发布时间:2023/7/12 10:06:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20230712100519.png
图片点击可在新窗口打开查看

这样不行,报错