蓝牙 AT命令集

备注

蓝牙 AT命令集默认未启用。

可以参考 配置 SDK (menuconfig) 进入 CONFIG BT 配置,勾选 Enable BT 打开蓝牙功能, 再勾选 BLE Transfer Module 打开传输模块。

在传输模块初始化之前,仅支持使用以 AT+BTDEMO 开头的命令,若要使用其他命令必须先初始化传输模块。

AT+BTDEMO=transfer_module

功能说明

初始化或反初始化传输模块。

命令格式

AT+BTDEMO=transfer_module,<op>

响应格式

OK

参数

  • <op>: 初始化或反初始化传输模块

    • 0: 反初始化传输模块

    • 1: 初始化传输模块

AT+BTDEMO=transfer_module,get_name

功能说明

获取设备名称。

命令格式

AT+BTDEMO=transfer_module,get_name

响应格式

+BTDEMO:transfer_module,get_name,<name>
OK

参数

  • <name>: 设备名称

AT+BTDEMO=transfer_module,set_name

功能说明

设置设备名称。

命令格式

AT+BTDEMO=transfer_module,set_name,<name>

响应格式

OK

参数

  • <name>: 设备名称

    • 设备名称长度不应超过40个字符

备注

此命令仅设置设备名称。如果要修改广播数据中的名称,请在开始广播前使用命令 AT+BLEGAP=adv_data[,<data>]

AT+BTDEMO=transfer_module,get_uuid

功能说明

获取UUID。

命令格式

AT+BTDEMO=transfer_module,get_uuid,<attr>

响应格式

+BTDEMO:transfer_module,get_uuid,<attr>,<uuid>
OK

参数

  • <attr>: 属性索引

    • 0: 主服务

    • 1: 读特性

    • 2: 写特性

    • 3: 通知特性

    • 4: 指示特性

  • <uuid>: 属性的UUID

AT+BTDEMO=transfer_module,set_uuid

功能说明

在初始化传输模块前设置UUID。

命令格式

AT+BTDEMO=transfer_module,set_uuid,<attr>,<uuid>

响应格式

OK

参数

  • <attr>: 属性索引

    • 0: 主服务

    • 1: 读特性

    • 2: 写特性

    • 3: 通知特性

    • 4: 指示特性

  • <uuid>: 要设置的UUID

示例

AT+BTDEMO=transfer_module,set_uuid,1,0xd005
OK

AT+BTDEMO=transfer_module,read_val

功能说明

为可读特性设置读取值。

命令格式

AT+BTDEMO=transfer_module,read_val,<length>,<data>

响应格式

OK

参数

  • <length>: 读取值的长度

    • 最大值为30

  • <data>: 读取值,不包含0x的十六进制数,例如112233445566778899aabb

AT+BLEGAP=addr

功能说明

获取蓝牙MAC地址。

命令格式

AT+BLEGAP=addr

响应格式

+BLEGAP:addr,<addr>(<addr_type>)
OK

参数

  • <addr>: 本地地址字符串,例如00:11:22:33:44:55

  • <addr_type>: 本地地址类型字符串

    • public: 公共地址

    • random: 随机地址

    • public-id: 公共身份地址类型

    • random-id: 随机身份地址类型

AT+BLEGAP=rand_addr

功能说明

设置蓝牙随机地址。

命令格式

AT+BLEGAP=rand_addr,<addr>[,<type>]

响应格式

+BLEGAP:rand_addr,<rand_addr>
OK

参数

  • <addr>: 要设置的随机地址

    • 地址字符串,例如001122334455

  • <type>: 地址类型

    • 0: 静态随机设备地址

    • 1: 不可解析随机设备地址

    • 2: 可解析随机设备地址

  • <rand_addr>: 设置成功的随机地址

    • 地址字符串,例如00:11:22:33:44:55

AT+BLEGAP=mtu_size

功能说明

获取MTU大小。

命令格式

AT+BLEGAP=mtu_size,<conn_handle>

响应格式

+BLEGAP:mtu_size,<conn_handle>,<mtu_size>
OK

参数

  • <conn_handle>: 连接句柄

  • <mtu_size>: 此连接的MTU大小

AT+BLEGAP=set_mtu

功能说明

在建立连接前设置MTU大小。

命令格式

AT+BLEGAP=set_mtu,<mtu_size>

响应格式

OK

参数

  • <mtu_size>: MTU大小

AT+BLEGAP=adv

功能说明

开始或停止广播。

命令格式

AT+BLEGAP=adv,<op>[,<type>,<own_addr_type>,<filter_policy>[,<peer_addr_type>,<peer_addr>[,<interval_min>,<interval_max>,<channel_map>]]]

响应格式

OK

参数

  • <op>: 广播选项

    • 1: 开始广播

    • 0: 停止广播

  • <type>: 广播类型

    • 0: 可连接非定向广播

    • 1: 可连接高占空比定向广播

    • 2: 可扫描非定向广播

    • 3: 不可连接非定向广播

    • 4: 可连接低占空比定向广播

  • <own_addr_type>: 本地地址类型

    • 0: 公共地址

    • 1: 随机地址

    • 2: 公共身份地址类型

    • 3: 随机身份地址类型

  • <filter_policy>: 广播过滤策略

    • 0: 处理所有设备的扫描和连接请求

    • 1: 处理所有设备的连接请求,仅处理白名单中设备的扫描请求

    • 2: 处理所有设备的扫描请求,仅处理白名单中设备的连接请求

    • 3: 仅处理白名单中设备的扫描和连接请求

  • <peer_addr_type>: 对端地址类型

    • 0: 公共地址

    • 1: 随机地址

    • 2: 公共身份地址类型

    • 3: 随机身份地址类型

  • <peer_addr>: 对端地址

  • <interval_min>: 最小广播间隔

    • [0x20, 0x4000]

    • 最小广播间隔 = <interval_min> * 0.625 ms,范围20ms到10.24s

  • <interval_max>: 最大广播间隔

    • [0x20, 0x4000]

    • 最大广播间隔 = <interval_max> * 0.625 ms,范围20ms到10.24s

  • <channel_map>: 广播通道映射

    • 0x01: 广播通道37

    • 0x02: 广播通道38

    • 0x04: 广播通道39

    • 0x07: 所有广播通道启用

AT+BLEGAP=get_adv_param

功能说明

获取广播参数。

命令格式

AT+BLEGAP=get_adv_param

响应格式

+BLEGAP:get_adv_param,<type>,<own_addr_type>,<filter_policy>,<peer_addr_type>,<peer_addr>,<interval_min>,<interval_max>,<channel_map>
OK

参数

参考 参数

AT+BLEGAP=adv_data

功能说明

在开始广播前设置广播数据。

命令格式

AT+BLEGAP=adv_data[,<data>]

响应格式

OK

参数

  • <data>: 广播数据

    • 如果未给出<data>,将使用默认广播数据

示例

AT+BLEGAP=adv_data,02010508095265616c74656b
OK

//02: 标志部分的长度
//01: 类型是标志
//05: LE限制可发现模式和BR/EDR不支持
//08: 本地名称部分的长度
//09: 类型是完整本地名称
//5265616c74656b: 字符串"Realtek"的ASCII值,这是广播数据中的本地名称

AT+BLEGAP=scan

功能说明

开始或停止扫描。

命令格式

AT+BLEGAP=scan,<op>

响应格式

开始扫描响应格式

OK
+BLEGAP:scan,<addr>,<event_type>,<rssi>,<adv_report_len>

停止扫描响应格式

OK

参数

  • <op>: 扫描选项

    • 1: 开始扫描

    • 0: 停止扫描

  • <addr>: 广播地址

  • <event_type>: 事件类型

    • 0: 可连接可扫描的非定向广播(ADV_IND)

    • 1: 可连接的定向广播(ADV_DIRECT_IND)

    • 2: 可扫描的非定向广播(ADV_SCAN_IND)

    • 3: 不可连接的非定向广播(ADV_NONCONN_IND)

    • 4: 扫描响应(SCAN_RSP)

  • <rssi>: RSSI

    • [-127, 20], 127表示RSSI不可用

  • <adv_report_len>: 广播数据长度

AT+BLEGAP=scan_param

功能说明

在扫描开始前设置扫描参数。

命令格式

AT+BLEGAP=scan_param[,<type>,<own_addr_type>,<filter_policy>,<duplicate_opt>[,<interval>,<window>]]

响应格式

OK

参数

  • <type>: 扫描类型

    • 0: 被动扫描

    • 1: 主动扫描

  • <own_addr_type>: 本地地址类型

    • 0: 公共地址

    • 1: 随机地址

    • 2: 公共身份地址类型

    • 3: 随机身份地址类型

  • <filter_policy>: 扫描过滤策略

    • 0: 接受所有广播数据包,除了是不针对此设备的定向广播数据包(默认)

    • 1: 仅接受白名单中广播者地址的广播数据包。不针对此设备的定向广播数据包将被忽略

    • 2: 接受所有广播数据包,除了发起者的身份地址不针对此设备的定向广播数据包

    • 3: 接受所有广播数据包,除了广播者的身份地址不在白名单中且发起者的身份地址不针对此设备的定向广播数据包

  • <duplicate_opt>: 扫描重复过滤选项

    • 0: 禁用重复过滤

    • 1: 启用重复过滤

    • 2: 启用重复过滤,每个扫描周期重置

  • <interval>: 扫描间隔

    • [0x4, 0x4000]

    • 扫描间隔 = <interval> * 0.625 ms, 范围2.5ms到10.24s

  • <window>: 扫描窗口

    • [0x4, 0x4000]

    • 扫描窗口 = <window> * 0.625 ms, 范围2.5ms到10.24s

备注

扫描间隔不能小于扫描窗口

AT+BLEGAP=get_scan_param

功能说明

获取扫描参数。

命令格式

AT+BLEGAP=get_scan_param

响应格式

+BLEGAP:get_scan_param,<scan_type>,<local_addr_type>,<filter_policy>,<duplicate_opt>,<interval>,<window>
OK

参数

参考 参数

AT+BLEGAP=scan_rsp

功能说明

在扫描开始前设置扫描响应数据。

命令格式

AT+BLEGAP=scan_rsp[,<data>]

响应格式

OK

参数

  • <data>: 扫描响应数据

    • 如果未给出<data>,将使用默认扫描响应数据

示例

AT+BLEGAP=scan_rsp,03194000
OK

//03: 外观部分的长度
//19: 广播数据类型外观
//4000: 外观通用手机(0x0040)

AT+BLEGAP=conn

功能说明

创建连接。

命令格式

AT+BLEGAP=conn,<peer_addr_type>,<peer_addr>[,<own_addr_type>, <filter_policy>[,<scan_interval>,<scan_window>,<conn_interval_min>,<conn_interval_max>,<conn_latency>,<supv_timeout>]]

响应格式

+BLEGAP:conn,<conn_handle>,<peer_device_addr>(<peer_device_addr_type>)
OK

备注

如果BLE连线成功建立,对端设备会有如下提示:

[$]+BLEGAP:conn,<conn_handle>,<peer_device_addr>

参数

  • <peer_addr_type>: 对等地址类型

    • 0: 公共地址

    • 1: 随机地址

    • 2: 公共身份地址类型

    • 3: 随机身份地址类型

  • <own_addr_type>: 本地地址类型

    • 0: 公共地址

    • 1: 随机地址

    • 2: 公共身份地址类型

    • 3: 随机身份地址类型

  • <filter_policy>: 连接过滤策略

    • 0: 不使用白名单过滤

    • 1: 使用白名单过滤

  • <scan_interval>: 扫描间隔

    • [0x4, 0x4000]

    • 扫描间隔 = <scan_interval> * 0.625 ms, 范围2.5ms到10.24s

  • <scan_window>: 扫描窗口

    • [0x4, 0x4000]

    • 扫描窗口 = <scan_window> * 0.625 ms, 范围2.5ms到10.24s

  • <conn_interval_min>: 最小连接间隔

    • [0x6, 0x0C80]

    • 最小连接间隔 = <conn_interval_min> * 1.25 ms, 范围7.5ms到4s

  • <conn_interval_max>: 最大连接间隔

    • [0x6, 0x0C80]

    • 最大连接间隔 = <conn_interval_max> * 1.25 ms, 范围7.5ms到4s

  • <conn_latency>: 从机连接延迟(连接事件数)

    • [0, 0x01F3]

  • <supv_timeout>: LE链路的监督超时

    • [0xa, 0x0C80]

    • 监督超时 = <supv_timeout> * 10 ms, 范围100ms到32s

  • <conn_handle>: 连接句柄

  • <peer_device_addr>: 对端设备地址字符串, 例如00:11:22:33:44:55

  • <peer_device_addr_type>: 对端设备地址类型字符串

    • public: 公共地址

    • random: 随机地址

    • public-id: 公共身份地址类型

    • random-id: 随机身份地址类型

备注

扫描间隔不能小于扫描窗口

示例

AT+BLEGAP=conn,0,701d080bdc77
+BLEGAP:conn,0,17,70:1D:08:0B:DC:77(public)
OK

//对端设备
[$]+BLEGAP:conn,23,00:E0:4C:87:22:3D(public)

AT+BLEGAP=disconn

功能说明

关闭连接。

命令格式

AT+BLEGAP=disconn,<conn_handle>

响应格式

OK

备注

如果BLE连线断开,对端设备会有如下提示:

[$]+BLEGAP:disconn,<conn_handle>,<peer_addr>(<peer_addr_type>)

如果本地设备没有执行这个命令并且本地设备的BLE连接断开了,本地设备会有如下提示:

[$]+BLEGAP:disconn,<conn_handle>,<peer_addr>(<peer_addr_type>)

参数

  • <conn_handle>: 连接句柄

  • <peer_addr>: 对端设备地址字符串,例如00:11:22:33:44:55

  • <peer_addr_type>: 对端设备地址类型字符串

    • public: 公共地址

    • random: 随机地址

    • public-id: 公共身份地址类型

    • random-id: 随机身份地址类型

AT+BLEGAP=conn_info

功能说明

获取连接信息。

命令格式

AT+BLEGAP=conn_info,<conn_handle>

响应格式

+BLEGAP:conn_info,<conn_handle>,<role>,<remote_addr>(<remote_addr_type>),<interval>,<latency>,<supv_timeout>,<tx_phy>,<rx_phy>
OK

参数

  • <conn_handle>: 连接句柄

  • <role>: 主设备或从设备

  • <remote_addr>: 远端设备地址

  • <interval>: 连接间隔

  • <latency>: 从机连接延迟(连接事件数)

  • <supv_timeout>: LE链路的监督超时

  • <tx_phy>: 发送物理层

    • 1: 1M

    • 2: 2M

    • 3: 编码

  • <rx_phy>: 接收物理层

    • 1: 1M

    • 2: 2M

    • 3: 编码

AT+BLEGAP=conn_update

功能说明

在连接建立后更新连接参数。

命令格式

AT+BLEGAP=conn_update,<conn_handle>,<conn_interval_min>,<conn_interval_max>,<conn_latency>,<supv_timeout>

响应格式

OK

参数

  • <conn_handle>: 连接句柄

  • <conn_interval_min>: 最小连接间隔

    • [0x6, 0x0C80]

    • 最小连接间隔 = <conn_interval_min> * 1.25 ms, 范围7.5ms到4s

  • <conn_interval_max>: 最大连接间隔

    • [0x6, 0x0C80]

    • 最大连接间隔 = <conn_interval_max> * 1.25 ms, 范围7.5ms到4s

  • <conn_latency>: 从机连接延迟(连接事件数)

    • [0, 0x01F3]

  • <supv_timeout>: LE链路的监督超时

    • [0xa, 0x0C80]

    • 监督超时 = <supv_timeout> * 10 ms, 范围100ms到32s

AT+BLEGAP=wl_add

功能说明

将地址添加到白名单。

命令格式

AT+BLEGAP=wl_add,<addr_type>,<addr>

响应格式

OK

参数

  • <addr_type>: 远端地址类型

    • 0: 公共地址

    • 1: 随机地址

    • 2: 公共身份地址

    • 3: 随机身份地址

  • <addr>: 要添加到白名单的地址

AT+BLEGAP=wl_remove

功能说明

从白名单中移除地址。

命令格式

AT+BLEGAP=wl_remove,<addr_type>,<addr>

响应格式

OK

参数

  • <addr_type>: 远端地址类型

    • 0: 公共地址

    • 1: 随机地址

    • 2: 公共身份地址

    • 3: 随机身份地址

  • <addr>: 要从白名单中移除的地址

AT+BLEGAP=wl_clear

功能说明

清空白名单。

命令格式

AT+BLEGAP=wl_clear

响应格式

OK

参数

AT+BLEGAP=sec_param

功能说明

配置加密信息。

命令格式

AT+BLEGAP=sec_param[,<io_cap>,<oob_data_flag>,<bond>,<mitm>,<sec_pair>,<use_fixed_key>,<fixed_key>,<sec_pair_only>,<auto_sec_req>]

响应格式

OK

参数

  • <io_cap>: 输入/输出能力

    • 0: 只有显示,无键盘或是/否键

    • 1: 有显示和是/否键

    • 2: 只有键盘,无显示

    • 3: 无输入输出能力

    • 4: 有键盘和显示

  • <oob_data_flag>: OOB数据标志

    • 默认全0

  • <bond>: 绑定标志

  • <mitm>: MITM保护标志

  • <sec_pair>: 安全配对标志

  • <use_fixed_key>: 配对时使用固定密钥

    • 0: 禁用(默认)

    • 1: 启用

  • <fixed_key>: MITM保护的固定密钥

    • [0, 999999]

    • 默认为0

  • <sec_pair_only>: 仅安全配对标志

  • <auto_sec_req>: 连接时自动发送SMP安全请求

    • 0: 禁用(默认)

    • 1: 启用

AT+BLEGAP=get_sec_param

功能说明

获取加密参数。

命令格式

AT+BLEGAP=get_sec_param

响应格式

+BLEGAP:get_sec_param,<io_cap>,<oob_data_flag>,<bond>,<mitm>,<sec_pair>,<use_fixed_key>,<fixed_key>
OK

参数

参考 参数

AT+BLEGAP=sec

功能说明

启动加密流程。

命令格式

AT+BLEGAP=sec,[conn_handle]

响应格式

OK

备注

如果BLE配对完成,本地设备和对端设备会有如下提示:

[$]+BLEGAP:authcmpl,<conn_hdl>,<sec_result>

如果对端设备要在配对时进行仅工作配对确认,对端设备会有如下提示:

[$]+BLEGAP:pair_cfm,<conn_handle>

如果设备在配对过程中需要输入认证密钥,设备会有如下提示:

[$]+BLEGAP:passkey_input,<conn_handle>

如果设备在配对过程中需要显示密钥,设备会有如下提示:

[$]+BLEGAP:passkey_display,<conn_handle>,<passkey>

如果设备在配对过程中需要输入OOB密钥,设备会有如下提示:

[$]+BLEGAP:oobkey_input,<conn_handle>

参数

  • <conn_handle>: 连接句柄

  • <sec_result>:

    • 0: 成功

    • 1: 失败

  • <passkey>: 输入的密钥

AT+BLEGAP=pair_cfm

功能说明

确认仅工作配对指示。

命令格式

AT+BLEGAP=pair_cfm,<conn_handle>,<op>

响应格式

OK

参数

  • <conn_handle>: 连接句柄

  • <op>: 确认配对指示

    • 1: 接受

    • 2: 拒绝

AT+BLEGAP=auth_key

功能说明

输入认证密钥。

命令格式

AT+BLEGAP=auth_key,<conn_handle>,<passkey>

响应格式

OK

参数

  • <conn_handle>: 连接句柄

  • <passkey>: 认证密钥

    • [0, 999999]

AT+BLEGAP=auth_keycfm

功能说明

确认认证密钥。

命令格式

AT+BLEGAP=auth_keycfm,<conn_handle>,<op>

响应格式

OK

参数

  • <conn_handle>: 连接句柄

  • <op>: 确认认证密钥

    • 1: 接受

    • 2: 拒绝

AT+BLEGAP=auth_oob

功能说明

输入OOB数据。

命令格式

AT+BLEGAP=auth_oob,<conn_handle>,<tk>

响应格式

OK

参数

  • <conn_handle>: 连接句柄

  • <tk>: OOB数据

AT+BLEGAP=bond_info

功能说明

获取绑定信息。

命令格式

AT+BLEGAP=bond_info

响应格式

+BLEGAP:bond_info,<idx_1>,<remote_addr_1>,<identity_addr_1>,<idx_2>,,<remote_addr_2>,<identity_addr_2>,…
OK

参数

  • <idx>: 绑定信息的索引号

  • <remote_addr>: 远端设备地址

  • <identity_addr>: 远端设备身份地址

AT+BLEGAP=bond_del

功能说明

删除绑定信息。

命令格式

AT+BLEGAP=bond_del,<addr_type>,<addr>

响应格式

OK

参数

  • <addr_type>: 地址类型

    • 0: 公共地址

    • 1: 随机地址

    • 2: 公共身份地址

    • 3: 随机身份地址

  • <addr>: 要删除的地址

AT+BLEGAP=bond_clear

功能说明

清除所有绑定信息。

命令格式

AT+BLEGAP=bond_clear

响应格式

OK

参数

AT+BLEGAP=disc

功能说明

发现服务和特征。

命令格式

AT+BLEGATTC=disc,<conn_handle>,<discover_type>[,<start_handle>,<end_handle>,<uuid16/uuid128>]

响应格式

如果<discover_type>为0,响应如下:

+BLEGATTC:disc,<discover_type>,<conn_handle>,<start_handle>,<end_handle>,<UUID>
OK

如果<discover_type>为1,响应如下:

+BLEGATTC:disc,<discover_type>,<conn_handle>,<start_handle>,<end_handle>
OK

如果<discover_type>为2,响应如下:

+BLEGATTC:disc,<discover_type>,<conn_handle>,<included_service_handle>,<start_handle>,<end_handle>,<UUID>
OK

如果<discover_type>为3,响应如下:

+BLEGATTC:disc,<discover_type>,<conn_handle>,<characteristic_handle>,<properties>,<value_handle>,<UUID>
OK

如果<discover_type>为4,响应如下:

+BLEGATTC:disc,<discover_type>,<conn_handle>,<characteristic_handle>,<properties>,<value_handle>,<UUID>
OK

如果<discover_type>为5,响应如下:

+BLEGATTC:disc,<discover_type>,<conn_handle>,<descriptor_handle>,<UUID>
OK

参数

  • <conn_handle>: 连接句柄

  • <discover_type>: 发现类型

    • 0: 发现所有主服务

    • 1: 根据服务UUID发现主服务

    • 2: 查找包含的服务

    • 3: 发现服务的所有特征

    • 4: 根据UUID发现特征

    • 5: 发现所有特征描述符

  • <start_handle>: 发现范围的起始属性句柄

  • <end_handle>: 发现范围的结束属性句柄

  • <uuid16/uuid128>: UUID发现目标

  • <included_service_handle>: 包含服务声明的句柄

  • <characteristic_handle>: 特征声明句柄

  • <properties>: 特征属性

  • <value_handle>: 特征值属性句柄

  • <descriptor_handle>: 特征描述符句柄

示例

AT+BLEGATTC=disc,17,3,0x1,0xFFFF
+BLEGATTC:disc,3,17,0x0002,0x20,0x0003,2a05
+BLEGATTC:disc,3,17,0x0006,0x02,0x0007,2a00
+BLEGATTC:disc,3,17,0x0008,0x02,0x0009,2a01
+BLEGATTC:disc,3,17,0x000a,0x02,0x000b,2a04
+BLEGATTC:disc,3,17,0x000d,0x02,0x000e,d001
+BLEGATTC:disc,3,17,0x000f,0x0c,0x0010,d002
+BLEGATTC:disc,3,17,0x0011,0x10,0x0012,d003
+BLEGATTC:disc,3,17,0x0014,0x20,0x0015,d004
OK

AT+BLEGATTC=read

功能说明

读取特征值。

命令格式

AT+BLEGATTC=read,<conn_handle>,<type>[,…]

响应格式

如果<type>为0,响应如下:

+BLEGATTC:read,<conn_handle>,<type>,<handle>,<length>,<data>
OK

如果<type>为1,响应如下:

+BLEGATTC:read,<conn_handle>,<type>,<handle>,<length>,<data>
OK

如果<type>为3,响应如下:

+BLEGATTC:read,<conn_handle>,<type>,<length>,<data>
OK

备注

如果GATT客户端读取特征值成功,GATT服务端会有如下提示:

[$]+BLEGATTS:read,<service_app_id>,<conn_handle>,<charac_index>

参数

  • <conn_handle>: 连接句柄

  • <type>: 读取类型

    • 0: 通过句柄读取特征值,[…]=<handle>

    • 1: 通过特征UUID读取,[…]=<start_handle>,<end_handle>,<uuid16/uuid128>

    • 2: 读取多个特征值(不支持)

    • 3: 读取多个可变特征值,[…]=<handle_count>,<handles_arr_1>[,…]

  • <handle>: 属性句柄

  • <length>: 读取的值的长度

  • <data>: 读取的值,不包含0x的十六进制数

  • <service_app_id>: 服务应用ID

  • <charac_index>: 特征索引

示例

AT+BLEGATTC=read,17,0,0xc
+BLEGATTC:read,17,0,0x000e,10,0102030405060708090a //读取的值为十六进制数
OK

//GATT服务端
[$]+BLEGATTS:read,12,23,2

AT+BLEGATTC=write

功能说明

写入特征值。

命令格式

AT+BLEGATTC=write,<conn_handle>,<type>,<handle>,<length>,<data>

响应格式

OK

备注

如果GATT客户端写入特征值成功,GATT服务端会有如下提示:

[$]+BLEGATTS:write,<service_app_id>,<conn_handle>,<charac_index>,<type>,<length>,<data>

你应该使用这个命令来使能/禁用通知/指示。格式如下:

AT+BLEGATTC=write,17,0,0x17,2,0100

//17: 连接句柄
//0: 写入请求类型,必须为0
//0x17: CCCD句柄
//2: 写入数据长度,必须为2
//0100: 写入数据,0100表示使能通知,0200表示使能指示,0000表示禁用通知/指示

参数

  • <conn_handle>: 连接句柄

  • <type>: 写入类型

    • 0: 写入特征值请求

    • 1: 无响应写入特征值

    • 2: 无响应且带签名数据写入特征值

  • <handle>: 对等设备的属性句柄

  • <length>: 写入数据的长度

  • <data>: 写入的数据,不包含0x的十六进制数,如0a0b

  • <service_app_id>: 服务应用ID

  • <len>: 数据长度

  • <data>: 写入的数据值,如 0a0b

示例

AT+BLEGATTC=write,17,1,0x10,1,01
OK

//GATT服务端
[$]+BLEGATTS:write,12,23,4,1,1,01

AT+BLEGATTS=notify

功能说明

从GATT服务端发送通知。

命令格式

AT+BLEGATTS=notify,<conn_handle>,<service_app_id>,<charac_index>,<length>,<data>

响应格式

OK

备注

如果GATT服务器发送通知成功,GATT客户端会有如下提示:

[$]+BLEGATTC:notify,<conn_handle>,<value_handle>,<length>,<data>

参数

  • <conn_handle>: 连接句柄

  • <service_app_id>: 服务应用ID,固定值12

  • <charac_index>: 特征索引,固定值6

  • <length>: 通知数据的长度

  • <data>: 通知数据,不包含0x的十六进制数,如0a0b

  • <value_handle>: 特征值属性句柄

示例

AT+BLEGATTS=notify,23,12,6,4,11223344
OK

//GATT客户端
[$]+BLEGATTC:notify,17,0x16,4,11223344

AT+BLEGATTS=indicate

功能说明

从GATT服务端发送指示。

命令格式

AT+BLEGATTS=indicate,<conn_handle>,<service_app_id>,<charac_index>,<length>,<data>

响应格式

OK

备注

如果GATT服务器发送指示成功,GATT客户端会有如下提示:

[$]+BLEGATTC:indicate,<conn_handle>,<value_handle>,<length>,<data>

参数

  • <conn_handle>: 连接句柄

  • <service_app_id>: 服务应用ID,固定值12

  • <charac_index>: 特征索引,固定值9

  • <length>: 指示数据的长度

  • <data>: 指示数据,不包含0x的十六进制数,如0a0b

  • <value_handle>: 特征值属性句柄

示例

AT+BLEGATTS=indicate,23,12,9,4,44332211
OK

//GATT客户端
[$]+BLEGATTC:indicate,17,0x19,4,44332211

Bluetooth AT Error Code

功能说明

如果在执行AT命令时出现错误,响应如下:

ERROR:<err_code>

参数

  • <err_code>: 蓝牙AT错误代码

<err_code>

说明

1

通用错误

2

蓝牙协议栈未启用

3

内存不足

4

操作系统操作错误

5

AT命令参数无效

6

AT命令广播长度无效

7

无BLE连接错误

8

找不到IRK错误

9

无绑定错误

10

蓝牙下层协议栈错误

11

创建BLE连接超时

12

蓝牙AT命令无效

13

蓝牙AT命令超时