【问题标题】:How to send serial data via Bluetooth to an unspecified device?如何通过蓝牙将串行数据发送到未指定的设备?
【发布时间】:2016-09-26 21:00:13
【问题描述】:

我对 Arduino Uno 使用以下代码:

#include <SoftwareSerial.h>

SoftwareSerial device(2, 3); 

void setup()  
{
  device.begin(9600);
}

void loop() 
{
  device.println("33,89,156,203,978,0,0;");
}

没有设置具体的发送设备。

如果我想在我的笔记本电脑(运行 Ubuntu 14.04)上接收数据,我只需调用:

sudo rfcomm bind rfcomm0 [MAC ADDRESS] 1

screen /dev/rfcomm0 

在另一个终端实例中,它可以工作。

如何使用 Android 应用实现相同的行为? 以下example code 指定了一个设备。我找不到任何其他代码。此外,它仅在我在笔记本电脑上收听这样的传入连接时才有效:

sudo rfcomm listen rfcomm0 [MAC ADDRESS]

我希望我的 Android 应用能够像 Arduino 示例一样工作。我怎样才能做到这一点?

【问题讨论】:

    标签: java android bluetooth arduino-uno


    【解决方案1】:

    不幸的是,Android 似乎没有允许您执行广播类型行为的低级经典蓝牙 API。这是有道理的,因为 Android 旨在进入功率受限的设备,而有源无线电使用能量。如果您需要使用经典蓝牙 (3.x) 和 Android 来处理发送或接收广播类型的行为,您可能需要编写自定义 ROM。

    但是,有一种称为低功耗蓝牙 (4.x) 的规范允许更少的能源消耗,但更慢/更少的数据吞吐量。特别是广告模式。正在扫描的 Android 设备可以接收由称为“信标”的设备广播的短广告数据包。使用这种模式的协议是 Apple 的 iBeacon 和 Google 的 Eddystone。

    在此处查找涉及广告的示例应用:

    另请注意,Android 设备并不总是支持 BLE 外设模式,这是您的 Android 设备充当信标所需要的。

    相关链接: Can an Android device act as an iBeacon?

    还有一个很好的列表,列出了哪些设备已经过测试: http://altbeacon.github.io/android-beacon-library/beacon-transmitter-devices.html

    因此,在您的情况下,您应该仍然可以将 Sony Xperia Z3 用作扫描仪,但必须购买/构建信标进行测试。

    【讨论】:

      猜你喜欢
      • 2016-05-25
      • 1970-01-01
      • 2015-06-13
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 2012-04-23
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多