forked from LupusNobilis/java-org.hwo
NewSerialPort: open()/close() überarbeitet
parent
869643ce1b
commit
efca7b8466
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue