07-06-2012 09:24 AM
シリアル接続してあるバーコードリーダからある変数に値を入力しています。
その変数の値を書き換えたことをトリガにしてイベントストラクチャを起動させたいのですが、
その変数の"値変更"イベントのケースを作ったのですが起動してくれません。
どうすれば変数に値を入力したことをトリガにしてイベントを起動できますでしょうか?
もしくはその動作に近い違った手法でも結構ですのでお教えいただければと思います。
よろしくお願いいたします。
07-08-2012 09:09 PM - edited 07-08-2012 09:10 PM
値変更イベントは、私も試してみましたが、フロントパネルで行われた値変更に対してのみ発生するイベントのようです。たとえば、ローカル変数、値プロパティノード、またはノード自体に変更された値を入力しても発生しません。
このような場合、ユーザイベントを使用します。ユーザイベントは、開発者自身で定義するイベントのことで、これはイベントストラクチャで使用できます。(イベントストラクチャの枠を右クリック>ダイナミックイベント端子を表示を選択)
ユーザイベントの例は以下から見つけることができます。
C:\Program Files\National Instruments\LabVIEW <version>\examples\general\dynamicevents.llb\Programmatically Fire Events.vi
この例では、ユーザイベント生成をイベントストラクチャ内で行っていますが、ループ外でユーザイベント端子を分岐することで別の場所からユーザイベントの生成を発生させることができます。イベント自身にデータを関連づけることで、イベント生成時にイベントに応じたデータをイベントストラクチャに渡すことが可能です。
私自身あまりユーザイベントを使用することはありませんが、非同期の処理ができるのはありがたいですね。
07-11-2012 03:30 AM
返信遅くなり申し訳ありませんでした。
大変参考になりました。
ここに投稿した後もいろいろ探してみましたところ、
プロパティノードの値(信号)というものがあり、
それにブロックダイアグラムで値を入力すると、
フロントパネルで値を入力したのと同様の動きになるようです。
ちなみに私の使用していますLabVIEWのバージョンは8.5.1です。
ユーザイベントは私もほとんど使ったことが無かったのですが、
イベントストラクチャが使いやすそうだったので
今回から使用してみているしだいです。
ご助言いただきありがとうございました。
今後ともよろしくお願いいたします。