LabVIEW使イベント駆動プログラミング

概要

このホワイトペーパーでは、手続き型プログラミングとイベント駆動型プログラミングの違いについて説明します。また、LabVIEWを使ったイベント駆動型プログラミング方法を簡単に説明します。イベント駆動型プログラムは、実行時にユーザが指定した順序で実行されます。LabVIEWでは、イベントストラクチャを使って、アプリケーションのイベントを扱えます。イベントストラクチャを使えば、ブロックダイアグラムが簡素化され、CPUの使用率を最小限に抑えられます。また、LabVIEWの以前のバージョンでは扱えなかったユーザインタフェースのイベントを扱えます。

内容

手続きおよびイベント駆動アーキテクチャ

イベントはユーザが実行するアクションによって発生します。例えば、マウスでクリックすることで、マウスのイベントが発生したり、キーボードのキーを押すことで、キーボードのイベントが発生したりします。システムイベントが起こると、OSがイベントを特定し、イベントに応答する役割りを果たします。OSによって、このプロセスの実装方法は異なります。ただし、全てのOSはシステムイベントに応答するとき、システムイベントメッセージをブロードキャストします。システムで実行されるどのアプリケーションも、その特定のシステムイベントのために記述されたコードを実行することで、システムイベントに応答できます。

手続き型またはトップダウンアーキテクチャでは、アプリケーションは、指定されたシーケンスの一連の指示を実行して、タスクを実行します。ユーザによるアクションではなく、プログラムのストラクチャおよびシーケンスが、手続き型アプリケーションの実行順序を制御します。プログラムの実行は、メインプログラムから開始され、その後、極めて予測可能な形でメソッド呼び出しや制御ステートメントを通過していきます。

イベント駆動型プログラムでは、まずプログラムはイベントの発生まで待機し、イベントが発生したら応答して、また次のイベントの発生まで待機します。プログラムの応答の仕方は、その特定のイベント用に記述されたコードに依存します。イベント駆動型プログラムの実行順序は、発生するイベントと、これらのイベントの発生順序に依存します。プログラムが次のイベント発生まで待機している間、CPUリソースは解放されるので、他の処理タスクの実行に使用できる場合があります。

LabVIEWイベント使う


LabVIEWでは、イベントストラクチャを使って、アプリケーションのイベントを扱えます。ケースストラクチャと同様、イベントストラクチャには複数のケースを追加できます。これらのケースは1つ以上のイベントを処理するように構成できます。これらのイベントが発生すると、LabVIEWは関連付けられたケースを実行します。次のブロックダイアグラムは、サンプルのイベントストラクチャを示しています。

イベントを構成するには、イベントストラクチャの枠線を右クリックして、ショートカットメニューから「このケースで処理されるイベントを編集」を選択します。「イベントを編集」ダイアログボックスが表示されるので、1つ、または複数のケースを編集します。

イベントストラクチャを使うと、CPU使用率が最小限に抑えられます。それは、VIがフロントパネルの変更をポーリングでチェックしなくなるためです。ポーリングとは対照的に、イベントストラクチャはユーザのイベントを失いません。ストラクチャがイベントキューを使ってユーザイベントを保存し、イベントの発生順にユーザイベントを処理するためです。

イベントタイプ

あるイベントは静的か動的かのどちらかであり、静的イベントは通知イベントまたはフィルタイベントである可能性があります。静的イベントはフロントパネルとやり取りするためだけのものです。静的な通知イベントが最も一般的で、これはフロントパネルで発生したイベントに応答するのみです。静的な通知イベントの例としては、OKボタンに対する「値変更」が挙げられます。静的なフィルタイベントは、LabVIEWがそのイベントを処理する前に、ユーザが実行したイベントをキャッチします。イベントストラクチャ内のコードは、イベントが処理されるべきか否かを判断します。ユーザがフロントパネルの「閉」ボタンをクリックしたときのフィルタイベントの例は、「パネルを閉じる」になります。「イベントを編集」ウィンドウで、フィルタイベントには赤い矢印、通知イベントには緑の矢印が付いています。

フロントパネルで発生しないイベントを含めたいときがあるかもしれません。その場合、動的イベントを登録する必要があります。動的イベントを使えば、イベントストラクチャは、コードがブロックダイアグラムのどこで発生していても応答できます。これらのイベントのサンプルは全て、このWebページに添付しています。

ダウンロード

Was this information helpful?

Yes

No