NewSerialPort: open()/close() überarbeitet

thobaben_serialize
Harald Wolff 2017-01-11 13:51:51 +01:00
parent 869643ce1b
commit efca7b8466
1 changed files with 29 additions and 10 deletions

View File

@ -168,19 +168,26 @@ public class NewSerialPort {
}
public boolean open(){
if (wasOpened)
return false;
int r = nsp_open(nsp);
wasOpened = (r == 0);
System.err.println(String.format("nsp_open(): %d",r));
fireConnectionStateChanged();
if (wasOpened)
fireConnectionStateChanged();
return wasOpened;
}
public void close(){
nsp_close(nsp);
wasOpened = false;
fireConnectionStateChanged();
if (wasOpened){
nsp_close(nsp);
wasOpened = false;
fireConnectionStateChanged();
}
}
public boolean isOpen(){
@ -350,18 +357,30 @@ public class NewSerialPort {
@Override
public void write(byte[] b, int off, int len) throws IOException {
int nWritten = nsp_write_bytes(nsp, b, off, len);
int nWritten = 0;
for (int redo=0;redo<5;redo++){
nWritten = nsp_write_bytes(nsp, b, off, len);
if (nWritten == -11){
try {
Thread.sleep(5);
} catch (Exception e){
}
} else if (nWritten != len){
throw new IOException(String.format("nsp_write_bytes() returned %d", nWritten));
} else {
break;
}
}
if (nWritten != len){
throw new IOException(String.format("nsp_write_bytes() returned %d", nWritten));
throw new IOException(String.format("nsp_write_bytes() returned %d after retry", nWritten));
}
}
@Override
public void write(byte[] b) throws IOException {
int nWritten = nsp_write_bytes(nsp, b, 0, b.length);
if (nWritten != b.length){
throw new IOException(String.format("nsp_write_bytes() returned %d", nWritten));
}
write(b, 0, b.length);
}
}