繁体   English   中英

通过蓝牙与Arduino进行Android通信

[英]Android communication via Bluetooth with Arduino

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

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

Arduino一无所有]。

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

问题是什么?

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

准备?

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

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

无论如何,以我的经验,我会警告您一些事情:

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

您的代码片段会很有用!

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

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

所以是的,一种解决方法是在两者之间加一些时间,例如Thread.sleep

详细:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM