アカデミック 会社 イベント NI Developer Zone サポート ソリューション 製品とサービス お問い合わせ MyNI
1 ratings:
 5 out of 5     Rate this Document

ライブラリ関数呼び出しノードの「タイプに適応」はどうやって使うのですか

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

問題: ライブラリ関数呼び出しノードにおいて「タイプに適応」は何をするのですか。また、どのように使うのですか。

解決策: 「タイプに適応」を使うとクラスタ(C の構造体)のような複雑なデータ構造を、ダイナミック・リンク・ライブラリ(DLL)に渡すことができます。「タイプに適応」は関数の引数にのみ使えます。戻り値には使えません。戻り値には、文字列と数値のみが指定できます。


「タイプに適応」を使うには...

  1. ライブラリ関数呼び出しノードを、ブロックダイアグラムに配置します。

  2. ライブラリ関数呼び出しノード上で右クリックし、構成 を選択します。

  3. 適切な DLL と関数を選択します。

  4. パラメータを後に追加 をクリックします。

  5. タイプには「タイプに適応」を選択します。

  6. 添付画像のように、ブロックダイアグラム上で、クラスタを、ライブラリ関数呼び出しノードの入力端子に接続します。



複雑なデータ構造を C に渡す場合、LabVIEW は関数のプロトタイプと構造体宣言を自動生成する組み込み機能を使用します。クラスタをライブラリ関数呼び出しノードに接続後、ライブラリ関数呼び出しノードを右クリックし、.c ファイルを作成を選択します。ここで、作成されたファイルをファイルを保存しておきます。これで .c ファイルを C/C++ 統合開発環境やメモ帳で閲覧できます。添付画像の場合、次のコードが生成されます。


/* Call Library Source File */

#include "extcode.h"

/* Typedefs */
typedef struct {
int32 dimSize;
int32 elt[1];
} TD2;
typedef TD2 **TD2Hdl;

typedef struct {
int32 Numeric;
TD2Hdl Array;
int32 Numeric2;
} TD1;

void funcName(TD1 *arg1);

void funcName(TD1 *arg1)
{

/* Insert Code Here */

}


このコードは、C/C++ の構造体と LabVIEW クラスタのインターフェイスになるよう、適切なデータ型を生成します。DLL をビルドする際、extcode.h、fundtypes.h、platdefines.h を include する必要があります。これらのヘッダファイルはC:\Program Files\National Instruments\LabVIEW 6.1\cintools にあります。これで、次のような書式で LabVIEW クラスタの各要素にアクセスできます。

arg1->Numeric = 5;

注意点として、LabVIEW は DLL にハンドルを渡しまが、これはポインタのポインタです。

関連リンク: Using External Code in LabVIEW - Product Manual

添付:


adapttotype.gif - adapttotype.gif


報告日時: 01/24/2003
最終更新日: 06/28/2004
ドキュメントID: 2TNBMIHM

Your Feedback! poor Poor  |  Excellent excellent   Yes No
 Document Quality? 
 Answered Your Question? 
  1 2 3 4 5
Please Contact NI for all product and support inquiries.submit