1

BlueGiga によるBLE112ボードとBLE112スマート ドングル間の通信を実装しようとしています。

これら 2 つは AT コマンド セットをサポートします。
以下のスクリーンショットに示すように、BLEGUI ツールを介してこれら 2 つの間のペアリングを実行することができました。

ここに画像の説明を入力

読み取り操作の場合、コンソールには次のように表示されます。

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 ドングル) がサーバー (BLE112 ボード) に保存されている 3 番目の属性値を読み取ることができることを意味します。この価値は、私がそれを受け取ったときからずっとそこにありました。

以下の部分は、デバイスに存在しなかった 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

次の質問があります。

  1. デバイスに新しい (ユーザー定義の) 属性を作成できますか?
  2. デバイスの既存の属性を書き込み/変更できますか?
  3. デバイスにデータを保存する場合、どのようにすればよいですか?
4

2 に答える 2

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ですが、基本は 2 つの 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 ファームウェアを上書きすると、永続的なフラッシュ情報がすべて消去されることに注意してください。

于 2015-03-26T05:03:48.677 に答える