イベントストラクチャが表示器の「値変更」イベントを取得しない

更新しました Oct 20, 2023

使用製品

ソフトウェア

  • LabVIEW Full
  • LabVIEW Base
  • LabVIEW Professional

問題

イベントストラクチャを使用して、フロントパネルにある表示器の値変更がある場合に実行するケースを設定しました。 私のVIでは、表示器は自分のコードの別の部分から値が送られます。VIを実行すると、指標値が変化することは確認できますが、設定したイベントケースのコードは全く実行されません。

解決策

イベントストラクチャは、フロントパネルと直接対話することによって生成されるイベントのみを登録します。この問題では、表示器の値がプログラムによって変更されるため、LabVIEWは値変更イベントを取得しません。さらに、VIサーバ、グローバル変数、ローカル変数などを使用してVIまたはフロントパネルのオブジェクトをプログラムで変更すると、値変更イベントは発生しません。

1つの例外があります。以下の図のように、値(信号)プロパティを使用して、制御器および表示器のイベントをプロパティノードでプログラム的に生成できます。この書き込み専用プロパティは、書き込まれるたびにフロントパネルでの値変化のように動作するイベントを作成します。ただし、ループの各反復で記述されている場合は、値が実際に変更されたかどうかにかかわらず、各反復に対して値変更トリガが生成されるため、ループ内でこのプロパティを使用する際は注意してください。

値(信号)プロパティを使用した値変更イベントのデモンストレーションについては、下図を参照してください。

 
このVIは、値(信号)プロパティを使用して表示器を更新し、イベントを生成します。「A*B」表示器が更新されると、イベントストラクチャがイベントを登録し、「Last Updated」表示器を現在の時間で更新します。

これに対して、値プロパティを使用した値変更イベントのデモンストレーションについては、下図を参照してください。
 
このVIは、値変更プロパティを使用して表示器を更新します。 「A*B」表示器が更新されると、登録すべきイベントがないので、イベントストラクチャはイベントを登録しません。

どちらのVIでも、生産者は「A*B」表示器でプログラム的に書き込まれます。両方のVIには、「A*B」表示器の値変更イベントを取得するためのイベントストラクチャもあります。値(信号)プロパティを使用するVIのみが、「A*B」表示器が更新されたときにイベントを登録します。