如下一段,是JNA调用VISA32.dll的代码~~
// 同步读取 Memory mem = new Memory(1200); IntByReference retCount = new IntByReference(0); result = visa32.viRead(vipSession.getValue(), mem, 1200, retCount); if (result != VISA32.VI_SUCCESS && result != VISA32.VI_SUCCESS_MAX_CNT) { TraceErr(result); return null; }
其中,viRead的第3个参数是期望读取的字节数,其实也就是Memory能容纳的最大字节数, 如果返回数据是600个字节,那么viRead将返回VI_SUCCESS, 如果返回数据是1300,那么viRead将返回VI_SUCCESS_MAX_CNT,实际只读取了1200字节数据。
也就是说,见到VI_SUCCESS_MAX_CNT,就意味着应该增大Memory的大小了。
|