注意:针对使用C/C++版本的FaceId.dll。代码仅供参考,需要根据具体的设备做调整
运行环境
下载安装Visual C++ Redistributable Packages for Visual Studio 2013
演示程序源代码下载:
程序界面:
示例代码(版本:VB6)
Private Declare Function FaceId_Start Lib "FaceId.dll" (ByVal Address As Long, ByVal Port As Long, ByVal AddressFamily As Long) As Long Private Declare Function FaceId_SetSecretKey Lib "FaceId.dll" (ByVal SocketHandle As Long, ByVal SecretKey As Long) As Long Private Declare Function FaceId_GetSecretKey Lib "FaceId.dll" (ByVal SocketHandle As Long) As Long Private Declare Function FaceId_Execute Lib "FaceId.dll" (ByVal SocketHandle As Long, ByVal InBuffer As Long, ByRef hOutBuffer As Long, ByVal CodePage As Long) As Long Private Declare Sub FaceId_Close Lib "FaceId.dll" (ByVal SocketHandle As Long) Private Declare Sub CopyMemory Lib "Kernel32" Alias "RtlMoveMemory" (ByVal Destination As Long, ByVal Source As Long, ByVal Length As Long) Private Sub CommandClear_Click() TextView.Text = vbNullString End Sub Private Sub CommandExecute_Click() Dim DeviceIP As String DeviceIP = TextDeviceIP.Text Dim DevicePort As Integer DevicePort = CInt(TextDevicePort.Text) Const AF_INET As Long = 2 Dim SocketHandle As Long SocketHandle = FaceId_Start(StrPtr(DeviceIP), DevicePort, AF_INET) If SocketHandle = 0 Then MsgBox "请输入正确的设备地址和通信端口!" Exit Sub Else Rem 通信密码要和设备中的密码一致 Dim SecretKey As String SecretKey = vbNullString If FaceId_SetSecretKey(SocketHandle, StrPtr(SecretKey)) <> 0 Then FaceId_Close SocketHandle MsgBox "设置通信密码失败!" Exit Sub End If End If Rem 清空原有文本 TextView.Text = vbNullString Dim Command As String Command = TextCommand.Text Dim hOutBuffer As Long Rem 定义设备通信编码字符集为简体中文 Const DeviceCodePage As Long = 936 Rem 执行设备命令 Dim ReceivedChars As Long ReceivedChars = FaceId_Execute(SocketHandle, StrPtr(Command), hOutBuffer, DeviceCodePage) If ReceivedChars > 0 Then Dim Answer As String Answer = String$(ReceivedChars * 2, vbNullChar) CopyMemory StrPtr(Answer), hOutBuffer, ReceivedChars * 2 TextView.Text = Answer Else MsgBox "执行设备命令失败!" End If Rem 断开连接 FaceId_Close SocketHandle End Sub