VxWorksコントローラで外部コードを呼び出す



使用ソフトウェア:
使用ソフトウェア・バージョン: 2009 SP1
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: N/A

問題:
cRIO-901x/902xなどの、VxWorks OS搭載のコントローラのLabVIEW Real-Timeアプリケーションから、外部コード(共有ライブラリ)を呼び出す必要があります。LabVIEWを使用して、どのように実装できますか。

解決策:

Wind River VxWorksと共に提供されるGNUツールチェーンを使用して、VxWorksコントローラで実行する共有ライブラリをビルドし、LabVIEWの「ライブラリ関数呼び出しノード」を使用してそれを呼び出すことができます。ただし、以下の点に注意してください。

共有ライブラリは、他のLabVIEW Real-Timeターゲット(Phar Lap)とほぼ同じように呼び出すことができます。ただし、VxWorksターゲットは *.outファイルを使用し *.dllは使用しない、という制限があります。これにより、LabVIEW開発環境はVxWorks共有ライブラリのライブラリ情報を読み取ることができないため、「ライブラリ関数呼び出しノード」はスタブDLLで構成する必要があります。以下の手順に従って、外部コードを構成してください。
  1. *.out共有ライブラリをコンパイルし、Real-TimeターゲットにFTP転送します。

  2. *.out共有ライブラリにエクスポートされたものと同じ関数プロトタイプを使用するスタブDLLをコンパイルします。スタブDLLは通常、関数プロトタイプのみを含み、内容は必要ありません(空の関数)。このスタブDLLはWindowsホストマシンのみで使用されます。また、元の*.out共有ライブラリと同じ名前を使用する必要があります。例: foo.dllfoo.out

  3. 「ライブラリ関数呼び出しノード」をブロックダイアグラムに配置し、foo.* をライブラリ名またはパスに指定します。ホストマシンでは、LabVIEWはfoo.dllを参照しますが、Real-Timeターゲットの実行ファイル/VIではfoo.outを参照します。

  4. 呼び出し規約構成パラメータは無視されることに注意してください。

  5. ホスト開発環境のVIからスタブDLLへの相対パスと、Real-Timeターゲットの実行ファイル/VIから共有ライブラリへの相対パスは一致している必要があります。

共有ライブラリコードを呼び出す詳細については、Configuring the Call Library Function Nodeまたは cRIO-901xおよび他のVxWorksターゲット対応の共有ライブラリを開発するを参照してください。

関連リンク:
製品マニュアル: LabVIEWヘルプ - Configuring the Call Library Function Node
チュートリアル: cRIO-901xおよび他のVxWorksターゲット対応の共有ライブラリを開発する
チュートリアル: An Overview of Accessing DLLs or Shared Libraries from LabVIEW
技術サポートデータベース 4LRA4IQ0: Real-Time コントローラのオペレーティングシステム (OS)

添付:





報告日時: 11/27/2006
最終更新日: 05/10/2017
ドキュメントID: 43QD6TS9