通过蓝牙与Arduino进行Android通信



当我尝试在蓝牙后立即将命令字符串从Android发送到Arduino时

连接已建立,Arduino 不发送响应字符串[我认为也许

Arduino一无所获]。

但是如果我在写方法之前放一个 Thread.sleep(1000( 方法,它可以工作......

问题出在哪里?

我是否正在尝试在蓝牙连接设置尚未之前发送消息

准备?

可以这样想:乒乓球发生得太快,以至于球丢失了。

如果在读取之前写入和在写入之前读取,则会发生错误并且字符串将丢失。

所以是的,解决这个问题的一种方法是在两者之间留一些时间,比如 Thread.sleep

详细:

所以发生这种情况是因为你的arduino仍然sending,因为它没有认识到你的android实际上收到了。 在该thread.sleep (1000)期间,您的arduino识别出android已收到并更改为receive模式。这就是为什么一秒钟后可以从您的arduino中读取字符串的原因。

如果需要,您可以循环发送,以便arduino尽快接收。但是,循环可能会带来某些情况,例如接收冗余字符串。

但是如果我在写方法之前放一个 Thread.sleep(1000( 方法

尝试在 Thread.sleep 之后执行多次写入,以检查问题是否仅在建立连接的正确时刻发生,还是在每次写入时发生!

无论如何,根据我的经验,我会警告你一些事情:

  • 波特率太高,请尝试降低它。
  • 请注意一些便宜的Arduino蓝牙模块,它不实现任何类型的I/O缓冲。
  • 从Arduino上的应用程序读取数据的部分正在做一些需要时间的事情(如I/O操作(,或者只是它做了太多的事情,所以串行上的一些数据丢失了(一旦它发生在我身上(。
  • 请注意,如果您使用的是低功耗蓝牙,则限制为 20 字节!如果您发送更多数据,它将丢失。

你的一段代码会很有用!

最新更新