2014-02-19 31 views
2

我試圖通過BlueGiga實現BLE112板與BLE112 Smart Dongle之間的通信。BlueGiga的BLE112模塊在BGAPI中的讀/寫錯誤

這兩個支持AT命令集。
我已經設法通過BLEGUI工具在這兩者之間執行配對,如下面的截圖所示。

enter image description here

對於讀操作後的控制檯顯示:上述

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加密狗)能夠讀取存儲在服務器第三attrbute值(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. 如果我打算將任何數據存儲到設備上,該怎麼辦?

回答

3

是的,您可以創建自己的固件並將其上傳到BLE112板,並提供由您定義的服務和特性。整個過程有很好的指導是藍兆應用指南「開發你的第一個藍牙智能應用程序」,它可以在這裏找到: BLE112 Documentation and Software

至於用於存儲數據,BLE112具有持久性存儲,您可以存儲(鍵,值)對。查看關於如何訪問它的詳細信息的「Bluetooth Smart Software API Reference」文檔。這個文件也可以在上面的鏈接下找到。

2

對於稍後查看此問題的人,我會嘗試嵌入一些示例代碼。

我可以在設備上創建新的(用戶定義的)屬性嗎?

我可以在設備上寫入/更改現有屬性嗎?

@stathisv放了藍兆的文件的鏈接,但這裏有一些實際的例子: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文檔。

請注意,如果您覆蓋BLE112/BLE113固件,或者使用的CC-調試器或OTA編程,你消滅所有的持久閃光燈的信息。