我已使用JNAerator将.dll库转换为JAR。
现在我需要调用OpenTCPIPPort_V方法,如下所示:
public static short OpenTCPIPPort_V(Pointer<Byte > tcpPort, Pointer<Byte > IPAddr)
如何将两个字符串值传递给此方法?
答案 0 :(得分:7)
我找到了解决方案。这是方法Pointer<Byte> org.bridj.Pointer.pointerToCString(String string)
答案 1 :(得分:1)
我为TekVisa DLL(用于控制Tektronix的测量仪器的DLL)尝试了pointerToCString,这对于打开仪器会话无效。这个帖子中的第二个答案更好但是错过了一个细节:字节数组必须以0终止。我的代码可以工作。 (仪器变量的类型为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);
答案 2 :(得分:0)
String类中有一个名为getBytes的函数。这是一个例子:
String example = "example, string";
byte[] bytes = example.getBytes();
现在您需要将那些byte []值放入您的指针中。我想你现在可以办理了。