如何防止蓝牙发送连锁数据

时间:2016-08-03 06:10:07

标签: multithreading bluetooth outputstream

事先,我想对我可怜的英语说抱歉。

我正在开发一个项目,该项目使用手机蓝牙每次通过HC-05蓝牙模块向MCU发送两个字节的数据。由于MCU没有用于存储接收数据的缓冲区,因此我必须以间隔至少10ms发送一个字节两次。

我使用示波器监控HC-05模块。在大多数情况下,我的手机会发送两个数据包,每个数据包中包含一个字节的数据,但有时它会将两个数据包一起发送,因此MCU无法处理它。

下面是我如何定义发送方法

public void sendData(){

        Byte byte_send = (byte) Integer.parseInt(tmp_addr);
        byte[] tmp = new byte[]{byte_send};
        Byte byte_2 = (byte) Integer.parseInt(tmp_data);
        byte[] temp = new byte[]{byte_2};
        try {

            mOutStream.write(tmp);
            mOutStream.flush();

            this.sleep(20);

            mOutStream.write(temp);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

谁能告诉我为什么会发生这种情况?是因为"睡觉(20);"没有工作或其他什么?

1 个答案:

答案 0 :(得分:0)

我认为刷新只意味着将数据从输出流写入蓝牙堆栈并不意味着将数据写入远程设备?对不起,我还没检查代码。 但是,为了同步目的,您的远程设备可以回显接收的数据,然后您的应用可以将第二个字节发送到远程吗?