<< 前へ        次へ >>

ID : 5768

AddHandler

機能

指定したプロバイダオブジェクトから、イベントを受取るメソッドの登録を行います。以降、プロバイダでイベントが発行されると、登録メソッドが呼ばれます。

このコマンドはVer.1.7.*から有効です。

構文

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 : 5768

<< 前へ        次へ >>