如何将字符串值转换为Pointer<Byte>(Java,JNAerator)?

3

我使用JNAerator将.dll库转换为JAR。现在我需要调用OpenTCPIPPort_V方法,它看起来像这样:

public static short OpenTCPIPPort_V(Pointer<Byte > tcpPort, Pointer<Byte > IPAddr)

如何将两个字符串值传递给此方法?

3个回答

7
我找到了解决方法。这个方法是 Pointer<Byte> org.bridj.Pointer.pointerToCString(String string)

1
我尝试使用pointerToCString来使用TekVisa DLL(用于控制Tektronix测量仪器的DLL),但无法打开仪器会话。该主题中的第二个答案更好,但缺少一个细节:字节数组必须以0结尾。我的下面的代码可行。(instrument变量是String类型,包含仪器字符串,例如“TCPIP::::INSTR”)。
有趣的是,在向仪器发送命令(例如viWrite("*IDN?"))时,pointerToCString起作用。
  Pointer<Byte> pViString = Pointer.allocateBytes(instrument.length() + 1);
  byte[] instrumentBytes = instrument.getBytes();
  pViString.setBytes(instrumentBytes);
  pViString.setByteAtIndex(instrument.length(), (byte) 0);

0

String类中有一个名为getBytes的函数。以下是一个例子:

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

现在你需要做的是将这些byte[]值放入你的指针中。我认为你现在可以处理了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接