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

更新しました Jul 26, 2019

使用製品

Software

  • LabVIEW Full

問題


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をご参照ください。

この記事はお役に立ちましたか?

いいえ