<< 向前        下一页 >>

ID : 16377

AddHandler

功能

根据指定的插件对象执行事件接收方法的登录。以后,如果插件中发生事件,则将调出登录方法。

格式

AddHandler 对象事件名称事件接收方法

指定项目

对象
指定发生事件的对象。指定通过AddController获取的对象。
事件名称
通过字符串型数据指定要接收的事件名称。通常指定为“OnMessage”。
事件接收方法
指定接收事件的处理方法。

解说

根据指定的插件对象执行事件接收方法的登录。以后,如果插件中发生事件,则将调出登录方法。

此方法需为以下格式。

Sub 方法名称(ByVal Sender As Object, ByVal Args As Variant)
  '...
End Sub

虽然可任意指定方法名称,但是为了提高可读性,推荐使用与事件名称相应的方法名称。其它类型为固定。请务必使用上述规定的类型。

通常在方法名称中指定OnMessage,方法如下所述。

Sub OnMessage (ByVal Sender As Object, ByVal Args As Variant)
'...
End Sub

无需从插件中接收事件时,调出RemoveHandler执行完成处理。

注意事项

  • 接收事件时,必须连续执行AddHandler的任务。任务停止时,无法接收事件。
  • 无法通过Wait指令执行事件的接收等待。请务必使用有适当Delay指令的环路代码执行。

应用示例

为使用QR代码插件,在QR代码读取器读取QR代码时,接收读取数据的示例。
Dim g_Counter As Integer = 0 '接收个数

Sub Main()
Dim ctrl As Object
ctrl = Cao.AddController( "QR", "CaoProv.DENSO.QRCode", "",
      "Conn=com:6:38400:N:8:1, Mode=5, Protocol=0:0:0" )

'指定接收事件的名称和位置
AddHandler ctrl, "OnMessage", OnMessage 
g_Counter = 0

'事件的接收等待环路
Do
Delay 10
If g_Counter >= 3 Then Exit Do
Loop 

 '解除接收
RemoveHandler ctrl

End Sub

'Event Handler for OnMessage
Sub OnMessage( ByVal Sender As Object, ByVal Args As Variant )
Dim msg as object
msg = Args(0) '::= CaoMessage object
PrintDbg "" & Time & " - CODE = [" & msg.Value & "]"
g_Counter = g_Counter + 1
End Sub

ID : 16377

<< 向前        下一页 >>