LabVIEW文字列から文字配列に変換し、そのポインタをライブラリ関数呼び出しノードに渡す方法



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

問題:
LabVIEWライブラリ関数呼び出しノードを使用しDLL関数にアクセスしたいと考えています。
DLL関数へ文字列を渡す必要がありますが、プロトタイプには文字配列へのポインタとして定義されたパラメータが必須です。文字列から文字配列を作成し、そのポインタをDLLへ渡すにはどうすればよいでしょうか?

解決策:
LabVIEW文字列はnull終端のC言語型の文字列とは異なります。最初の4バイトが文字列の長さを含むという点から、LabVIEW文字列はパスカル型の文字列に似ています。

 

LabVIEWの文字列を、char*(文字配列へのポインタ)を必要とするDLLへ渡すには2通り方法があります。

最も一般的な方法は関数パラメータをC Strとして定義することです。ブロックダイアグラム上にライブラリ関数呼び出しノードを配置し、ライブラリ関数呼び出しノードをダブルクリックして呼び出したい関数のプロトタイプを指定します。ここでパラメータを文字列タイプに、フォーマットをC 文字列ポインタに指定します。
プロトタイプがデータタイプをC Strと表示する点にご注意ください。このデータタイプはchar*と同じです。


 

文字列ベースの計測器制御を行う場合は、文字列内のNULL値の可能性から考えてC文字列よりも8ビット整数の配列を渡すほうがより簡単かも知れません。ライブラリ関数呼び出しノードを配置し、ライブラリ関数呼び出しノードをダブルクリックして呼び出したい関数のプロトタイプを指定します。ここで重要な点はパラメータタイプを配列に、データタイプを符号付き8ビット整数にして指定することです。配列の次元は1でフォーマットは配列データポインタです。LabVIEWでは「文字列からバイト配列に変換」viを使用して文字列からバイト配列に変換しなければなりません。

 

ライブラリ関数呼び出しノードからの出力は変更された文字配列になるので、文字列に再変換する必要があります。

 

LabVIEW7.1又はそれより古いバージョンでLabVIEWコードを他のプログラム言語と併用する方法に関するドキュメントについてはマニュアル「Using External Code in LabVIEW」(下記リンク)をご参照ください。
LabVIEW8.0又はそれ以降のバージョンについてはLabVIEWヘルプ(下記リンク)の
Fundamentals>>Calling Code Written in Text-Based Programming Languagesをご参照ください。


 



関連リンク:

添付:
PoiterAsDLL.zip




報告日時: 05/11/2006
最終更新日: 11/28/2010
ドキュメントID: 3XAAHO7E