【XR806开发板试用】BLE试用之三:GATT读写示例
-
本示例通过演示 GATT 读写场景,简要介绍 GATT 命令的基本使用方法。
手机与开发板
烧录BLE工程后,在xr806的串口命令行依次执行ble init ble advertise on
开始广播。
成功后有如下提示:
$ ble advertise on ************************************************* [RandomAddress 62:77:A4:D1:10:44 ] ************************************************* [cmd] Advertising started <ACK> 200 OK
注册 GATT 服务,往串口输入命令,结果如下:
$ gatt metrics on [cmd] Registering GATT metrics test Service. [cmd] GATT write cmd metrics on. <ACK> 200 OK
后需要下载nRF connect软件对周围设备扫描:
连接成功后可以看到 nRF Connect 跳转到以下界面了:
同时串口可以看到提示:
[cmd] Connected: 72:07:2F:49:AD:A1 (random) [cmd] Remote LMP version 5.0 (0x09) subversion 0x0000 manufacturer 0x0046 [cmd] LE Features: 0x00000000000179fd [cmd] LE conn param updated: int 0x0006 lat 0 to 500 [cmd] LE conn param updated: int 0x0027 lat 0 to 500
红色部分的 Service 即是步骤 4 所创建的 GATT 服务。点开“Unknown Service”,可以看到注册的服务 包括一个可读可写的属性。
进行读写操作:如写入值“0x010203”,按照下图的红色序号“①->②->③”操作,然后在红色序 号④可以看到数据正常写入。此时再进行读操作,点击蓝色的①,可以在蓝色序号②的位置看到读取的结果如下:
开发板互联
两块评估板完成烧写后,复位即可,示例代码自动运行。
分别执行
ble init
评估板 B 执行“ble advertise on”命令开始广播:
$ble advertise on ************************************************* [RandomAddress 5F:6F:67:DA:79:61 ] ************************************************* [cmd] Advertising started <ACK> 200 OK
评估板 B 注册 GATT 服务,往串口输入命令
$gatt metrics on [cmd] Registering GATT metrics test Service. [cmd] GATT write cmd metrics on. <ACK> 200 OK
评估板 A 开始扫描设备:
$>ble scan on
可以看到一大串扫描结果,执行一段时间后执行
ble scan off
关闭扫描
可以找到对应扫描结果地址
... [cmd] [DEVICE]: 5F:6F:67:DA:79:61 (random), AD evt type 4, RSSI -23 Xradio C:0 S:1 D:0 SR:1 E:0 Prim: LE 1M, Secn: No packets ...
评估板 A 开始连接 B:
$>ble connect 5F:6F:67:DA:79:61 random
连接成功后,A 有以下打印:
************************************************* [RandomAddress 56:25:4C:81:C7:1E ] ************************************************* [cmd] Connection pending <ACK> 200 OK $ [cmd] Connected: 5F:6F:67:DA:79:61 (random)
同时 B 也有成功连接的打印:
[cmd] Connected: 56:25:4C:81:C7:1E (random) [cmd] Remote LMP version 5.0 (0x09) subversion 0x0110 manufacturer 0x063d [cmd] LE Features: 0x00000000000179ff
进行服务的查找,往 A 评估板输入命令结果:
$>gatt discover $ [cmd] Descriptor 2800 found: handle 1 [cmd] Descriptor 2803 found: handle 2 [cmd] Descriptor 2a05 found: handle 3 [cmd] Descriptor 2902 found: handle 4 [cmd] Descriptor 2800 found: handle 5 [cmd] Descriptor 2803 found: handle 6 [cmd] Descriptor 2a00 found: handle 7 [cmd] Descriptor 2803 found: handle 8 [cmd] Descriptor 2a01 found: handle 9 [cmd] Descriptor 2803 found: handle a [cmd] Descriptor 2aa6 found: handle b [cmd] Descriptor 2800 found: handle c [cmd] Descriptor 2803 found: handle d [cmd] Descriptor 12345678-1234-5678-1234-56789abcde02 found: handle e [cmd] Discover complete
可以看到,“12345678-1234-5678-1234-56789abcde02”是评估板 B 注册的属性,可读可写,其 handle 是 e。
进行 GATT 写操作:评估板 A 往 handle 是 e 的属性写字符串“ab”:
$>gatt write e 0 ab string [cmd] Write pending <ACK> 200 OK $ [cmd] Write complete: err 0x00
进行 GATT 读操作:评估板 A 往 handle 是 e 的属性读数据:
gatt read e [cmd] Read pending <ACK> 200 OK $ [cmd] Read complete: err 0x00 length 2 [cmd] Read Value: 6162
其中 61/62 正是 a/b 的 ASCII 码,读写成功。
-
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号