3ループフレームワーク2010/09/30 15:00

プログラムを作る時に、「デザインパターン」を利用する場合があります。
今回は、良くできたデザインパターンのテンプレートがあったので紹介します。
デザインパターンとは、プログラムの構造として良く利用されている定石です。
これは、LabVIEWに限ったものではなく、他の言語、CやJavaでも良く用いられています。

LabVIEWでも、デザインパターンは重要で、NIの講習会でも代表的なパターンが紹介されます。
良く耳にするパターンは、「ステートマシン」や「生産者消費者」でしょう。
この2つを押さえておけば、8割くらいのアプリケーションに対応できるでしょう。
さらに複雑なパターンもあり、その一つがここで紹介されている3ループのパターンです。
メリットとしては、処理タイミングの分離ができる、メンテナンスの容易さ、拡張の容易さなどがあります。
このパターンを利用すれば、速度の速い処理を実行中でもユーザの操作に対応できます。
機能を追加する場合にも、システマティックに対応できるのでグループでの開発に適しています。

このテンプレートでは、イベント処理のループ、メインステートマシンループ、データ収録ループの3つのループから構成されていいます。
イベント処理のループでは、ユーザの操作をイベントストラクチャで受け取り適切な処理を他のループに指示します。
指示を出すのに"キュー"が利用されています。
ほとんどの処理は、メインステートマシンループで実行されます。
ただし、データを収録する処理だけは、データ収録ループで行うので、タイミングが分離されます。
仮にメインループで重たい処理が動いても、データ収録のタイミングに悪影響を与えないための工夫です。
このサンプルでは、エラー処理や、コメントも丁寧に付けられているので利用しやすくなっています。

とは言っても、ほとんどのアプリケーションでは、ここまでの仕組みは必要ないでしょう。
私の会社でも、7種類のデザインパターンをテンプレートとして整備して使い分けていますが、
実際利用するのは、3種類程度で、中には一回も活用されていなものもあります。
といっても、テンプレートが無い状態からスタートするよりは格段に効率が良いのは確かです。
機会があれば、簡単なデザインパターン紹介もしたいと思います。

詳細は、下記をご覧ください。

3ループフレームワーク

システムの情報を収集2010/09/30 16:00

LabVIEWで様々なシステム情報を収集するサブVIを作りました。
参照できる項目は、下記の通りです。
ホスト名、OS 名、OS バージョン、OS 製造元、OS 構成、OS ビルドの種類、 登録されている所有者、登録されている組織、プロダクト ID、最初のインストール日付、 システム起動時間、システム製造元、システム モデル、システムの種類、プロセッサ、 BIOS バージョン、Windows ディレクトリ、システム ディレクトリ、起動デバイス、 システム ロケール、入力ロケール、タイム ゾーン、物理メモリの合計、利用できる物理メモリ、 ページ ファイル: 最大サイズ、ページ ファイル: 利用可能、ページ ファイル: 使用中、 ページ ファイルの場所、ドメイン、ログオン サーバー、ホットフィックス、ネットワーク カード

仕組みは、システム実行VIで、"systeminfo"コマンドを実行してシステム情報を取得しています。
そのままでは、全部の項目が一つのテキストファイルで戻されるだけで使いにくいので、
項目を指定すると、それに対応したデータを取り出す機能も追加しました。

サンプルは会社のサイトに掲載しましたので下記をご覧ください。

システムの情報を収集