1

我正在尝试实现BLE112板和BlueGiga的BLE112 智能加密狗之间的通信。

这两个支持 AT 命令集。
我已经设法通过 BLEGUI 工具在这两者之间进行配对,如下面的屏幕截图所示。

在此处输入图像描述

对于读取操作,控制台显示如下:

ble_cmd_attclient_read_by_handle connection: 0 chrhandle: 3
TX: 00030404000300

ble_rsp_attclient_read_by_handle connection: 0 result: 0 ['No Error']
RX: 00030404000000

ble_evt_attclient_attribute_value connection: 0 atthandle: 3 type: 0 value:426c75656769676120554152542044656d6f
RX: 801704050003000012426c75656769676120554152542044656d6f

上面的行意味着客户端(BLED112 USB Dongle)能够读取存储在服务器(BLE112板)中的第三个属性值。自从我收到它以来,这个价值就在那里。

现在下面的部分显示我试图读取设备上不存在的第 7 个属性,但我打算创建。由于 followinf 读取命令是我直接写到 BLEGUI 的控制台上的,它的显示方式与通过 BLEGUI 上的按钮发送的方式不同。

ble_cmd_attclient_read_by_handle 0 7 
TX: 00030404000700  

ble_rsp_attclient_read_by_handle connection: 0 result: 0 ['No Error']
RX: 00030404000700

ble_evt_attclient_procedure_completed connection: 0 result: 401 ['The attribute handle given was not valid on this server']chrhandle: 7
RX: 800504010001040700

我有以下问题:

  1. 我可以在设备上创建新的(用户定义的)属性吗?
  2. 我可以写入/更改设备上的现有属性吗?
  3. 如果我打算将任何数据存储到设备上,该怎么做?
4

2 回答 2

2

是的,您可以创建自己的固件并将其上传到 BLE112 板上,并使用您定义的服务和特性。Bluegiga 的应用笔记“开发您的第一个蓝牙智能应用程序”是一个很好的指南,可在此处找到: BLE112 文档和软件

关于存储数据,BLE112 有一个持久存储,您可以在其中存储(键、值)对。查看“蓝牙智能软件 API 参考”文档,了解如何访问它的详细信息。该文档也可以在上述链接下找到。

于 2014-02-26T17:14:27.717 回答
2

对于稍后查看此问题的任何人,我将尝试嵌入一些示例代码。

我可以在设备上创建新的(用户定义的)属性吗?

我可以写入/更改设备上的现有属性吗?

@stathisv 放置了 Bluegiga 文档的链接,但这里有一些实际示例:https ://github.com/sureshjoshi/ble113-firmware-examples

您需要编辑 gatt.xml,定义服务(或使用现有服务)并定义特征。例如:

<service uuid="aaa51666-e7cb-469b-8e4d-2742f1ba7aaa" advertise="true">
        <characteristic uuid="0dddd780-b042-4876-aae1-112855353ddd" id="xgatt_who">
            <description>Who Am I</description>
            <properties read="true" notify="true" />
            <value length="1" />
        </characteristic>   
</service>

如果我打算将任何数据存储到设备上,该怎么做?

我在这里写了一个可编译的例子:https ://github.com/sureshjoshi/ble113-firmware-examples/tree/master/Persistence ,但基础很简单,只有两个 API 命令:

# Write value to PS-store
call flash_ps_save($8000, 2, value_data(0:2))

# Read value from PS-store
call flash_ps_load($8000)(read_result, len, data(0:2))

唯一真正的技巧是 8000 美元,这是 Bluegiga 文档中第一个可用(永久)内存地址。

请注意,如果您使用 CC-Debugger 或 OTA 编程覆盖 BLE112/BLE113 固件,您会清除所有持久闪存信息。

于 2015-03-26T05:03:48.677 回答