读取串口为空自动堵塞直到读取到内容,一直监听所以要循环读取。
public class ReadThread extends Thread {
@Overridepublic void run() {
mThread=true;
String s="";
String s1="";
int ret1 = -1;
byte[] buffer = new byte[1024];
ByteBuffer iNbuffer=ByteBuffer.wrap(buffer);
int count1 = 0;
while (!isInterrupted()) {
try {
iNbuffer.clear();
ret1 = mSerialPort.read(iNbuffer);
if (ret1 > 0) {
byte[] buffer1 = new byte[1024];
iNbuffer.get(buffer1, 0, ret1);
String text = new String(buffer1, 0, ret1);
s=s+text;
ret=ret+ret1;
if(text.contains("OK")){
tmp="OK";
s1=s;
mRead_end=true;
break;
}
if(text.contains("ERROR")){
tmp="ERROR";
mRead_end=true;
break;
}
if(mThread==false){
break;
}
}
} catch (Exception e) {
e.printStackTrace();
break;
}
}
s1 = s1.replaceAll("\r|\n", "");
s1 = s1.replaceAll(cmdat, "");
s1 = s1.replaceAll("OK", "");
mmsg=s1;
cmdat="";
return;
}
}