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を呼び出して、終了処理を行います。
関連項目
注意事項
用例
RC9プロバイダを使用し、RC9 コントローラのエラー通知や状態通知を受け取る例です。
Dim g_Counter As Integer = 0 '受取り個数
Sub Main()
Dim ctrl As Object
ctrl = Cao.AddController("RC9", "CaoProv.DENSO.RC9", "", "Server=192.168.0.1")
g_Counter = 0
'受取りイベント名と先の指定
AddHandler ctrl, "OnMessage", OnMessage
'イベントの受信待ちループ
Do
Delay 100
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 & " - [EventNo = " & msg.Number & ", Value = 0x" & Hex(msg.Value) & "]"
g_Counter = g_Counter + 1
End SubID : 16377

