3

JNAerator を使用して .dll ライブラリを JAR に変換しました。次に、次のような OpenTCPIPPort_V メソッドを呼び出す必要があります。 public static short OpenTCPIPPort_V(Pointer<Byte > tcpPort, Pointer<Byte > IPAddr)

このメソッドに 2 つの文字列値を渡す方法は?

4

3 に答える 3

7

解決策を見つけました。これがメソッドですPointer<Byte> org.bridj.Pointer.pointerToCString(String string)

于 2013-01-13T08:23:15.800 に答える
1

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);
于 2013-02-21T18:18:59.357 に答える
0

getBytes という String クラスの関数があります。次に例を示します。

String example = "example, string";
byte[] bytes = example.getBytes();

今必要なのは、これらの byte[] 値をあなたの Pointer に入れることです。私はあなたが今扱うことができると思います。

于 2013-01-12T20:45:36.410 に答える