【问题标题】:Can I read data using only GATT characteristics or do I need a GATT service too?我可以仅使用 GATT 特征读取数据,还是我也需要 GATT 服务?
【发布时间】:2019-01-12 08:32:45
【问题描述】:

是否可以只向 BLE 设备添加单个 GATT 特性并从蓝牙接收器读取,或者我是否需要向 BLE 设备添加 GATT 服务才能从设备读取?除了模拟输出 GATT 特性之外,我还需要 GATT 服务来简单地读取模拟输出吗?最后,我只想从 arduino uno 上的缓冲区读取 16 位字节并通过蓝牙发送。

【问题讨论】:

    标签: bluetooth bluetooth-lowenergy arduino-uno gatt


    【解决方案1】:

    当然,您也需要服务。服务是特征的容器。

    通用属性 (GATT) 定义了一个分层数据结构,该结构暴露给连接的蓝牙低功耗 (LE) 设备。 GATT 配置文件描述了基于 GATT 功能的用例、角色和一般行为。服务是封装设备部分行为的特征和与其他服​​务的关系的集合。这还包括属性服务器中使用的服务、特征和属性的层次结构。 GATT 层次结构的顶部是一个配置文件,它由一个或多个实现用例所必需的服务组成。服务由特征或对其他服务的引用组成。特征由类型(由 UUID 表示)、值、一组指示特征支持的操作的属性和一组与安全性相关的权限组成。它还可能包括一个或多个描述符——与拥有特征相关的元数据或配置标志。 GATT 定义了客户端(BLE Central)和服务器(BLE Peripheral)角色。 GATT 服务器存储通过空中传输到 GATT 客户端的数据,并接受来自 GATT 客户端的请求、命令和确认。当 GATT 服务器上发生指定事件时,GATT 服务器发送对请求的响应,并向 GATT 客户端异步发送指示和通知。 GATT 还指定 GATT 服务器上包含的数据格式。

    【讨论】:

    • 但是如果电池电量服务仅由一个特性(电池电量特性)组成,那么原则上为什么我们需要添加服务呢? bluetooth.com/specifications/gatt/…
    • 因为设计。如需更详细的信息,请参阅蓝牙核心规范、SDP 和 GATT 服务说明。
    • 蓝牙标准要求在服务中包含一个特性。如果您不遵循标准并将其置于服务之外,则很可能所有可用的客户端 API 都找不到。
    猜你喜欢
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 2013-11-29
    • 1970-01-01
    相关资源
    最近更新 更多