【问题标题】:How to prevent bluetooth from sending concatenated data如何防止蓝牙发送级联数据
【发布时间】:2016-12-08 17:00:32
【问题描述】:

在此之前,我想为我糟糕的英语说声抱歉。

我正在做一个项目,它使用手机的蓝牙每次通过 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();
        }
    }

谁能告诉我为什么会发生这种情况?是因为“sleep(20);”吗?没用还是别的什么?

【问题讨论】:

  • 欢迎来到 StackOverflow。请不要发布您的代码的屏幕截图。将实际代码复制/粘贴到您的问题中。
  • 感谢您的建议。

标签: multithreading bluetooth outputstream


【解决方案1】:

我假设刷新仅意味着将数据从输出流写入蓝牙堆栈并不意味着将数据写入远程设备?抱歉,我还没有检查代码。 但是出于同步目的,您的远程设备能否回显接收到的数据,然后您的应用可以将第二个字节发送到远程?

【讨论】:

    猜你喜欢
    • 2016-12-07
    • 2016-05-25
    • 2021-07-08
    • 1970-01-01
    • 2014-06-11
    • 2015-04-21
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多