ocx控件接口中函數ReadData執行後,參數v1爲我想要返回的數據,在C++中會看到接口的參數爲:BSTR* dataBuf
long ReadData(BSTR* dataBuf)
但在java就不知道傳什麼去取了,嘗試了幾種參數類型都提示參數錯誤。
經多次嘗試已經解決,主要還是編碼和大小端問題:
byte[] b = new byte[dataLen];
Variant v1 = new Variant (new String(b, "UNICODE"), true) ;//其實主要目的只是爲了初始化String的長度,才能接收到相應個數的字符串
int iReadData = Dispatch.call(disp, "ReadData", v1).getInt();
String ret = new String(v1.toString().getBytes("UNICODE"));
String result = "";
//接收到DTU的數據可能存在大、小端問題,如果存在這樣的問題需要進行雙字節間對位交換
for (int i = 0; i < ret.length();) {
result += ret.charAt(i + 1);
result += ret.charAt(i);
i += 2;
}
System.out.println("result =" + result );