繁体   English   中英

如何通过蓝牙将串行数据发送到未指定的设备?

[英]How to send serial data via Bluetooth to an unspecified device?

我将以下代码用于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应用程序实现相同的行为? 以下示例代码指定了一个设备。 我找不到其他代码。 此外,它仅在我在笔记本电脑上侦听这样的传入连接时才有效:

sudo rfcomm listen rfcomm0 [MAC ADDRESS]

我希望我的Android应用程序像Arduino示例一样工作。 我该如何实现?

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

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

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

另请注意,Android设备并不总是支持BLE外围设备模式,这是使Android设备像信标一样工作所需要的。

相关链接: Android设备可以充当iBeacon吗?

并列出了经过测试的设备的详细列表: http : //altbeacon.github.io/android-beacon-library/beacon-transmitter-devices.html

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

暂无
暂无

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

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