ディスク上のファイルへのパス、名前文字列、または既存の参照で指定されたVI、カスタム制御器、またはグローバル変数への参照を返します。


icon

入力/出力

  • cvirn.png タイプ識別子VI refnum (タイプのみ)

    タイプ識別子VI refnum (タイプのみ) は、VIリファレンスのコネクタペーン情報とデータタイプを指定します。この入力の実際の値は無視されます。

    デフォルトでは、この関数は一般VIリファレンスを返します。

    リファレンス呼び出しノードまたは非同期呼び出しを開始ノードに対してこの関数のVIリファレンス出力を使用するには、この入力にタイプ指定VIリファレンスを配線する必要があります。

    この入力にタイプ指定VIリファレンスを配線する場合、VIパスで指定されたVIのコネクタペーンがこの入力のコネクタペーンと一致していなければなりません。

  • caprn.png アプリケーションリファレンス (ローカル)

    アプリケーションリファレンスは、LabVIEWアプリケーションインスタンスへのリファレンスです。

    デフォルトでは、発呼者VIのアプリケーションインスタンスが使用されます。他のアプリケーションインスタンスへのリファレンスは、「アプリケーションリファレンスを開く」関数で取得できます。アプリケーションリファレンス入力に他のアプリケーションインスタンスへのリファレンスを配線すると、VIパスは、そのアプリケーションインスタンスが実行されているコンピュータのファイルシステム上の場所を参照します。
  • cpath.png VIパス

    vi pathには 、参照したいVIへの パス 、参照したいVIの名前を含む文字列、または参照したいVIへのVIリファレンスを指定します。

    パスを配線する場合、LabVIEWは同じターゲットのパスから前回ロードしたVIをメモリ内で検索します。名前文字列を配線する場合、その文字列はターゲットのメモリにあるVIのパスデリミタ付きの名前に完全に一致している必要があります。一致するVIがメモリ内で検索できない場合は、ディスク上のそのファイルからVIをロードしようとします。LabVIEWがファイルを検出できない場合は、エラーが発生します。

    パスが相対パスの場合、VIはそのパスを発呼者VIに対する相対パスとして解釈します。発呼者VIが保存されていない場合は、アプリケーションディレクトリに対する相対パスと解釈されます。

    メモ

    アプリケーションリファレンスでリモートのアプリケーションインスタンスを指定すると、パスはリモートマシン上でリモートファイルシステムのコンテキストに応じて解釈されます。そのパスはローカルコンピュータのパスセパレータを使用して表されますが、要求時にリモートコンピュータのパスセパレータ (デリミタ) に変換されます。

    例えば、WindowsベースのアプリケーションからLinux上の My HD/LabVIEW Vis/foo.viの VIを参照するには、 My HD: \LabVIEW Visfoo.viのパスを使用します。逆に、Linuxアプリケーションから C: \labviewfoo.vi にあるWindowsを実行しているコンピュータ上のVIを参照するには、パス C/labview/foo.viを配線する。

    パスを配線した場合、またはVIとアプリケーション参照の両方を配線した場合、LabVIEWはディスクからVIをロードするためにユーザーインターフェイスがアイドルになるまで待ちます。アプリケーション参照なしで名前文字列またはVI参照を配線した場合、LabVIEWはディスクからVIをロードしないため、ユーザーインターフェイスがアイドル状態になるまで待つ必要はありません。LabVIEWは、メモリ内で指定された名前のVIのみ検索します。

    メモ LabVIEWは、Open VI Reference関数で名前を使用してクローンVIへの参照を開く機能をサポートしていません。この関数を使用してクローンVIへのリファレンスを開こうとすると、LabVIEWがクラッシュする可能性があります。
  • ci32.png オプション

    オプションは、VIリファレンスに参照されるVIの特性 (VIを非同期呼び出しできるかどうかなど) を決定します。デフォルト値は0x0です。

    以下のオプションフラグのサブセットを組み合わせオプションを作成します。

    オプションフラグ説明
    0x01 修正を記録―VIサーバによる変更が行われたことを示すアスタリスク (*) をVIタイトルの横に表示するには、このオプションフラグを使用します。修正を記録するためには、VIが編集モードである必要があります。
    0x02 編集のためにテンプレートを開く.vitファイルの原本を開くにはこのオプションフラグを使用します。このオプションフラグを選択しない場合、LabVIEWはテンプレートVIの新規インスタンスを開きます。インスタンスに行われた編集は元の.vitファイルに適用されません。このオプションフラグはテンプレート以外のファイルには影響しません。
    0x04 保存を促すメッセージを表示―以下のすべての条件が満たされる場合にこのVIリファレンスを閉じるときに変更の保存を促す画面を表示するには、このオプションフラグを使用します。
    • リファレンスVIまたはそのサブVIに未保存の変更が含まれている。
    • リファレンスVIに対する他のリファレンスが開いていない。
    • リファレンスVIをメモリから解放できる。たとえば、他にVIを呼び出すVIがない、VIのフロントパネルが閉じている、VIが開いているプロジェクトライブラリのメンバーでないなどの場合、VIはメモリから解放できます。
    0x08

    再入実行を準備する―このオプションフラグは、ターゲットVIではなく、ターゲットVIの再入可能クローンのリファレンスを使用する場合に選択します。VIの再入可能クローンを使用すると、同じVIのフロントパネルを複数開いたり、同じVIの複数のコピーを並列で実行したりできます。LabVIEWは、ターゲットVIへの各リファレンスに対してターゲットVIの個別のクローンを作成します。このクローンは、通常のサブVI呼び出しにより使用される共有クローンの一部でありません。

    タイプ識別子があるとターゲットVIが再入可能な場合は必ず再入クローンを使用できるため、タイプ識別子VIRefnum (タイプのみ) 入力が配線されている場合はこのフラグは無視されます。このとき、ターゲットVIが再入可能でなければ、エラー1096が返されます。

    ヒント 複数の再入クローンを並列で実行するには、VIを実行メソッドをこのフラグと共に使用します。ターゲットVIを非同期実行するには、VIを実行メソッドの代わりに「非同期呼び出しを開始」ノードを使用します。非同期呼び出しを開始ノードを使用すると、インタフェースが簡潔になりパフォーマンスが向上するだけでなく、対応する非同期呼び出しを待機ノードによってターゲットVIの出力を取得できるようになります。
    0x10 見つからないサブVIの検索を促す画面を表示―このオプションフラグは、参照しているVIに見つからないサブVIがある場合に、それを検索するかどうかをユーザに確認するように設定するために使用します。
    0x20 ロードダイアログボックスを非表示―参照しているVI中の見つからないサブVIを検索中、ロードダイアログボックスが表示されないよう設定します。
    メモ このオプションフラグの設定は、見つからないVIの検索を確認するプロンプトの表示/非表示の設定には影響しません。
    0x40 再入可能VIの同時呼び出しを有効にする―このオプションフラグは、複数のリファレンス呼び出しノードと非同期呼び出しを開始ノードを使用して、再入可能ターゲットVIのクローンを並列実行する際に使用します。これらのノードは、Forループ内で並列ループ反復を有効にして使用します。このオプションフラグは、各リファレンス呼び出しノードをクローンVIのデータスペースにアクセスできるようにすることで、並列実行を可能にします。このオプションフラグを使用しないと、同一ターゲットVIへの各呼び出しは、データスペースに他の呼び出しがアクセスしている間は待機する必要があるため、1度に1つずつ実行されます。

    0x40オプション・フラグは、以下の場合にのみ有効である:

    • ターゲットVIが再入可能でクローンを共有する場合。
    • ターゲットVIが再入可能で、さらに0x80または0x100オプションフラグを使用している場合。
    メモ 0x40オプションフラグがターゲットVIまたは使用されているほかのオプションフラグに対して有効でない場合は、エラー1591が返されます。
    0x80 呼び出して放置―このオプションフラグは、非同期呼び出しを開始ノードによってターゲットVIを非同期で呼び出す必要がある一方で、VIから返されるデータとタイミングを使用する必要がない場合に使用します。このオプションフラグは0x08または0x100と併用できません。
    メモ リモートVIへのリファレンスにこのオプションフラグを使用すると、LabVIEWはエラー1578を返します。
    0x100 呼び出して収集を準備―このオプションフラグは、非同期呼び出しを待機ノードによるターゲットVIに対する非同期呼び出しの結果を使用する場合に使用します。このオプションフラグを使用する場合は、非同期呼び出しを開始ノードで開始する各呼び出しに非同期呼び出しを待機ノードを含めることで、開始された呼び出しが永久にメモリで維持されないようにする必要があります。このオプションフラグは、0x08または0x80と一緒に使用しないでください。
    メモ リモートVIへのリファレンスにこのオプションフラグを使用すると、LabVIEWはエラー1578を返します。
  • cerrcodeclst.png エラー入力 (エラーなし)

    エラー入力は、このノードを実行する前に発生したエラーの状態を示します。この入力は、標準エラー入力として機能します。

  • cstr.png パスワード ("")

    パスワードは、リファレンスを開くVIのパスワードです。

    パスワード保護されたターゲットVIを編集するには、この入力にパスワードを配線します。正しいパスワードを配線すると、この関数はVIへの認証済みリファレンスを返します。この入力に誤ったパスワードを入力すると、関数はエラーおよび無効なVIリファレンスを返します。ターゲットVIがパスワード保護されていない場合、この入力は無視されます。ターゲットVIがパスワード保護されている場合にこの入力にパスワードを配線しないと、「VIリファレンスを開く」関数からは有効なリファレンスが返されますが、このリファレンスを使用してVIを編集できません。
    メモ VIサーバー参照を 使用して、VIへの認証参照を取得することもできます。
  • ivirn.png VIリファレンス

    VIリファレンスは要求されたVIに関連づけられたrefnumです。

    関数の実行が失敗した場合、VI Refnum非Refnumが含まれます。
  • ierrcodeclst.png エラー出力

    エラー出力には、エラー情報が含まれます。この出力は、標準エラー出力として機能します。

  • 「VIリファレンスを開く」関数は、リファレンス呼び出しノード、非同期呼び出しを開始ノード、非同期呼び出しを待機ノードによるダイナミック呼び出しに対応できるようVIリファレンスを設定します。ダイナミック実行が可能になるようリファレンスを設定するには、タイプ識別子VI refnum (タイプのみ) 入力とオプション入力を使用します。

    ダイナミックVI呼び出しのためにリファレンスを開く

    リファレンス呼び出しノードまたは非同期呼び出しを開始ノードで特定のVIを動的に呼び出すには、以下のパラメータに適切なデータを使用する必要があります。

    • タイプ識別子VI refnum (タイプのみ) ―この入力にはタイプ指定VIリファレンスを配線します。
    • オプション―リファレンスVIの呼び出しにオプションフラグ0x08、0x40、0x80、0x100のうちどれを適用するか決定します。

    タイプ指定リファレンスを開く条件

    タイプ識別子VI refnum (タイプのみ) にタイプ指定のVIリファレンスを配線するには、VIパスで指定されたVIは以下の条件を満たしている必要があります。

    • 壊れていないこと。
    • 再入可能である場合を除き、トップレベルVIとしてアクティブではないこと。
    • VIのコネクタペーンがタイプ識別子VI refnum (タイプのみ) のコネクタペーンと一致していること。

    再入可能VIへのリファレンスを開く

    再入可能VIのリファレンスを開く際は、以下の点に注意してください。
    • 再入可能ターゲットVIへのダイナミックな呼び出しは、オプションの1つとして0x40を指定しない限り、順番に実行されます。
    • オプションフラグ0x40を指定して再入可能ターゲットVIのインスタンスを並列実行すると、VIリファレンスはターゲットVIのクローンではなくターゲットVIを参照します。ただし、リファレンス呼び出しノードと非同期呼び出しを開始ノードはどちらもターゲットVIのクローンを呼び出します。したがって、VIリファレンスでVIサーバプロパティまたはメソッドを呼び出すと、そのプロパティ/メソッドはそれらのノードが実際に呼び出すクローンVIには影響しません。
    • 等しい?」関数は、1つの再入可能VIに対する2つのリファレンスを比較すると、常にTRUEを返します。複数のリファレンスが再入可能VIの同じインスタンスを参照しているかどうかを確認するには、「型変換」関数を使用してリファレンスを32ビット符号付き整数に変換します。次に、「等しい?」関数を使用してそれらの整数を比較します。

    開いているリファレンスを中断する

    開いているすべてのVIリファレンスは、VIのフロントパネルから、またはVIを中断メソッドを使用して手動で中断できます。しかし、非同期実行用に準備されたVIリファレンスには、それを開くときに使用したオプションに応じて重要な注意点があります。

    • 0x80―呼び出して放置VIは、VIのフロントパネルから手動で中断するか、そのVIを中断メソッドを呼び出した場合にのみ中断されます。それ以外の場合は、たとえリファレンスを閉じたり、呼び出しVIを中断しても、VIは最後まで実行されます。
    • 0x100-Call-and-collect VI は、以下の理由でアボートする:
      • 呼び出して収集VIリファレンスを開いたVIを中断する。この場合、LabVIEWはVIの実行中のすべてのインスタンスを中断します。
      • VIの特定のインスタンスを手動で中断する。この場合、ただ1つの非同期呼び出しを待機ノードが、呼び出されたVIが中断したというエラーを返します。同じVIリファレンスの呼び出しを待機している他のすべての非同期呼び出しを待機ノードは、そのまま待機し続けます。
      • 呼び出して収集VIリファレンスのVIを中断メソッドを呼び出す。この場合、LabVIEWはVIの現在実行中のすべてのインスタンスを中断します。非同期呼び出しを待機ノードの数と同数のエラーが返されます。

    開いているリファレンスを閉じる

    この関数で取得したリファレンスは、使用終了後に「リファレンスを閉じる」関数で閉じます。リファレンスを明示的に閉じると、そのリファレンスの維持に必要なリソースが解放されるため、メモリの割り当てとパフォーマンスが最適化されます。明示的に閉じないリファレンスは、そのリファレンスを開いたVIの実行が完了するまで開いたままになります。

    メモ オプションフラグ0x80で開いたリファレンスを閉じても、リファレンスVIは中断されません。

    スタンドアロンアプリケーションでVIリファレンスを開く

    開発コンピュータとスタンドアロンアプリケーション内の両方でVIをダイナミックに開くには、VIパスで相対パスを指定します。

    その他の情報

    サンプルプログラム

    LabVIEWに含まれている以下のサンプルファイルを参照してください。

    • labview\examples\Application Control\VI Server\Asynchronous Call By Reference\Asynchronous Call and Collect (Using Option 0x40).vi
    • labview\examples\Application Control\VI Server\Asynchronous Call By Reference\Asynchronous Call and Forget.vi
    • labview\examples\Application Control\VI Server\Asynchronous Call By Reference\Asynchronous Call and Collect.vi