JNAerator を使用して .dll ライブラリを JAR に変換しました。次に、次のような OpenTCPIPPort_V メソッドを呼び出す必要があります。
public static short OpenTCPIPPort_V(Pointer<Byte > tcpPort, Pointer<Byte > IPAddr)
このメソッドに 2 つの文字列値を渡す方法は?
解決策を見つけました。これがメソッドですPointer<Byte> org.bridj.Pointer.pointerToCString(String string)
TekVisa DLL (Tektronix の計測器を制御するための DLL) の pointerToCString を試しましたが、計測器セッションを開くのに機能しませんでした。このスレッドの 2 番目の回答の方が優れていますが、詳細が欠落しています。バイト配列は 0 で終了する必要があります。以下のコードは機能します。(instrument 変数は String 型で、"TCPIP::::INSTR" のようなインストゥルメント文字列を含みます。)
興味深いことに、pointerToCString は、たとえば viWrite("*IDN?") などのコマンドを計測器に送信するときに機能します。
Pointer<Byte> pViString = Pointer.allocateBytes(instrument.length() + 1);
byte[] instrumentBytes = instrument.getBytes();
pViString.setBytes(instrumentBytes);
pViString.setByteAtIndex(instrument.length(), (byte) 0);
getBytes という String クラスの関数があります。次に例を示します。
String example = "example, string";
byte[] bytes = example.getBytes();
今必要なのは、これらの byte[] 値をあなたの Pointer に入れることです。私はあなたが今扱うことができると思います。