こんばんは、ファルコンMです。
BLE モジュールRN4020 を使用してSNコマンドでデバイス名を送信しているが、受信できない!って悩んでいる人。※ Android に限った話ではない。
SNコマンドでデバイス名を送信できているが、受信できていない
RN4020 を使ってAndroid アプリとBLE 通信をしたい。
それで、SNコマンドでRN4020 からデバイス名を設定して送った。コマンドは以下。
SN,TestRN4020(\r\n)
送った後、RN4020 から以下の応答が返ってきた。
AOK(\r\n)
「 よし!うまく送れたようだ!!」
と思って、次は、RN4020 とAndroid アプリをBLE で接続する。
ここもうまくできて、BLE 通信ができる状態となった。
Android で先ほどのコマンドで設定したデバイス名が取得できるか確認した。
android.bluetooth.BluetoothDevice クラスの getName() メソッドで取得できるはず。
だが、
取得できなかった。
null が返ってきた。なぜ?
公式資料 を見たところ特に問題ないと思われる。
タイトルは20文字以内だし。
デバイス名を8文字以内にしたらうまくできた
それで、いろいろと試行錯誤した結果、デバイス名を8文字以内にしたらAndroid 側で正しいデバイス名を取得できた。
9文字だと取得できなかった。
RN4020 からの応答は、8文字の場合も9文字の場合も、AOK(\r\n) が返ってくる。
よく分からない。
ググってみた結果、公式サイトで気になる記事を見つけた。
この記事によると、MLDPモードだとSNコマンドは8文字までのデバイス名しか送れない!と質問している。
同じことで悩んでいる人がいた!
記事をよく読んでみると、
Private Service を使っているとサイズが制限されるらしい。
確かに、今回は Private Service を使っていた。
それが原因でサイズが制限されていたようだ。
詳しくは、以下に書かれている。
まとめ
RN4020 でSNコマンドでデバイス名が取得できない問題について。
Private Service を使っていたためサイズ制限がかかっていたようだ。
公式のマニュアルには書かれていないので注意が必要。
コメントを残す