独自に定義したデータを送るユーザイベントと呼ばれるカスタムイベントを作成して名前を付けることができます。ユーザイベントを使用すると、アプリケーションの異なる部分を非同期に通信できます。フロントパネルのオブジェクトとの直接的なユーザ操作を必要とするユーザインタフェースイベントとは異なり、ユーザイベントではオブジェクトのプログラム的変更に応答するアプリケーションを作成できます。ユーザインタフェースイベントとプログラム的に生成されたユーザイベントの両方を同じイベントストラクチャ内で処理できます。

使用するオブジェクト

次のブロックダイアグラムオブジェクトを使用してユーザイベントを作成します。
  • ユーザイベントを作成—ユーザイベントを作成
  • —イベント登録
  • —イベントストラクチャ
  • — ユーザイベントを生成
  • — イベント登録解除
  • —ユーザイベント破棄
  • 解決方法

    次のブロックダイアグラムを作成して、定義したデータをプログラム的に送るユーザイベントを作成します。


    上記の機能を含むLabVIEW Gコードのスクリーンショットです。

    以下のリストには、前のダイアグラムについての重要な情報が記載されています。

  • 1—ユーザイベントを定義するには、ブロックダイアグラムオブジェクトを「ユーザイベントを作成」関数に配線します。「ユーザイベントを作成」関数の入力は、個別の要素またはユーザイベントの名前がその名前となりそのデータタイプがイベントのデータタイプを定義するクラスタです。さらに、LabVIEWは、付属ラベルを使用してユーザイベントのデータを識別するため、入力データまたは入力データの各要素に説明的な付属ラベルを付ける必要があります。ユーザイベントの入力データにラベルを付けて、イベントストラクチャのイベントデータノードに表示されるようにする必要があります。前記のブロックダイアグラムでは、ユーザイベントの名前はマイユーザイベントで、イベントデータ項目は文字列です。
  • 2—「ユーザイベントを作成」関数のユーザイベント出力は、ユーザイベントの名前およびデータタイプを含むタイプ指定Refnumです。イベントの登録およびユーザイベントの生成の際に、このrefnumをイベント名およびデータタイプへのリファレンスとして使用します。
  • 3— 「イベント登録」関数を使用して、ユーザイベントをダイナミック登録します。ユーザイベントおよびユーザインタフェースイベントを組み合わせて、「イベント登録」関数に配線することができます。
  • 4— 「イベント登録」関数のイベント登録Refnum出力を、イベントストラクチャの左側にあるダイナミックイベント端子に配線します。ダイナミックイベント端子を表示するには、イベントストラクチャを右クリックしてダイナミックイベント端子を表示を選択します。ユーザイベントデータ項目は、イベントストラクチャの左側の枠にあるイベントデータノードに表示されます。
  • 5—データ項目をイベントデータノードに追加するには、ノードを垂直方向にサイズ変更します。イベントデータノードを使用して、特定のイベントに関連するイベントデータ要素にアクセスします。
  • 6イベントを編集ダイアログボックスを使用して、イベントを処理するようにイベントストラクチャのケースを構成します。ユーザイベント名は、ダイアログボックスのイベントソースセクションにあるダイナミック小見出しに表示されます。
  • 7—「ユーザイベントを生成」関数を使用して、イベントを処理するように構成されたイベントストラクチャを介してユーザイベントおよび関連データをアプリケーションの他の部分に渡します。「ユーザイベントを生成」関数は、ユーザイベントRefnumおよびイベントデータの値を受け入れます。データ値は、ユーザイベントのデータタイプと一致する必要があります。
    メモ ユーザイベントが登録されていない場合、「ユーザイベントを生成」関数は何も行いません。ユーザイベントが登録されていても、待機しているイベントストラクチャがない場合、LabVIEW はイベントストラクチャがイベント処理を実行するまでユーザイベントとデータをキューに入れ続けます。
  • 8— 「イベント登録解除」関数および「ユーザイベント破棄」関数を使用して関連付けられているイベントおよびユーザイベントリファレンスを開放します。LabVIEWはトップレベルVIが実行を終了すると、自動的にすべてのイベントを登録解除し、既存のユーザイベントを破棄します。ただし、NIでは、メモリリソースを節約するために特に長期実行されるアプリケーションにおいて、ユーザイベントを明示的に登録解除および破棄することをお勧めします。
  • 注意とアドバイス

    • 静的にユーザイベントの登録を行うことはできません。
    • 同じユーザイベントを、異なる「イベント登録」関数を使用して何回も登録できます。この場合、「ユーザイベントを生成」関数が実行するたびに、イベント登録Refnumに関連付けられた各キューはユーザイベントおよび関連イベントデータの各自のコピーを受け取ります。
    • ユーザイベントは通知イベントで、ユーザインタフェースイベントまたは他のユーザイベントと同じイベントストラクチャのイベントケースを共有できます。
    • フロントパネル上でのユーザの操作をシミュレーションするには、既存のユーザインタフェースイベントと同じ名前およびデータタイプのイベントデータ項目を持つユーザイベントを作成します。たとえば、値変更ユーザインタフェースイベントがブール制御器に関連付けるイベントデータ項目と同じであるOldValNewValいう名前の2つのブールフィールドのクラスタを使用して、MyValChgというユーザイベントを作成することができます。シミュレーションされたMyValChgユーザイベントと実際のブール値変更イベントで、同じイベントストラクチャケースを共有できます。「ユーザイベントを作成」関数がユーザイベントを生成した場合や、ユーザが制御器の値を変更した場合、イベントストラクチャはイベントケースを実行します。

    サンプル

    イベントをダイナミック登録するサンプルについては、labview\examples\Dialog and User Interface\Events\Events.lvprojを参照してください。

    ユーザイベントを使用するサンプルについては、labview\examples\Dialog and User Interface\EventsディレクトリのUser Event Generation VIを参照してください。