由于公司项目的需要与单片机交互,所以在技术上需要使用串口通信技术。幸好,谷歌有提供串口的开发包给我们。这里改天再贴,现在我只简单的贴上代码。改天有空我在把内容完善一下。底下这段代码的意思是通过串口读取字节数据,并以两十六进制数表示一个字节,每次读取14个字节进行显示,这里还有很大的漏洞,没有涉及到通信包的解包校验,这里只是单纯的展示。
private class ReadThread extends Thread {
@Override
public void run() {
super.run();
while (!isInterrupted()) {
int size;
try {
byte[] buffer = new byte[];
if (mInputStream == null)
break;
if (mInputStream.available() > ) {
sb = new StringBuilder();
DataInputStream din = new DataInputStream(mInputStream);
size = din.read(buffer);
if (size > ) {
//此线程负责接受数据
String res = new String(buffer, , size, "GBK");
byte[] bytes = res.getBytes("GBK");
if (bytes.length == ) {
String s = SerialDataUtils.bytesToHexString(bytes);
sb.append(s);
sb.append("\n");
}
}
runOnUiThread(new Runnable() {
@Override
public void run() {
tvreceive.setText(sb);
}
});
}
try {
Thread.sleep();
} catch (Exception e) {
break;
}
} catch (IOException e) {
e.printStackTrace();
break;
}
}
Log.d(ReadThread.this.getId() + ":", "readthread quit");
}
}