Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    【XR806开发板试用】BLE试用之三:GATT读写示例

    Wireless & Analog Series
    1
    2
    1495
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Randolph
      Randolph LV 6 last edited by Randolph

      本示例通过演示 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 跳转到以下界面了:9bce7f86-4a11-4a4b-98b4-ef83d9512306-image.png

      同时串口可以看到提示:

      [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”,可以看到注册的服务 包括一个可读可写的属性。
      b4231b0a-46db-4bc4-850a-bec95343578b-image.png

      进行读写操作:如写入值“0x010203”,按照下图的红色序号“①->②->③”操作,然后在红色序 号④可以看到数据正常写入。此时再进行读操作,点击蓝色的①,可以在蓝色序号②的位置看到读取的结果如下:
      12c54ebf-05ec-4771-8818-ced4108fb7cb-image.png

      开发板互联

      两块评估板完成烧写后,复位即可,示例代码自动运行。

      分别执行

      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 码,读写成功。

      1 Reply Last reply Reply Quote Share 1
      • Randolph
        Randolph LV 6 last edited by

        技术文档:
        XR806_Mesh控制台命令_使用指南.pdf
        XR806_BLE控制台命令_使用指南.pdf
        XR806_BLE_Mesh_开发指南.pdf
        XR806_BLE_Host应用_开发指南.pdf
        XR806_BLE_Controller驱动_使用指南.pdf

        1 Reply Last reply Reply Quote Share 1
        • 1 / 1
        • First post
          Last post

        Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

        行为准则 | 用户协议 | 隐私权政策