LabVIEW はどのようにしてポーリングなしで割り込み処理を実行していますか。



使用ソフトウェア: LabVIEW Development Systems>>LabVIEW Full Development System
使用ソフトウェア・バージョン: 7.1
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: LabVIEW Development Systems

問題: LabVIEW  はどのようにしてポーリングなしで割り込み処理を実行していますか。

解決策:

LabVIEW では、オカーレンス(関数パレット»プログラミング»同期»オカーレンス)を使用して、特定のイベントが発生するまでコードのある部分を待機させることができます。例えば、ライブラリ関数呼び出しノード(関数パレット»コネクティビティ»ライブラリ&実行可能ファイル»ライブラリ関数呼び出しノード)を用いて(DLLをLabVIEWに読み込む)DLL内でイベントが発生したらオカーレンスを生成させるとします。また、ブロックダイアグラムでコードの一部が実行中で、一部がその特定のイベントを待機中であるという場合を考えます。イベントが発生したら、LabVIEW上にオカーレンスを登録し、そのイベントを待機しているコードがキューの順番によって実行されるようになります。

内部で LabVIEW は1ブロックのコードを終了する度に、キューを確認しています。ですので、他のコードが実行中であれば、オカーレンスが起こる前にその処理を先に済ませて割り込み処理を実行します。

注:こちらの操作がいつ完了されるか、確実な時間制限は保証できません。なぜなら、特にVIがライブラリ関数呼び出しノードを使用している場合に、そのノード自体が実行完了まで長い時間を要する可能性があるからです。



関連リンク: Developer Zone Example: Windows Message Queue Library
Developer Zone Category: Using DAQ Event Messaging under Windows NT/95/3.1

添付:





報告日時: 08/25/2000
最終更新日: 06/26/2013
ドキュメントID: 20O9JULJ