你的术语主要是正确的.

因此,最小的GATT数据库看起来像这样:

Handle Description

0000 Service: Generic Access (1800)

0001 Characteristic: Device Name (2A00, readable)

0002 Characteristic Value (string)

0003 Characteristic: Appearance (2A01, readable)

0004 Characteristic Value (16bit enum)

0005 Service: Generic Attribute (1801)

完成这两项服务后,您可以添加自己的服务.在您的情况下,您似乎没有针对一个众所周知的服务,因此您将创建一个自己的服务.

首先,创建一个128位的UUID,例如在Mac的命令行上使用uuidgen工具

$uuidgen

DCDF2725-56C8-4235-A4BC-F7951D5C3762

这将是您的服务UUID

0006 Service: Custom defined Service (DCDF2725-56C8-4235-A4BC-F7951D5C3762)

然后,您提到您需要几个可写特征.所以,让我们为那个创建另一个UUID.

$uuidgen

4C06C6F4-C90D-4C58-8E31-20C8C74FF832

并为服务添加特征

0007 Characteristic: Custom Characteristic (4C06C...FF832, writeable)

0008 Characteristic Value (hex, 20 bytes)

您的特征值不应超过20个字节,您应选择“写入请求”以确保写入的确认发送到中央.如果选择“写入命令”,则手机的堆栈或外围设备可能会丢弃写入.

定义此特性后,即可开始编码.

我不知道BeagleBoard SDK,但通常,您首先要初始化GATT库和其他模块(例如,为了支持写入,您必须初始化库的第二部分).

初始化后,您注册GATT数据库.如果你没有一个很好的工具来生成二进制数据,你可能需要自己编写它们.这是在Bluetooth Core Spec V4.0中解释的.让我们希望您能找到一个为您进行转换的API 🙂

注册成功后,您必须设置广告参数并开始投放广告(请再次参阅SDK的文档和示例).

现在发生的事情是,在某个时候,您将获得已建立连接的回调,稍后,您将获得给定句柄的属性请求.然后,您只需通过查看句柄,提供的值和操作类型(读/写)来处理请求.不要忘记总是返回成功值或错误代码以响应请求,否则,您将锁定蓝牙通信.

通常,那些蓝牙芯片总是与异步操作一起工作.您将发送请求,然后必须等到请求完成后再发送下一个请求.请记住,编程时,它可以节省您的时间:-).

如果您想首先尝试Android,因为它对您来说比较熟悉,您可以尝试使用Android 4.2的Galaxy S 4.它也有一个LE外设模式 – 我还没有测试它的可靠性.目前最可靠的智能手机堆栈作为LE外设目前在iOS 7中使用 – 因此,如果可以负担得起它,可能值得购买iPod touch.

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐