java 利用jacob調用ocx控件時怎麼處理帶返回值的參數?

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 );

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章