Use Memory instead of abusing Strings
This commit is contained in:
parent
24745f476a
commit
2bffdb93c3
|
@ -1,17 +1,21 @@
|
|||
import com.sun.jna.Library;
|
||||
import com.sun.jna.Native;
|
||||
import com.sun.jna.Pointer;
|
||||
import com.sun.jna.Memory;
|
||||
|
||||
public class SSS7 {
|
||||
private interface NativeSSS7 extends Library {
|
||||
public int libsss7_start(String serialport);
|
||||
public int libsss7_can_send();
|
||||
public void libsss7_send(String data);
|
||||
public void libsss7_send(Pointer data);
|
||||
public int libsss7_send_failed();
|
||||
public int libsss7_has_received();
|
||||
public void libsss7_get_received(String data);
|
||||
public void libsss7_get_received(Pointer data);
|
||||
public void libsss7_stop();
|
||||
};
|
||||
|
||||
public final int payloadLength = 16;
|
||||
|
||||
private NativeSSS7 lib;
|
||||
private String serial;
|
||||
|
||||
|
@ -28,6 +32,20 @@ public class SSS7 {
|
|||
return this.lib.libsss7_can_send() == 1;
|
||||
}
|
||||
|
||||
public void send(byte[] data) {
|
||||
Pointer p = new Memory(this.payloadLength);
|
||||
for(long i = 0; i < this.payloadLength; i++) {
|
||||
if(i < data.length) {
|
||||
p.setByte(i, data[(int) i]);
|
||||
}
|
||||
else {
|
||||
p.setByte(i, (byte) 0);
|
||||
}
|
||||
}
|
||||
|
||||
this.lib.libsss7_send(p);
|
||||
}
|
||||
|
||||
public boolean sendFailed() {
|
||||
return this.lib.libsss7_send_failed() == 1;
|
||||
}
|
||||
|
@ -36,9 +54,13 @@ public class SSS7 {
|
|||
return this.lib.libsss7_has_received() == 1;
|
||||
}
|
||||
|
||||
public String getReceived() {
|
||||
String tmp = new String();
|
||||
this.lib.libsss7_get_received(tmp);
|
||||
return tmp;
|
||||
public byte[] getReceived() {
|
||||
Pointer p = new Memory(this.payloadLength);
|
||||
this.lib.libsss7_get_received(p);
|
||||
return p.getByteArray(0, this.payloadLength);
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
this.lib.libsss7_stop();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,5 +9,17 @@ public class SSS7Test {
|
|||
|
||||
bus.start();
|
||||
|
||||
while(!bus.canSend());
|
||||
bus.send("Hallo Java".getBytes());
|
||||
while(!bus.canSend());
|
||||
|
||||
|
||||
while(!bus.hasReceived());
|
||||
byte[] data = bus.getReceived();
|
||||
String str = new String(data);
|
||||
System.out.println(str);
|
||||
|
||||
|
||||
bus.stop();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue