我正在尝试通过BLE112实现BLE112 Smart Dongle委员会和BlueGiga之间的沟通。
这两个支持AT命令集 我已经设法通过BLEGUI工具在这两者之间进行配对,如下面的屏幕截图所示。
对于Read操作,控制台显示以下内容:
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板)中的第3个attrbute值。自从我收到它以来,这个价值就在那里。
现在,下面的部分显示我试图读取第7个属性,该属性在设备上不存在,但我打算创建。 由于followinf read命令是由我直接写入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
我有以下问题:
答案 0 :(得分:2)
是的,您可以创建自己的固件并将其上传到BLE112板,并提供您定义的服务和特性。 Bluegiga的应用说明“开发您的第一个蓝牙智能应用程序”可以在此处找到一个很好的指导: BLE112 Documentation and Software
关于存储数据,BLE112有一个持久存储,您可以在其中存储(键,值)对。请查看有关如何访问它的详细信息的“Bluetooth Smart Software API Reference”文档。该文件也可以在上面的链接中找到。
答案 1 :(得分: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))
根据Bluegiga文档,唯一真正的技巧是8000美元,这是第一个可用(持久)内存地址。
请注意,如果您使用CC-Debugger或OTA编程覆盖BLE112 / BLE113固件,则会清除所有持久性闪存信息。