通过蓝牙与Arduino进行Android通信

时间:2017-07-19 01:27:06

标签: android bluetooth arduino

当我尝试在蓝牙

之后立即从Android向Arduino发送命令字符串

建立连接,Arduino没有发送响应字符串[我想也许

Arduino一无所获。]

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

有什么问题?

我是否尝试在蓝牙连接设置尚未

之前发送消息

就绪

2 个答案:

答案 0 :(得分:1)

  

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

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

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

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

这段代码很有用!

答案 1 :(得分:1)

把它想象成这样:乒乓球发生得太快,以至于球迷失了。

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

所以是的,解决它的一种方法是在Thread.sleep

之间加入一些时间

详细说明:

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

如果您愿意,可以循环发送,以便arduino尽快收到。但是,某些情况可以像循环一样接收冗余字符串。