LabVIEWスタイルチェックリスト



LabVIEW 2018ヘルプ


発行年月: 2018年3月
製品番号: 371361R-0112
製品情報を参照

ダウンロード (Windowsのみ)


LabVIEW 2016ヘルプ
LabVIEW 2017ヘルプ
LabVIEW 2018ヘルプ
LabVIEW 2019ヘルプ
LabVIEW 2020ヘルプ

一貫したスタイルと品質を維持するには、以下のチェックリストを使用すると便利です。これらのチェックリストは、各アプリケーションの仕様に応じてカスタマイズしてください。

メモ  LabVIEW VI Analyzer(VIアナライザ)ツールキットを使用して、VIのスタイル、効率性、その他のLabVIEWプログラミング関連事項を、対話的またはプログラム的に検証することができます。このLabVIEWツールキットの詳細については、ナショナルインスツルメンツのウェブサイトを参照してください。

フロントパネルのチェックリスト

制御器/表示器にデフォルト値を設定指定ください。デフォルト値を設定することで、追加の操作を加える必要なくVIは予想どおりに実行します。

詳細

制御器と表示器のデフォルト値でVIを実行し、VIが正常に動作することを確認してください。

メモ  グラフ、配列、文字列などの表示器にはデフォルト値を設定しないでください。これらの表示器にデフォルト値が設定されていると、無駄なディスクスペースが使用されます。

デフォルト値を設定すると、関数およびVIはユーザ操作を必要とせず内部的に多くのオプションを使用することができます。たとえば、「区切られたスプレッドシートに書き込む」VIに対して0のデフォルト値を設定すると、LabVIEWはそのデフォルト値を使用して自動的に空のファイルダイアログを表示し、入力を促します。

ラベルのテキストにサイズを合わせるを使用すると、入力されたテキストの長さに合わせて自動的にテキストボックスのサイズが変わります。デフォルトで、テキストにサイズを合わせるは一行のテキストに対して有効です。

詳細

3種類の標準フォント(アプリケーションフォント、システムフォント、ダイアログフォント)は、使用しているプラットフォームによって異なります。たとえば、Windowsの環境設定やビデオドライバの設定はフォントサイズに影響します。そのため、システムによってテキストが大きくなったり小さくなったりすることがあります。フォントの変化に対応するため、フォントが大きくなっても良いように十分な余白を取り、テキストにサイズを合わせるオプションを有効にしてください。

(VI Analyzer)ラベル、デジタル表示、制御器および表示器に別の部分が重ならないようにします。制御器と表示器の間に十分な間隔を通って、プラットフォームによるフォントの相違に対処します。制御器と表示器が重なっていると、画面の更新に時間がかかり、制御器または表示器が点滅しているように見えることもあります。

フロントパネルユーザインタフェースのチェックリスト

フロントパネルユーザインタフェースは、操作と結果が明確で、VIおよびアプリケーションの有用性を強化できるようにデザインします。
色を過剰に使用しないでください。色は論理的に、控えめに、一貫性を持って使用してください。
実行を中断ボタンは無効にしてください。システムXボタンまたはファイル→停止オプションを使用して、別の停止ボタンを追加することなくリソースを安全にシャットダウンします。

詳細

実行を中断ボタンをクリックすると、VIはすぐに停止するため、現在の反復は完了しません。外部ハードウェアなどの外部リソースを使用するVIを中断すると、リソースが適切にリセットまたは解放されないため状態が不明なままになる可能性があります。

ツールバーは非表示にします。
すべての制御器に一貫したスタイルを使用します。できる限りシステム制御器またはシルバースタイル制御器を使用します。
カスタム制御器または指定タイプ定義制御器を使用すると、制御器の外観をカスタマイズすることができます。指定タイプ定義制御器は、使用する各位置で制御器の外観を精密に維持する場合のみに使用します。
(VI Analyzer)アプリケーションのすべてのインタフェースで標準フォント(アプリケーションフォント、システムフォント、ダイアログフォント)を使用します。

詳細

異なるフォントを使用する特別な理由がない限り、標準フォントを使用してください。たとえば、等幅フォントを使用すると、文字の使用を制限する文字列制御器/表示器の文字幅を一定に保つことができます。

数値入力を構成してデータ範囲を設定し、ユーザが間違って不正な値を入力できないようにします。
制御器は左上部から右下部に配置します。

詳細

制御器は通常使用する順番に配置します。ユーザに表示されるトップレベルVIでは、最も重要な制御器を最も目立つ位置に配置してください。サブVIのフロントパネルでは、制御器/表示器をコネクタペーンのパターンと対応する位置に配置してください。

タブ制御器やサブパネルのような近似性、アラインメント、装飾体、UI機能に基づいてUI要素を整理します。
類似したデータ構造と一致する配列スタイルを使用してください。

詳細

たとえば、指標制御器を削除してスクロールバーを追加することで、配列スタイルがリストボックスのスタイルと一致します。

フロントパネルをアプリケーションで使用するモニタ解像度に合うように構成します。
ラベルを使用して制御器と表示器の機能を説明します。キャプションは、ラベルで表示できる以上の情報を必要とする制御器/表示器に対して、またはプログラムで制御器の表示テキストを変更する機能が必要な場合のみに使用してください。

詳細

以下の表はキャプションおよびラベルを使用する状況とそれに対する例を示しています。

状況
ユーザ向けに表示される制御器では、ブロックダイアグラムのスペースを無駄に使用しないために、詳しい説明はキャプションに入力し、ラベルには短い名前を入力します。 ボルト、オーム、アンペアなどの選択肢があるリング制御器やスライド制御器のラベルには、V/O/Aなどのラベルよりも「表示用の単位を選択」というキャプションのほうが適しています。キャプションは、プロパティノードを使用してプログラム的に変更することもできます。
デフォルト値または単位が一般的でない場合、ラベル名にデフォルト値と単位情報を加えてください。 エラー入力パラメータにはエラー入力なしのデフォルト値を加えます。
複数のプラットフォームで使用する場合は、制御器の名前に特殊文字は使用しないでください。 「°」の記号はすべてのプラットフォームで正しく表示されない場合もあるため、°Fの代わりにdegFを使用します。
ブール制御器を使用する場合、どの状態(TRUEまたはFALSE)がONなどの機能に対応していることを示す名前を使用します。デフォルトの状態は括弧内に示します。チェックボックスやラジオボタンなどの制御器では、ユーザはブールテキストをクリックして値を変更することができます。ブール制御器ではフリーラベルを使用してスイッチの各位置の意味を明示することができます。 ユーザの動作を説明しているキャンセルリセット初期化のようなフリーラベルを使用してください。

フロントパネルダイアログのチェックリスト

(VI Analyzer)できる限りシステム制御器スタイルを使用します。システム制御器スタイルを使用することで、使用しているオペレーティングシステムで使用されているダイアログに類似したダイアログを作成することができます。
ダイアログウィンドウの外観に類似したフロントパネルでは、スクロールバーは使用しないようにします。ダイアログボックスはすべての情報が表示されるようにデザインします。スクロールバーは制御器/表示器上でそれぞれに適用するように使用します。
タイトルバーを使用する場合は、ダイアログの目的を説明しているウィンドウタイトルを付けてください。デフォルトVI名をウィンドウタイトルとして使用しないでください。これはVI名ではダイアログの目的が有効に説明されないためです。
メニューを使用する場合、ダイアログウィンドウに特定のメニューのみを使用してください。デフォルトメニューは使用しないでください。

詳細

デフォルトメニューは必要以上のオプション、また特定のアプリケーションでは意味をなさないオプションを提供します。アプリケーション用のメニューオプションをカスタマイズしてプロフェッショナルな外観にします。

ダイアログボックスはクリティカルなユーザ操作用のみに使用してください。

詳細

ダイアログボックスのシステム制御器を使用して、ユーザからの設定および構成情報を収集します。タブ制御器を使用してフロントパネルの制御器および表示器を小さな領域にグループ化することで、ダイアログボックスをすっきりまとめることができます。

多くのプログラムでは、ダイアログボックスを使用してメッセージを表示します。ただし、このタイプのダイアログボックスは必要以上に使用しないようにしてください。重要ではない警告の表示には、ステータステキストウィンドウを使用してください。

すべてのダイアログはメインアプリケーションでモーダルであるか、浮動であるようにします。ダイアログがモーダルまたは浮動であると、ダイアログが他のウィンドウの後ろに隠れてしまうことがありません。

ダイアログのユーザインタフェースにはシステムパネルの背景色を使用して一貫性を保ちます。

条件のチェックリスト

UIフロントパネルと制御器の説明とヒントラベルを作成し、ユーザに対してオブジェクトの目的と使用方法を表示します。

詳細

オブジェクトを他のVIにコピーする場合、その説明もコピーされます。新規オブジェクト用に説明を変更する必要がある可能性もあります。

制御器の直観的キーボードショートカットおよびタブ順序を設定します。

詳細

マウスよりもキーボードを使用したいユーザもいます。製造プラントなどのような環境では、キーボードしか使用できない場合もあります。キーボードのショートカットによってVIが使いやすくなるため、マウスの使用が可能であってもVIに対しキーボードのショートカットを設定することを検討してください。

フロントパネル上のオブジェクトに対し、キー操作を設定することができます。 制御器のタブ順序は左から右へ、上から下に設定してください。フロントパネルのデフォルト制御器(通常はOKボタン)のキーボードショートカットには、<Enter>キーを設定します。ただし、フロントパネル上に複数行設定の文字列制御器がある場合は、<Enter>キーをショートカットとして使用しないでください。

フロントパネルにキャンセルボタンがある場合、<Esc>キーをショートカットとして設定してください。また、ファンクションキーを、ある画面から次の画面へ移動するためのナビゲーションボタンとして使用することもできます。ショートカットは、一貫した方法で使用するようにしてください。ユーザが制御器間をタブ移動する場合の順序を論理的な順序に並べ替えるには、ツールバーの編集→タブ順序を設定を選択します。画面外にある制御器は、プロパティダイアログボックスのキー操作タブで、タブ移動の対象から外すか、非表示にすることができます。

また、フロントパネルが開いたときに特定の制御器がフォーカスされるように、キーフォーカスプロパティを使用することも検討してください。

フロントパネルのユーザが使用できないインタフェース

(VI Analyzer)すべてのVIに対して、デフォルトのフロントパネル背景色を使用します。
(VI Analyzer)現在のスタイルと一致させるために透明のフロントパネルのラベルを使用します。フロントパネルのラベルが透明であることは、ユーザがそのフロントパネルを使用できないことを示しています。
(VI Analyzer)制御器/表示器を対応するコネクタペーンの端子に対して整列します。
デフォルトの色を使用します。
(VI Analyzer)ツールバー全体がフロントパネルに入るようにサイズ調整します。使いやすいように検索バーを表示します。
関連する入力と出力をクラスタにグループ化します。クラスタをタイプ定義します。複数のVIが同じクラスタと相互通信する場合は、クラスタの代わりにLabVIEWのクラスを使用することを考慮してください。
フロントパネルに細いタイプ定義のクラスタが含まれる場合、既存の標準制御器が入り、タイプ定義の一部が含まれるようにパネルのサイズを変更します。大きくて細いタイプ定義クラスタでは、幅のみが最小画面解像度に適合し、長さは適合しません。

詳細

フロントパネルが大きくて太いタイプ定義クラスタを含む場合、クラスタを表示画面の下に配置して、それを見るには下にスクロールするようユーザへのメモを配置します。大きくて太いタイプ定義では、幅と長さの両方が最小画面解像度に適合しません。

詳細

ブロックダイアグラムのチェックリスト

(VI Analyzer)フィードバックノードを使用する場合以外は、データが左から右へ流れるようにし、ワイヤが左から入り右から出るようにしてください。

詳細

このガイドラインに従わない理由がある場合は、ワイヤのラベルまたは浮動コメントで例外について説明してください。

長いワイヤのラベルを付けるには、付属ラベルを使用します。ワイヤにラベルを付けると、シフトレジスタから渡されるワイヤ、そしてブロックダイアグラム全体におよぶ長いワイヤの判別に役立ちます。

設計ガイドラインに従ってブロックダイアグラムを整列し、ワイヤを配線します。また、ブロックダイアグラム上にあるワイヤを自動的に調整することもできます。

(VI Analyzer)関数、端子、定数を整列し、間隔を揃えて、ブロックダイアグラムにオブジェクトを整然と配置します。

詳細

ツールバーのオブジェクトの整列およびオブジェクトの間隔プルダウンメニューを使用して、ブロックダイアグラムにオブジェクトを配置します。オブジェクトが1列に並び等間隔で配置されている場合は、オブジェクトを直線のワイヤでつなぐことができます。直線のワイヤを使用すると、ブロックダイアグラムが読みやすくなります。

(VI Analyzer)できる限りブロックダイアグラムで接続されていないフロントパネル端子がないようにします。
ダイアグラムは配色しないようにします。色によって見えにくくなる場合があります。
ケースやイベントストラクチャなどのストラクチャにはデフォルトの色を使用します。
実行順序を定義する必要がある場合以外はフラットシーケンスストラクチャを使用しないでください。
できる限り、並列ループは上から下へ整列し、論理的にデータフローを表示します。
常に値の読み取りや更新を行う必要がある場合以外は、制御器/表示器の端子をループやストラクチャの外に配置します。ブロックダイアグラムで、制御器の端子は最左に整列し、表示器の端子は最右に整列します。
ブロックダイアグラムには、コネクタペーンでなくサブVIアイコンが表示されるようにしてください。

詳細

ブロックダイアグラムでは、サブVIアイコンはコネクタペーンよりも便利です。VIアイコンによって、VIの目的が明確になります。コネクタペーンは入力と出力がどのように接続されているかのみを表示します。サブVIを右クリックし、表示項目を選択します。端子のオプションにチェックマークが付いていないことを確認します。

(VI Analyzer)ダイアグラムのフロントパネルオブジェクトをアイコンではなく端子で表示し、スペースを節約して現在のLabVIEWスタイルと一致させます。ツール→オプションへ移動すると、このオプションのデフォルトを変更できます。タイプ定義については例外を実行します。タイプ定義のアイコンは固有なもので、そのVIに関する情報を表示します。タイプ定義アイコンを例外にするには、アイコンを右クリックしてアイコンとして表示を選択します。
(VI Analyzer)定数内の値に重要な意味がある場合、スペースなどの単一の読みにくい値をもつ文字列定数を作成しないでください。

詳細

LabVIEWの標準文字列定数を使用してください。たとえば、空の文字列を定数として使用し、キューに待機している要素のデータタイプを指定することができます。

クラスタにアクセスする場合は、必ず「名前でバンドル」関数と「名前でバンドル解除」関数を使用してください。名前のないバンドルまたは「バンドル解除」関数の使用は避けてください。

詳細

「名前でバンドル」または「名前でバンドル解除」は、クラスタの要素をクラスタ順序ではなく名前でリファレンスします。クラスタの要素を名前でリファレンスすることによって各データ要素の目的を解読しようと努める必要がなくなります。また、VIを壊す心配なく要素の順序を変更したり新しい要素をクラスタに追加することができます。

大きなタイプ定義定数の値がタイプ定義クラスタ内の要素の理解し難い値と同じである場合、ブロックダイアグラムでタイプ定義クラスタ定数をアイコンとして表示します。

詳細

そうしない場合は、「名前でバンドル」関数と「名前でバンドル解除」関数を使用してクラスタの値を指定します。複数の要素がデフォルト値と異なる場合、「名前でバンドル解除」関数または「名前でバンドル」関数と関連する値をサブVIにラップしてサブVIをインラインします。

ブロックダイアグラムでスペースを節約するために、表示する配列要素を3~4個までに制限します。

詳細

多数の要素を含む大きな配列では、3~4個の要素のみを表示し、指標を更新して最後の要素と最初の空の要素が表示されるようにします。また、大きな配列ではスクロールバーも表示します。

ケースストラクチャやイベントストラクチャ等の条件ストラクチャは、条件テキストが完全に表示される幅に設定します。同じフレーム内の複数条件に対しては例外を設けることができます。同じフレーム内に複数条件が存在する場合、ストラクチャの表示サイズを増加してすべての条件を表示する選択を行わないこともできます。
プロパティノードまたはインボークノードを右クリックして、名前形式→短い名前を選択し、ブロックダイアグラムを読みやすくします。短い名前は小さなスペースを使用します。

詳細

特定のインスタンスにおいては長い名前のオプションが適当な場合もあります。たとえば、1つの要素の短い名前が別の要素の短い名前と同じである場合、その要素では長い名前のオプションを使用します。名前なしのオプションは使用しないでください。名前なしのオプションはユーザが要素やコードの機能を理解するだけの情報を提供しません。インボークライブラリノードはIP統合ノードのような類似したノードには同じ論理が当てはまります。

各VIは表示された複数フレームストラクチャの最も重要なフレームで保存します。たとえば、ケースストラクチャとイベントストラクチャには複数のフレームが含まれます。
(VI Analyzer)未使用のコードは削除します。

LabVIEWクラス

すべてのクラスは名詞で命名します。たとえば、サンプルクラスをReads Waveforms.lvclassではなくWaveform Reader.lvclassと命名します。
クラスを設計する場合は、他のプログラミング言語で使用されているソフトウェエンジニアリングのベストプラクティスに従ってください。

詳細

たとえば、既存の具象クラスから1つの具象クラスを受け継がないようにします。その代わりに、それらの具象クラスの両方に共通の親として抽象クラスを作成します。

LabVIEWクラスのすべてのメンバーVIは動詞で命名します。たとえば、サンプルメンバーVIをValue VIではなくRead Value VIと命名します。
VI名にクラスの名前を含まないようにします。たとえば、クラスをSpecial Waveform.lvclassと命名して、2つの波形を一緒に追加するVIがある場合に、そのVIはAdd Special Waveforms VIではなくAdd VIと命名します。
クラスのプライベートデータからデータを読み取るVIの名前の最初に「Read」という言葉を使用します。「Get」や「Get」の同義語は使用しないでください。
クラスのプライベートデータへデータをバンドルするVIの名前の最初に「Write」という言葉を使用します。「Set」や「Set」の同義語は使用しないでください。
データアクセサVIのプロパティノードの構文をサポートすることも慮してください。しかし、プロパティノードの構文を使用するアクセサはエラー端子が必要で、エラー端子を必要としないデータアクセサVIに比べて実行時のパフォーマンスに大きな負担がかかります。そのため、各クラスに対して検討し、適切な選択を行ってください。
すべてのVIは、パブリック、プロテクト、コミュニティにする特別な理由がない限りプライベートにします。
LabVIEWのクラスワイヤの外観を変更する場合、ワイヤのパターンや色を過度に多様化しないようにします。

詳細

ブロックダイアグラム内でワイヤの色やパターンを過度に多様化すると、LabVIEWコードが読み取りにくくなる場合があります。LabVIEWクラスワイヤの外観は、ブロックダイアグラムウィンドウ内で複数のクラスワイヤを区別するためにどうしても必要な場合にのみ変更してください。

クラスワイヤの外側には暗い色を使用して、白の背景色に対して目立つようにします。
クラスのプライベートデータにrefnumタイプのみが含まれる場合、クラスワイヤにはrefnumの標準色を使用します。LabVIEWのカラーパレットのユーザカラーダイアログボックスでrefnumワイヤという名前の色を検索してください。

詳細

ベストプラクティスを行うには、1つのrefnumタイプを含むクラスではrefnumタイプを要素としてのみ含みます。データ値リファレンスタイプと値渡しタイプの組み合わせをクラスに含むことはできますが、ダイアグラムでワイアを分岐すると、この組み合わせによって不明な動作が発生する可能性があります。データ値リファレンスタイプは元の要素をリファレンスします。値渡しタイプは元の要素をリファレンスするのではなく、元の要素のコピーを作成します。そのため、この2つのタイプを混合すると複雑な動作を行う場合があります。

ラベルおよびコメント

(VI Analyzer)すべての端子に意味がわかりやすく表示されたラベルを使用します。
不明確な値を含むドキュメント定数には、特定の詳細ラベルまたは添付コメントを使用します。
(VI Analyzer)透明ラベルを使用します。
ラベルを入力する際は、大文字と小文字の使用に一貫性を保ってください。
ラベル内の言語が英語の場合は単語の間にスペースを入れます。
(VI Analyzer)重複したラベルを使用しないでください。
サンプルサブVIに入力と出力のペアが含まれる場合、表示機器にの末尾に「入力」を付け、表示器の末尾に「出力」を付けます。たとえば、VIにオブジェクトと呼ばれる「入力」が含まれる場合、対応する出力を「オブジェクト出力」という名前にします。
エラー入力入力を作成するときには、必ず「入力」という言葉を含めてください。
制御器と表示器のデフォルト値と単位を表すために括弧を使用します。

詳細

それ以外の目的には括弧を使用しないでください。通常、デフォルト値が指定のデータタイプのデフォルト値と同じである場合、除外することができます。

フリーラベルはコードを説明するためにブロックダイアグラムに添付します。フリーラベルはコードがどのように実行するかではなく、コードが構成されたように実行する理由を説明します。
シフトレジスタとワイヤの内容が明確でなく複雑な場合にラベルを添付します。
端子のラベルの配置には2つのスタイルのどちらか1つを一貫して使用します。

詳細

1つ目のスタイルでは、制御器には端子の左側に、表示器では端子の右側にラベルを配置します。

2つ目のスタイルでは、端子の上部で端子ラベルを左揃えします。VI、ライブラリ、またはプロジェクト内で選択したスタイルを一貫して使用します。

(VI Analyzer)フリーラベル内では、文章を分離する目的でのみ改行を使用します。
(VI Analyzer)フリーラベルが一行全部を使用しない限り、ラベルでテキストにサイズを合わせるメソッドまたはプロパティを使用しないでください。その代わりに、フリーラベルのサイズを調整してテキストがすべて見えるようにします。また、プラットフォームによってフォントのサイズが変動する場合を考慮して、フリーラベルの底部に予備のスペースを確保します。
すべてのブロックダイアグラムでは、フリーラベルに標準のアプリケーションフォントを使用してください。

詳細

異なるフォントを使用する特別な理由がない限り、ブロックダイアグラムではアプリケーションフォントのみを使用してください。

すべてのコメントに対してデフォルトのフリーラベルを使用します。LabVIEW 2012以降でのサンプルプロジェクトなどの特別環境下では例外もあります。LabVIEW 2012以降では、異なるタイプの情報を表示するコメントの先例となる新しいスタイルを使用します。
サブダイアグラムラベルは、すべてのケースストラクチャやイベントストラクチャにデフォルトの外観を使用してください。
API VIやサンプルなどの外部用に設計されたVIには、VIの説明テキストボックスでVIの機能について説明します。すべてのVIをVIの説明テキストボックスで説明することを考慮してください。

詳細

作成したVIのドキュメントを検証するには、VIの説明を記述した後に変更を加え、詳細ヘルプウィンドウに正しく表示されるか確認してください。VIプロパティダイアログボックスのドキュメントページのVIの説明テキストボックスに、VIの使用方法と必要なパラメータ設定を記述します。

フロントパネルとブロックダイアグラムのVIプロパティダイアログボックスで誤字がないことを確認します。

サイズおよび位置

見た目がよいブロックダイアグラムを作成するには、ブロックダイアグラム内に不必要な空白や混雑がないようにします。空白は見やすくするために必要なだけ使用します。
大きなブロックダイアグラムを作成しないようにしてください。

詳細

ブロックダイアグラムウィンドウのサイズがLabVIEWコードの読みやすさに影響することがあります。ブロックダイアグラムウィンドウはスクリーンよりも大きくしないでください。ウィンドウよりコードが大きいと、ユーザはウィンドウをスクロールする必要があるため、コードが読みにくくなります。コードが大きすぎて1画面に収まらない場合には、ユーザが一方向(水平または垂直)にスクロールするだけで残りのコードを表示できるようにしてください。ブロックダイアグラムをスクロールしなければならない場合は、サブVIの使用を検討してください。

ブロックダイアグラムはツールバー全体が表示されるサイズにします。たとえば、ブロックダイアグラムを検索バーが表示されるサイズにします。

プログラミングチェックリスト

複数の場所で使用される制御器(とくに列挙体制御器およびデータストラクチャ)のデータタイプを保存するには、指定タイプ定義ではなくタイプ定義を使用します。

詳細

特定の制御器を複数の場所で使用する場合や、複数のサブVI間で大規模なデータストラクチャをやり取りする場合は、タイプ定義を使用してください。

タイプ定義制御器を使用すると、制御器やデータストラクチャの変更内容をVIまたはサブVI全体に自動的に反映させることができます。

可能であれば列挙体制御器を使用します。

詳細

2つの選択肢を提示するためにブール制御器を使用している場合、今後その選択肢が増えることを考慮して、ブール制御器の代わりに列挙体制御器を使用することを検討してください。

リング制御器よりも列挙体制御器を使用します。

リング制御器を使用する必要がある場合は、指定タイプ定義として構成することですべてのメニュー項目が使用するたびに更新されます。指定タイプ定義を作成する場合、将来容易に拡張できるように最も長い言葉よりも大きなサイズにします。リング制御器を使用すると、文字列ラベルをプログラム的に変更したい場合にフロントパネルと容易に対話することができます。ブール制御器の代わりにリング制御器を使用することをお勧めします。リング制御器の方が、制御器を3つ以上の選択肢を持つように変更する可能性がある場合に簡単にオプションを追加できます。

列挙体制御器の文字列ラベルはデータタイプの一部であるため、実行時にその文字列ラベルをプログラム的に変更できません。

列挙体制御器を使用している場合、常に制御器のタイプ定義を作成します。タイプ定義を作成すると、列挙体制御器に項目を追加したり削除するたびにコードを書き直す必要がなくなります。

列挙体制御器は、ケースストラクチャに配線すると文字列ラベルがセレクタラベルに表示されるため、ブロックダイアグラムのコードを分かりやすくする上でも便利です。

ケースストラクチャを使用する場合、セレクタ端子に接続されているワイヤ用に個別のトンネルを作成しないでください。その代わり、ストラクチャ内でセレクタ端子をワイヤします。

詳細

ブール出力をケースストラクチャの前に配置しないようにします。 その代わりに、ブール以外のセレクタを使用します。ストラクチャ内にブール論理を配置すると、間違った操作をする可能性が少なくなります。

詳細

列挙体にワイヤされたケースストラクチャ用のデフォルトケースを取り除きます。

詳細

ケースストラクチャのデフォルトケースにワイヤされた列挙体に新しい要素を追加すると、コードはデフォルトケースを実行するためエラーが発生します。

名前付きキューおよび名前付きノーティファイアは使用しないでください。

詳細

可能であれば、名前付きキューおよび名前付きノーティファイアの代わりにリファレンスワイヤを渡します。名前付きキューおよび名前付きノーティファイアを使用する必要がある場合、名前が衝突しないようにしてください。

アプリケーション、制御器、VI、ファイルなどのリファレンスは、「リファレンスを閉じる」関数を使用して閉じてください。リファレンスを開いた同じVIでリファレンスを閉じます。

詳細

リファレンスの開閉にはサブVIを使用できます。サブVIを使用してリファレンスの開閉を行う場合、両方のをサブVIをペアにします。これらのペアを反映するVI名とアイコンを使用します。たとえば、「開く」と「閉じる」や「取得」と「開放」などの言葉のペアを使用します。

ファイルやディレクトリの指定には文字列制御器や定数でなく、パス制御器や定数を使用してください。

詳細

ファイルやディレクトリの場所を指定するには、パス制御器またはパス表示器を使用します。文字列とは異なり、制御器と表示器は使用しているプラットフォームの標準構文を使用してパスをフォーマットします。

パス制御器の参照ボタンに対し、適切な参照オプションを設定してください。たとえば、ディレクトリを選択する必要がある場合、プロパティダイアログボックスの参照オプションページでフォルダのみおよび既存のみオプションを選択します。

パス定数およびパスデータタイプを使用すると、ブロックダイアグラム上にパス定数を追加できます。パス定数とパスデータタイプは、文字列定数や文字列データタイプと異なり、プラットフォーム固有の表記方法が使用されます。

VI内で絶対パスの使用をできるだけ避けてください。

詳細

可能であれば、相対パスを使用してコードでルートパスを定義するか、システム設定またはアプリケーションの場所に応じて実行時に動的にルートパスを決定してください。コードを実行しようとしているオペレーティングシステムで、相対ファイルバスが動作することを確認してください。

絶対パスは、アプリケーションのビルド作成時や別のコンピュータでの実行時に問題が発生する可能性があります。絶対パスを使用する必要がある場合は、パスが存在するかどうかをテストして存在しない場合には適切なパスを作成するコードが含めるようにします。

ワイヤでデータを渡すことができる場合には、変数を使用しないでください。データを読み取るローカル変数はそれぞれ、データのコピーを作成します。ワイヤを使用できない場合のみローカル変数とグローバル変数を使用します。特に、機能的グローバル変数の代わりにワイヤ、データ値リファレンス、またはクラスを使用します。これは機能的グローバル変数よりもワイヤの方が簡単に追跡およびデバッグできるからです。
できれば、In Place要素ストラクチャを使用して、データの動きを明確に伝達します。
コードの重複を回避してください。サブVIを使用して、異なる部分のアプリケーションをカプセル化またはモジュール化します。サブVIは1つの明確な目的のために作成して容易に再利用およびテストできるようにします。
エラー状態、無効な値、キャンセルボタンを確認するためのテストVIを作成してください。テストVIは、繰り返し使用できるように独自のディレクトリに保存します。Unit Test Frameworkツールキットを使用してVIのユニットテストを行うこともできます。
効率性、データコピー、正確さ(特に、データ依存のないVI部分)の観点からVIを見直してください。メモリの割り当て先を決定するにはバッファ割り当てを表示ウィンドウを使用します。

発生が稀なケースのチェックリスト

適切な同期テクニックを使用することで競合状態を回避します。

詳細

キュー、データ値リファレンス、セマフォなどの同期テクニックを使用して、競合状態が起こらないようにします。機能的グローバル変数でデータを変更する動作を含むクリティカルセクションを保護する場合、競合状態を防止するために機能的グローバル変数を使用することもできます。機能的グローバル変数でデータを読み取りおよび書き込みのみを行う動作を含むセクションを保護する場合、機能的グローバル変数を使用して競合状態を防止することはできません。

サポートされていないすべての値に対して適切に対処してください。

詳細

たとえば、APIを構築する場合、サポートされていない値が入力された場合にエラーが返されるようにします。ユーザインタフェースを作成する場合、制御器の入力範囲を構成します。

Forループを0回実行した場合、Forループが予想どおりに動作することを確認します。

詳細

この状態でループを介して値を渡す必要がある場合、シフトレジスタを使用してください。値やリファレンスをForループを介して渡すよう配線する場合、トンネルではなくシフトレジスタを使用します。

後に新規のケースやイベントを追加してもプログラムにバグを介入しないと確信できる場合のみ配線されていない場合、デフォルトを使用を選択します。定かでない場合はこの機能は使用しないでください。
(VI Analyzer)Forループの実行数が容易に確認できることを検証してください。同じForループでの反復を制御するために自動指標とN端子の両方を使用することは避けてください。これらのオプションを1つ以上使用すると、何回ループが実行するべきか混乱する場合があります。また、サイズの異なる複数配列を自動指標する場合は注意が必要です。
(VI Analyzer)同じ名前の複数の要素を含むクラスは作成しないでださい。
複数のプラットフォームで実行するVIは特に注意して作成する必要があります。

詳細

できるだけ特定のプラットフォームでのみ正常に実行するVIを作成することは避けてください。その代わりに、プラットフォーム特有の機能をターゲットに特定した条件無効ストラクチャの中に配置します。

ライブラリ関数呼び出しノードを含むVIは、プラットフォーム固有です。ライブラリ関数呼び出しノードを使用して共有ライブラリを呼び出すVIは、プラットフォームに依存し、各プラットフォーム用のライブラリがある場合は各プラットフォームでのみ動作します。ライブラリ関数呼び出しノードVIを含むVIを他のプラットフォームに移動する場合は、新しいプラットフォーム用にコンパイルされた共有ライブラリを指定するようにノードを更新する必要があります。

また、条件無効ストラクチャを使用することにより、プラットフォーム特定のコードを構成することもできます。これらのVIは、ソース管理との互換性を増す目的に限ってソースとして構成します。

無限タイムアウトを使用する場合、待機状態を停止するプログラム的メカニズムを設けてください。

詳細

任意のタイミング遅延を使用して、遅延の間に重大なイベントが実行されると推測しないでください。また、イベントが発生したことを確認せずに処理を継続しないようにしてください。遅延の使用が必要な場合は、遅延の間隔を決定した理由をコメントとして残してください。

エラー処理のチェックリスト

エラーを適切に処理します。

詳細

レポートするすべての場所でコード内にエラーが必要か考慮します。エラーを配置する理由が明確でない場合は、理由を説明するコメントを付けます。

一貫したエラー処理方法を使用します。プログラムが必ずすべてのエラー状態と無効な値を処理できるようにしてください。ログ、終端、ユーザへの通知など、エラーの動作を決定します。

(VI Analyzer)新規VIを含むすべてのVIで自動エラー処理を無効にしてください。自動エラー処理を使用すると、エラーが発生した場合に実行が停止され、入力があるまで続行を待機します。この自動停止はデプロイされたシステムやアプリケーションで問題になる場合があります。
最初に発生したエラーを最優先とします。これらのエラーはそれに続くエラーの原因になる場合がよくあります。

詳細

ループを介してエラーを渡す場合、警告を保持するためにトンネルではなくシフトレジスタを使用します。特別な理由がない限り、エラーを結合する場合は最初のエラーを優先します。

エラー入力およびエラー出力パラメータを含むVIのケースストラクチャを使用してエラーとエラー状態を識別します。

詳細

エラーが発生しても実行する必要のあるコードやエラーなしケースでパフォーマンスを最適化する必要のあるVIに関しては例外を設けます。VIドキュメントやコメントを使用して例外を記述します。

アプリケーションでのすべてのエラーに関する説明を含んだカスタムエラーファイルを作成することもできます。

パフォーマンスのチェックリスト

VIを設計するときには、常にパフォーマンスに留意します。パフォーマンスの向上、開発のしやすさ、コードの維持のいずれかを選択する必要がある場合、指定のプロジェクトに最も適切なトレードオフを選択してください。
(VI Analyzer)必要でなければ、「配列連結追加」関数や「文字列連結」関数を含むコードなどの、ループ内でメモリを再割り当てするコードを含まないようにします。ループ内でメモリを再割り当てすると、パフォーマンスが遅くなります。
(VI Analyzer)不必要なタイプ強制変換は行わないでください。タイプ強制変換はメモリを割り当てるため、パフォーマンス低下の原因になります。
不必要なデータのコピー(とくにデータが大きい場合)は行わないでください。
DAQやファイルI/Oコードなどのリソースを開閉するコードは、ループの外に配置するよう考慮してください。ループ内でリファレンスの開閉を繰り返すのは非効率です。
(VI Analyzer)連続して実行するループの実行速度を制限するコードを含んでください。

詳細

デフォルトで、Whileループは最高速度で実行するため、実行中にCPUのリソースをすべて使い切ってしまいます。「待機」関数やタイムアウト値などのブロックメカニズムを使用することで、Whileループの実行を必要な回数のみに抑え、システムリソースを保持することができます。

(VI Analyzer)イベントストラクチャを使用して、必要な場合にUI操作を監視します。

詳細

イベントストラクチャで値変更イベントを使用する方が適切な場合に、フロントパネル制御器をポーリングしないようにします。イベントストラクチャ内で時間のかかるコードを使用しないようにします。アプリケーションで生産者/消費者パターンに類似したものを使用するよう考慮します。値変更イベントケース内の制御器用に構成された値変更イベントの制御端子を配置します。

以下の図は、イベントストラクチャの外に停止ボタンとして制御端子を配置することができる状況を示しています。

(VI Analyzer)イベントデータノードを使用するデータのみを含める大きさにサイズ変更します。ノードを使用しない場合、ノードを1つの要素にサイズ変更してフレームの端に移動します。

条件のチェックリスト

(VI Analyzer)インラインとサブルーチン優先度を使用して、実行速度を向上します。
(VI Analyzer)並列Forループ反復を構成して、パフォーマンスに調整を加えるよう検討してください。
(VI Analyzer)値プロパティではなくローカル変数を使用して、フロントパネルオブジェクトを更新します。
(VI Analyzer)フロントパネルで多くの更新を行う場合、「制御器値を指標で取得」関数および「制御器値を指標で設定」関数を使用します。
(VI Analyzer)配列指標/要素置換操作およびクラスタ読み取り、変更、書き込み操作にIn Place要素ストラクチャを使用します。

サブVIのチェックリスト

各サブVIは低い結合度と高い凝集度で設計します。これにより、各サブVIが理解しやすく、保守も簡単で、容易にテストできるようになります。関連するサブVIのグループをライブラリに整理します。共有ライブラリ(DLL)は使用しないでください。
(VI Analyzer)サブVIにわかりやすいアイコンを作成してください。

詳細

デフォルトのアイコンや空のアイコンは使用しないでください。新しいアイコンは、既存のアイコンと異なりはっきりと区別できるように作成します。アイコンは、パレットやブロックダイアグラム上でVIを表します。アイコンが的確に作成されていると、多くのドキュメントを必要とせずそのサブVIを理解することができます。

(VI Analyzer)繰り返し使用でき、テスト可能なサブVIを使用してください。
(VI Analyzer)すべてのサブVIでエラー入力クラスタとエラー出力クラスタを使用してください。

詳細

エラー入力エラー出力のクラスタは実行フローの制御器に役立つため、サブVIの処理にエラーが発生しない場合でも、すべてのサブVIにエラー入力エラー出力のクラスタを含めます。サブVIにエラーが入力された場合、ケースストラクチャを使用して、サブVIのコードを実行せずにエラーだけを渡すようにすることができます。

APIの設計のチェックリスト

関連のあるVIには、同じコネクタペーンを使用してください。コネクタペーンは、LabVIEWプログラミングのベストプラクティスに従って配線します。
(VI Analyzer)5×2×2×2×5(5x3x3x5)または4x2x2x4のコネクタペーンパターンを使用してください。

詳細

ライブラリ、プロジェクト、開発チームで一貫したコネクタペーンのパターンを保持します。端子が16個以上あるコネクタペーンはなるべく使用しないでください。LabVIEWのコアVIを頻繁に使用する場合、4x2x2x4のパターンを使用します。NI-DAQmxやLabVIEW FPGA VIなど、5x2x2x2x5パターンを使用するライブラリで頻繁に作業する場合は5x2x2x2x5パターンを使用します。

左側の端子を制御器として使用し、右側の端子を表示器として使用します。すべての制御器を表示器の左側に配置するのであれば、上部と下部の端子を使用することもできます。
関連する制御器と表示器を、コネクタペーンの同じ相対的な位置に配置します。たとえば、データ入力制御器を左側の中央の端子に割り当てる場合、データ出力表示器を右側の中央の端子に割り当てます。
制御器または表示器がAPI全体で同じ機能を実行する場合、その制御器または表示器に一貫性のある名前を付けてAPIのすべてのコネクタペーンで同じ位置に配置します。
(VI Analyzer)パス、リファレンス、LabVIEWクラスを上部の隅に配置してください。
(VI Analyzer)エラー入力およびエラー出力端子を相対する下部の左および右端子(4x2x2x4コネクタ上では端子8および11、5x2x2x2x5コネクタ上では端子11および15)に割り当てます。
(VI Analyzer)コネクタペーン上の空の端子は、将来拡張できるように保存しておきます。
VIが機能するために配線する必要のあるパラメータの入力端子を必須として設定します。
有効なデフォルト値の入力端子を推奨として設定します。
任意の端子は必要な場合のみ使用します。
コネクタペーンで必須推奨または任意を設定します。

詳細

コネクタペーンの端子に対し必須推奨任意のどれを設定するかによって、詳細ヘルプウィンドウの入力や出力の外観が変わります。また、この設定によって、ユーザによるサブVIの配線し忘れを防止できます。サブVIが適切に動作するために配線する必要のある入力は、必須に設定します。ほとんどの場合有効なデフォルト値を持つ入力には、任意を設定します。これらの入力を配線しないままにしても、VIは機能します。

APIのアイコンでは、一貫したバナーまたはグリフを使用します。アイコンテンプレートを使用すると便利です。アイコンスタイルの詳細については、ここをクリックしてください。
VIアイコン(とくにLabVIEWクラスのパブリックとダイナミックディスパッチVI)にはテキストを使用しないようにします。テキストの言語圏外のユーザには、理解が困難な場合があります。
ライブラリはAPIに配置して、組織化を改善します。
APIの一部でないライブラリ内のVIは、プライベートとして指定します。
アイコンを作成する際は、以下のアドバイスを参考にしてください。

詳細

  • LabVIEWライブラリにあるアイコンをプロトタイプとして使用します。アイコンにピクチャを使用できない場合は、テキストを使用することもできます。アプリケーションをローカライズする場合、アイコン上のテキストもローカライズします。ユーザが使用しやすいフォントとフォントサイズを選択します。
  • 関連するVIに対し、アイコンのスタイルを統一します。これにより各VIの関連性を視覚的に理解することができます。
  • 必ず標準サイズのアイコン(32 x 32ピクセル)を作成してください。小さなアイコンを使用したVIは、サイズの多様性のために選択や配線がしづらい場合があります。
  • アイコン内で口語表現は使用しません。口語表現は解釈が難しいためです。また、アイコンを作成する際には、文化や言語の相違も考慮します。画像によっては他の文化圏で適切に理解できない場合があります。たとえば英語圏で、データログ関連のVIに、木の枝や木こりの画像を使用しないでください。

構成のチェックリスト

すべてのファイルを論理的に構成します。VIの名前は意味のあるものにし、円マーク(\)、スラッシュ(/)、コロン(:)、チルダ(~)を使用しないでください。VI名には、VIの機能を明確に、また正確に表す名前を選択します。

詳細

VI、LLB、ディレクトリの名前には、円マーク(\)、スラッシュ(/)、コロン(:)、チルダ(~)など、ファイルシステムによっては受け入れられない可能性のある文字を使用しないでください。ほとんどのオペレーティングシステムは、最大255文字までの、長い説明的な名前をファイルに付けることができます。

ファイルのバックアップコピーは、通常の検索対象外にあるディレクトリに保存します。これにより、開発中のVIを開く際にバックアップコピーがメモリにロードされることを回避できます。

すべてのファイル名には、略語を使用せず必要な場合はスペースを入れて明確にします。ファイル名に使用する言葉の最初の文字は大文字にします。
(VI Analyzer)仮想フォルダを使用して、ライブラリのパブリックメンバーとプライベートメンバーを区切ります。
同じ名前のカスタム制御器をラベルとして保存します。たとえば、Alarm Boolean.ctlのデフォルトラベルは「Alarm Boolean」にします。
Windowsの最大パス長(260文字)内に収まるようにしてください。

プロジェクト構成のチェックリスト

プロジェクトのトップレベルVIを適切なターゲットのすぐ下に配置します。VIをトップレベルVIとしてフラグできないため、トップレベルVIを対応するターゲットの下に配置することで、どのVIがトップレベルVIかを明確に示すことができます。
VIを階層的なディレクトリに整理して、トップレベルVIに簡単にアクセスできるようにし、サブVIはサブディレクトリに配置します。プロジェクトのディレクトリの数やレベルに制限を設けてください。
すべてのVIをライブラリ、クラス、または仮想フォルダ内に配置します。他のコードを呼び出せるプラグインアーキテクチャ用のコードを作成しない限り、自動更新フォルダは使用しないようにします。自動更新フォルダはプラグインがインストールされているディレクトリからコードを表示します。
未使用のすべてのファイルを削除します。

詳細

プロジェクトエクスプローラウィンドウでプロジェクトルートを右クリックし、ショートカットメニューから発呼者がない項目を検索を選択して、発呼者がない項目を検索ダイアログボックスを表示します。このダイアログボックスは、削除できるすべての項目を識別します。

ソースコード配布のチェックリスト

すべてのVIとプロジェクトをメインモニタの上部左の領域に保存します。
ブロックダイアグラムのすべてのVIを、フロントパネルのウィンドウよりも少し下に、またフロントパネルスクロールバーの少し右に保存することで、ウィンドウバーから開いたときに両方のウィンドウにアクセスすることができます。
VIが所定の場所にロードするよう、最大化したフロントパネルまたはブロックダイアグラムでVIを保存しないでください。
各VIは、表示されたケースストラクチャやイベントストラクチャなどの複数フレームストラクチャの最も重要なフレームで保存します。
(VI Analyzer)VIを配布する前にすべてのブレークポイントを削除して、実行中に予期せぬ不要な停止を防止します。
(VI Analyzer)VIのリビジョン履歴を削除してコメントを削除します。
(VI Analyzer)デバッグ機能を無効にしてパフォーマンスを改善します。

RT特有のチェックリスト

可能な限り、非確定的タスクにはタイミングループではなくWhileループを使用します。
ドキュメントを作成する場合、タイミングループで実行しているコードを説明する場合、「タイムクリティカル」ではなく「確定的」という用語を使用してください。「タイムクリティカル」という用語は、並列タスクをスケジュールするVI優先度として認識されています。
可能な限り、サブVIでは確定的優先度の設定ではなくタイミングストラクチャを使用します。
タイミングストラクチャ内でコードを並列にして、定義した順序で連続して実行するようにします。
サブVIのオーバーヘッドを最小限に抑えるには、タイミングストラクチャ内でVIのインラインプロパティを使用します。
共有リソースにアクセスするタイミングループでサブVIを使用する場合、優先度がサブルーチンのサブVIを右クリックし、ビジー状態時はサブルーチンの呼び出しをスキップオプションを選択します。
タイミングループ内に制御器と表示器を配置すると、低速で非確定的に実行するため、配置しないようにします。
タイミングループで、内部の左ノードエラーとエラー入力を結合して存在する構成エラーを確認します。また、外部の右ノードをエラー出力と結合します。
タイムクリティカルなコードではエラーを適切に処理することが大切です。
可能であれば、確定的コードではケースストラクチャではなく選択関数を使用します。選択関数の方が確定性が高くなります。
すべてのタイムクリティカルループで遅延を確認します。

データ処理のチェックリスト(RT)

ファイルIOのパフォーマンスが重要な場合、書き込みおよび読み取り用に最大のチャンクサイズを確保します。これはターゲットによって異なる場合があります。
ストリーミングデータには、RT FIFO有効のシェア変数ではなくRT FIFO関数を使用してください。しかし、RT FIFO有効のシェア変数は現在値の通信に使用できます。
重要なデータには、ファイル更新関数を使用してファイルを頻繁に更新します。RelianceとFATは1秒に一度しか更新しません。
ログファイルのサイズと量を制限してシステムの信頼性を改善します。ファイル数が大きく、数が増加しているディレクトリは遅くなり、システム動作を変更する可能性があります。その結果、予期せぬ動作が発生する場合があります。

初期化およびシャットダウンのチェックリスト(RT)

初期化動作を停止するシャットダウンコードを実装します。これは次のステップで再起動が呼び出される場合にも該当します。
アプリケーション内から構成ファイルに書き込みを行わないでください。構成ファイルへの書き込みは、ファイルを破損する可能性があり、次の再起動を正しく初期化できない場合があります。構成ファイルに書き込みを行う必要がある場合は、破損が発生した場合の回復方法を設定したり破損の程度を限定してください。
条件無効ストラクチャ内にコントローラを再起動するコードを配置して、プログラムの最後に簡単に再起動を無効にできるようにします。条件無効ストラクチャ内に再起動コードを配置すると、デバッグ中にコードを無効にすることができ、またアプリケーションをデプロイするときに有効にすることができます。

その他(RT)

RTパレット上のタイミングVIを使用します。
開発からデプロイまでのシステムにおけるプロセッサとメモリの使用量を監視します。

詳細

プロセッサの使用率が長時間高いために、スレッドのリソース不足が発生してスレッドを実行できなくならないように注意します。メモリ使用量が増え続けないように注意し、増え続けた場合のリカバリ計画を設けうるようにします。

FPGA特有のチェックリスト

FPGAリソースの使用方法を計画する場合、トップレベルのVI制御器と表示器がリソースを大量に必要とすることを念頭に置いて計画してください。
エラー出力を持つノードを使用する場合、エラーを即座に処理するコードを含んでください。

詳細

FPGAでのローカライズ版のエラー処理は、FPGAのエラークラスタが33ビット(ステータス用に1ビット、エラーコード用に32ビット)であるため、通常FPGAリソースの利用度が低くなります。通常33ビットは1ビットまでに削減できます。

ケースストラクチャ(特に、シングルサイクルタイミングループ)内のハードウェア出力に書き込みを行わないでください。各ケースのハードウェア出力を明確に定義し、ケースストラクチャの外のハードウェア出力に書き込みを行います。
DMA FIFO読み取りおよび書き込みのタイムアウト出力を監視して、適切に対応します。

詳細

タイムアウトが発生しても問題ない場合、またはタイムアウトが確実に発生しないとわかっている場合以外は、ターゲット指定FIFOのタイムアウト出力も監視します。タイムアウトの長さを処理するには、出力をラッチしてデータの整合性を確認するためにFPGAを再起動するようホストに通知するか、ハンドシェークプロトコルを使用してデータの再送信を処理します。

適応する場所には4線式ハンドシェイクを使用して、必ずワイヤに「入力有効」、「出力準備完了」、「出力有効」、「入力準備完了」などのラベルを付けてください。
ホストに渡す前に、小数点のデータタイプをシングルデータタイプに変換することを考慮してください。

FPGAホストインタフェース

VIを「FPGA VIリファレンスを開く」関数から自動的に実行するのではなく、「リセット」と「実行」メソッドを特別に呼び出すことを考慮してください。これにより、FPGAを実行する前に既知の状態にすることができます。
DMA FIFOから読み取りの実行中に、メモリの再割り当てやCPUのポーリングを行わないでください。

詳細

  • 構成メソッドを使用して、適切なホスト側のバッファを設定することを考慮してください。ブロックRAMを保存できる場合に、大きなFPGAサイズのバッファを使用しないようにします。
  • DMA読み取りのタイムアウトを0に設定します。
  • 要素の固定サイズ数(データチャンネル数の倍数)を読み取ります。
  • 要素の読み取りは、バッファが一杯になるまで待機します。
FPGAと通信するAPIを作成する場合は、ダイナミックリファレンスタイプを使用します。


この記事は役に立ちましたか。

役に立たなかった