Public axCZKEM1,axCZKEM2 As New zkemkeeper.CZKEM
AddHandler axCZKEM1.OnAttTransactionEx, AddressOf Ax_OnAttTransactionEx
AddHandler axCZKEM2.OnAttTransactionEx, AddressOf Ax_OnAttTransactionEx
Private Sub Ax_OnAttTransactionEx(ByVal sEnrollNumber As String, ByVal iIsInValid As Integer, ByVal iAttState As Integer, ByVal iVerifyMethod As Integer, _
ByVal iYear As Integer, ByVal iMonth As Integer, ByVal iDay As Integer)
lbRTShow.Items.Add("RTEvent OnAttTrasactionEx Has been Triggered,Verified OK")
lbRTShow.Items.Add("...UserID:" & sEnrollNumber)
lbRTShow.Items.Add("...isInvalid:" & iIsInValid.ToString())
lbRTShow.Items.Add("...attState:" & iAttState.ToString())
lbRTShow.Items.Add("...VerifyMethod:" & iVerifyMethod.ToString())
End Sub
此代码用于实时触发指纹设备'
第一个问题
我如何知道哪个设备触发了此事件:此设备“axCZKEM1”或“axCZKEM2”
当我尝试将“发件人作为对象”与参数一起给我错误:
“没有与委托兼容的签名”
额外的关注
我根据您给我的指示研究了互联网。
第一:我已经成功使用包装类识别发件人设备,我的代码如下所示:
Imports zkemkeeper
Imports System
Imports System.Collections.Generic
Public Class myzkem
Public Property Name
Private WithEvents CZKEM As zkemkeeper.CZKEM
Public Event AttEventWrapper(SenderName As String, sEnrollNumber As String, iIsInValid As Integer, iAttState As Integer, iVerifyMethod As Integer, iYear As Integer, iMonth As Integer, iDay As Integer, iHour As Integer, iMinute As Integer, iSecond As Integer, iWorkcode As Integer)
Public Shared ListOfDevices As New Dictionary(Of String, zkemkeeper.CZKEM)
Public Sub New(WrapperName As String, CZKEMObject As zkemkeeper.CZKEM)
Me.Name = WrapperName
Me.CZKEM = CZKEMObject
End Sub
Private Sub HandleEvent(ByVal sEnrollNumber As String, ByVal iIsInValid As Integer, ByVal iAttState As Integer, ByVal iVerifyMethod As Integer, ByVal iYear As Integer, ByVal iMonth As Integer, ByVal iDay As Integer, ByVal iHour As Integer, ByVal iMinute As Integer, ByVal iSecond As Integer, ByVal iWorkCode As Integer) Handles CZKEM.OnAttTransactionEx
RaiseEvent AttEventWrapper(Me.Name, sEnrollNumber, iIsInValid, iAttState, iVerifyMethod, iYear, iMonth, iDay, iHour, iMinute, iSecond, iWorkCode)
End Sub
End Class
注意:这是我插入共享字典 [ListOfDevices] 的类。
第二:我用包含我的 CZKEM 对象的函数创建了另一个类,添加和删除处理程序代码和连接代码。
Imports zkemkeeper
Public Class ZKEMKEEPERClass
Public CZKEM2 As New zkemkeeper.CZKEM
Public NewKEM As myzkem
Public Function ZKEMAddHandler(iDevice As String, iIP As String, iPort As Integer) As Boolean
If CZKEM2.Connect_Net(iIP, 4370) Then
If CZKEM2.RegEvent(1, 65535) = True Then
NewKEM = New myzkem(iDevice, CZKEM2)
AddHandler NewKEM.AttEventWrapper, AddressOf LoginEvent_1
MsgBox(iDevice)
Return True
Else
Return False
End If
Else
Return False
End If
End Function
Public Function ZKEMRemoveHandler(iDevice As String, CZKEM As zkemkeeper.CZKEM)
NewKEM = New myzkem(iDevice, CZKEM)
RemoveHandler NewKEM.AttEventWrapper, AddressOf LoginEvent_1
MsgBox(iDevice)
End Function
Public Sub LoginEvent_1(ByVal SenderName As String, ByVal sEnrollNumber As String, ByVal iIsInValid As Integer, ByVal iAttState As Integer, ByVal iVerifyMethod As Integer, ByVal iYear As Integer, ByVal iMonth As Integer, ByVal iDay As Integer, ByVal iHour As Integer, ByVal iMinute As Integer, ByVal iSecond As Integer, ByVal iWorkCode As Integer)
MsgBox(SenderName)
End Sub
End Class
第三:在我的主程序中,我复制 [ZKEMKEEPERClass] 以创建多个同时处于活动状态的对象。
Sub CONNECT()
Dim iIP As String
Dim iDevice As String
For x = 1 To 2
Select Case x
Case 1
iIP = "122.3.47.43"
iDevice = "Device 1"
Case 2
iIP = "192.168.10.201"
iDevice = "Device 2"
End Select
Dim NewConnect As New ZKEMKEEPERClass
If NewConnect.ZKEMAddHandler(iDevice, iIP, 4370) Then
MsgBox("success")
Else
MsgBox("failed")
End If
Next
End Sub
我的新问题:我无法删除处理程序,因为我无法从复制的类中识别它。
让我知道你的想法。
@AConfusedSimpleton