From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



なぜ VI から LabVIEW で作成された実行ファイルにキューのレファレンスが渡せないのですか



使用ソフトウェア:
使用ソフトウェア・バージョン: 1.0
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: LabVIEW Run-Time Engine

問題:
LabVIEW で作成された実行ファイルがあり、その実行ファイルはキューにデータを追加します。
VI からその実行ファイルに キュー を関連付けしようとすると、なぜ Dequeue.vi はキューを認識しないのでしょうか。

解決策:
LabVIEW 実行ファイルと LabVIEW 開発環境で実行される VI は Windows 内の違うメモリ領域で実行されます。実行ファイルのメモリ領域から他の実行ファイルや VI のメモリ領域で作成されたキューにアクセスすることはできません。

この現象を検証するために添付の Memory Thread.zip を解凍し、下記の手順を実行してください。

  1. Enqueue Basics.vi、Dequeue Basics.vi、Remote Call.exe が同じフォルダに保存されている事を確認してください。

  2. Enqueue Basics.vi と Dequeue Basics.vi を実行してください。 VI は想定通りの動作をします。一つの VI でキューにデータを追加し、もう一つの VI でキューからデータを読み取り削除します。

  3. 全ての VI を停止して、閉じてください。

  4. Remote Call.exe を実行してください。 Call "Enqueue Basics.vi" ボタンをクリックしてください。 Enqueue Basics.vi が Remote Call.exe 内のメモリ領域内で実行されます。もし Windows OS を使用している場合、タスクバーで同じグループになっている事で確認できます。 Remote Call.exe 内のメモリ領域で実行されている物はタスクバーで同じグループになります。

  5. Dequeue Basics.vi を実行してください。 Remote Call.exe 内のメモリ領域にアクセスできないので、 Dequeue Basics.vi がデータを受信していない事が確認できます。

  6. Remote Call.exe のフロントパネルの Call "Dequeue Basics.vi" ボタンをクリックしてください。 Dequeue Basics.vi が Remote Call.exe 内のメモリ領域から呼ばれます。この Dequeue Basics.vi は想定通りキューからデータを読み取り削除します。


関連リンク:
KnowledgeBase 3S8RDE: What Is a Queue?
Developer Zone Tutorial: Using LabVIEW to Create Multithreaded Applications for Maximum Performance and Reliability

添付:


Memory Threads.zip - Memory Threads.zip



報告日時: 07/22/2005
最終更新日: 04/18/2011
ドキュメントID: 3NL78PYV