Home
Support
なぜ VI から LabVIEW で作成された実行ファイルにキューのレファレンスが渡せないのですか
なぜ VI から LabVIEW で作成された実行ファイルにキューのレファレンスが渡せないのですか
使用ソフトウェア:
使用ソフトウェア・バージョン: 1.0
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: LabVIEW Run-Time Engine
問題: LabVIEW で作成された実行ファイルがあり、その実行ファイルはキューにデータを追加します。
VI からその実行ファイルに キュー を関連付けしようとすると、なぜ Dequeue.vi はキューを認識しないのでしょうか。
解決策: LabVIEW 実行ファイルと LabVIEW 開発環境で実行される VI は Windows 内の違うメモリ領域で実行されます。実行ファイルのメモリ領域から他の実行ファイルや VI のメモリ領域で作成されたキューにアクセスすることはできません。
この現象を検証するために添付の Memory Thread.zip を解凍し、下記の手順を実行してください。
- Enqueue Basics.vi、Dequeue Basics.vi、Remote Call.exe が同じフォルダに保存されている事を確認してください。
- Enqueue Basics.vi と Dequeue Basics.vi を実行してください。 VI は想定通りの動作をします。一つの VI でキューにデータを追加し、もう一つの VI でキューからデータを読み取り削除します。
- 全ての VI を停止して、閉じてください。
- Remote Call.exe を実行してください。 Call "Enqueue Basics.vi" ボタンをクリックしてください。 Enqueue Basics.vi が Remote Call.exe 内のメモリ領域内で実行されます。もし Windows OS を使用している場合、タスクバーで同じグループになっている事で確認できます。 Remote Call.exe 内のメモリ領域で実行されている物はタスクバーで同じグループになります。
- Dequeue Basics.vi を実行してください。 Remote Call.exe 内のメモリ領域にアクセスできないので、 Dequeue Basics.vi がデータを受信していない事が確認できます。
- 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
報告日時: 07/22/2005
最終更新日: 04/18/2011
ドキュメントID: 3NL78PYV
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.