ライブラリを C++ から Java に変換しようとしています。ポインターに問題があります..
C++ のコードは次のとおりです。
int DECL2 daveSetBit(daveConnection * dc,int area, int DB, int byteAdr, int bitAdr) {
int a=1;
return daveWriteBits(dc, area, DB, 8*byteAdr+bitAdr, 1, &a);
}
daveWriteBits 宣言は次のとおりです。
daveWriteBits(daveConnection * dc,int area, int DB, int start, int len, void * buffer)
これをJavaに変換するにはどうすればよいですか?ポインター&aを Java 言語に変換する方法がわかりません。
public int SetBits(
int area,
int DBnum,
int byteAdr,
int bitAdr) {
int a=1;
return writeBits(area, DBnum, 8*byteAdr+bitAdr, 1, ??? )
}
アップデート:
JavaでWriteBits関数の一部を追加するのを忘れていました..
public int writeBits(
int area,
int DBnum,
int start,
int len,
byte[] buffer) {
int errorState = 0;
semaphore.enter();
PDU p1 = new PDU(msgOut, PDUstartOut);
p1.prepareWriteRequest();
p1.addBitVarToWriteRequest(area, DBnum, start, len, buffer);
errorState = exchange(p1);
if (errorState == 0) {
PDU p2 = new PDU(msgIn, PDUstartIn);
p2.setupReceivedPDU();
if (p2.mem[p2.param + 0] == PDU.FUNC_WRITE) {
if (p2.mem[p2.data + 0] == (byte) 0xFF) {
if ((Nodave.Debug & Nodave.DEBUG_CONN) != 0)
System.out.println("writeBytes: success");
semaphore.leave();
return 0;
}
} else {
errorState |= 4096;
}
}
semaphore.leave();
return errorState;
}