天天看點

Android 基于Google API的序列槽開發

由于公司項目的需要與單片機互動,是以在技術上需要使用序列槽通信技術。幸好,谷歌有提供序列槽的開發包給我們。這裡改天再貼,現在我隻簡單的貼上代碼。改天有空我在把内容完善一下。底下這段代碼的意思是通過序列槽讀取位元組資料,并以兩十六進制數表示一個位元組,每次讀取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");
    }
}