Alx*_*rvs 21 bluetooth beagleboard bluetooth-lowenergy bluez gatt
我在这里有一个更广泛的问题,所以如果有人能指出我可以解释这个问题的文档或文章,那就足够了.毋庸置疑,一天的谷歌搜索让我无处可去,我可以伸出援助之手.
我用BlueZ 5.9 连接到BeagleBoard,我的意图是:
我已经创建了将作为中心连接和操作的Android应用程序,渲染3基本完成.我不知道命令 - 键入的文字内容 - 如何在BeagleBoard上启动Gatt服务器/创建属性.我知道硬件写得很大,所以有可能我的术语完全不正确 - 也就是说,任何帮助都会在完成1和2时得到赞赏,即使它只是朝着正确的方向推进.谢谢!
Eta*_*tan 15
你的术语主要是正确的.
通常,GATT数据库至少具有服务0x1800(通用访问)和0x1801(通用属性).通用访问服务包含两个强制特征:设备名称和外观.通用属性服务应为空.
因此,最小的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)
Run Code Online (Sandbox Code Playgroud)
在这两项服务之后,您可以添加自己的服务.在您的情况下,您似乎没有针对一个众所周知的服务,因此您将创建一个自己的服务.
首先,创建一个128位的UUID,例如使用uuidgen
Mac命令行上的工具
$ uuidgen
DCDF2725-56C8-4235-A4BC-F7951D5C3762
Run Code Online (Sandbox Code Playgroud)
这将是您的服务UUID
0006 Service: Custom defined Service (DCDF2725-56C8-4235-A4BC-F7951D5C3762)
Run Code Online (Sandbox Code Playgroud)
然后,您提到您需要几个可写特征.所以,让我们为那个创建另一个UUID.
$ uuidgen
4C06C6F4-C90D-4C58-8E31-20C8C74FF832
Run Code Online (Sandbox Code Playgroud)
并为服务添加特征
0007 Characteristic: Custom Characteristic (4C06C...FF832, writeable)
0008 Characteristic Value (hex, 20 bytes)
Run Code Online (Sandbox Code Playgroud)
您的特征值不应超过20个字节,您应选择"写入请求"以确保写入的确认被发送到中央.如果选择"写入命令",则手机的堆栈或外围设备可能会丢弃写入.
定义此特性后,即可开始编码.
我不知道BeagleBoard SDK,但通常,您首先要初始化GATT库和其他模块(例如,为了支持写入,您必须初始化库的第二部分).
初始化后,您注册GATT数据库.如果你没有一个很好的工具来生成二进制数据,你可能需要自己编写它们.蓝牙核心规范V4.0中对此进行了解释.我们希望您能找到一个为您进行转换的API :-)
注册成功后,您必须设置广告参数并开始投放广告(请再次参阅SDK的文档和示例).
现在发生的是,在某个时候,您将获得已建立连接的回调,稍后,您将获得给定句柄的属性请求.然后,您只需通过查看句柄,提供的值和操作类型(读/写)来处理请求.不要忘记始终返回成功值或错误代码以响应请求,否则,您将锁定蓝牙通信.
通常,那些蓝牙芯片总是与异步操作一起工作.您将发送请求,然后必须等到请求完成后再发送下一个请求.请记住,编程时,它可以节省您的时间:-).
如果您想首先尝试Android,因为它对您来说比较熟悉,您可以尝试使用Android 4.2的Galaxy S 4.它也有一个LE外设模式 - 我还没有测试它的可靠性.目前最可靠的智能手机堆栈作为LE外设目前在iOS 7中使用 - 因此,如果可以负担得起它,可能值得购买iPod touch.
归档时间: |
|
查看次数: |
25834 次 |
最近记录: |