【質問】Bluetooth SPP使用時のボーレート設定について

10,391 views
Skip to first unread message

Yoshinari Ueyama

unread,
May 26, 2011, 10:40:25 PM5/26/11
to android-...@googlegroups.com
植山と申します。

Garaxy TabとQRコードリーダーをBluetoothにて接続しようとしています。
その過程で問題が発生しました。アドバイスいただければありがたいです。

<経緯>
Garaxy TabとQRコードリーダーのペアリングも済み、実際にQRコードリーダを動かそうとしたところ、コードを読み込みません。
メーカーに問い合わせたところ、「端末側のボーレート等の通信設定をQRコードリーダーのそれに合わせる必要がある」とのことでした。

<質問>
Android端末におけるBluetooth SPP使用時のシリアル通信設定を行う方法をおしえていただけないでしょうか?
Bluetooth関係やRFCOMM関係のクラス該当メソッドを見つけることが出来ませんでした。

以上です。対応よろしくお願いします。
--
------------------------------------------------------------------
  植山 能成@福岡
 mailto:uey...@gmail.com
------------------------------------------------------------------

black

unread,
May 27, 2011, 10:13:34 AM5/27/11
to Android-SDK-Japan
> Bluetooth関係やRFCOMM関係のクラス該当メソッドを見つけることが出来ませんでした。

ズバリ、「android.bluetooth」パッケージとなります。

SDKにBluetoothChatというチャットサンプルがありますので、そちらでBluetoothの基礎が理解できると思います。
一般的なSPP機器との接続には、サンプル中のUUIDを変更する必要があります。

Yoshinari Ueyama

unread,
May 28, 2011, 11:56:57 AM5/28/11
to android-...@googlegroups.com
blackさん、返答ありがとうございます。

android.bluetooth内のクラスを探してもボーレート設定等のシリアル通信設定に該当するメソッドを見つけることができませんでしたので質問させていただいたのですが・・・・これまでの返答はblackさんからのもの1件。 androidのAPI経由では通信設定ができないということなのでしょうか?

JNIを利用することが必要なのか?など調査の範囲を広げてみます。
 
> Bluetooth関係やRFCOMM関係のクラス該当メソッドを見つけることが出来ませんでした。

ズバリ、「android.bluetooth」パッケージとなります。

SDKにBluetoothChatというチャットサンプルがありますので、そちらでBluetoothの基礎が理解できると思います。
一般的なSPP機器との接続には、サンプル中のUUIDを変更する必要があります。



--

Yoshida Kenichi

unread,
May 29, 2011, 12:59:57 AM5/29/11
to android-...@googlegroups.com
植山さん
吉田@ECCコンピュータ専門学校ともうします。

以下のブログをまとめている者です。
BluetoothChatでシリアル接続(SPP)を行う | dietposter's blog http://bit.ly/jQbEVQ

メソッドなどAPI経由でボーレートを変える場所はありません(みつかりませんでした)。
(ちなみに細かいことを言うとボーではなくてbpsですが、bpsなど通信速度を変える場所がありません)

結局、相手側を11520bpsか9600bpsに設定すれば、Android側はそれに合わせてうまく通信してくれる、ということが経験的にわかりました。(調べてみたこと(1)参照)
ですんで、ネイティブな部分(JNIになるんでしょうか)で
・自動的に通信速度を変更している部分をみつける
・自分で明示的に通信の設定を変更する
…などとして踏み込んでいくことになるんでしょうか。

あと、UUID値の指定で通信速度などの設定を変更することができるのでは?と思い調べてみましたが、
UUID値="00001101-0000-1000-8000-00805F9B34FB"は、SPPというプロファイルだよと伝えているに過ぎないようです。(調べてみたこと(2)参照)

SPPでAndroid側から通信速度を指定できないか?というのは、私自身課題としていた点です。
3ヶ月ほど前まで取り組んでいて、Bluetooth通信が結果つながったのでそのままにしていた疑問点です。
植山さんの投稿を見て、自分自身の疑問もあり、わかる範囲で調べていました。
以下に調べてみたことを2点述べておきます。

どなたか解決策もしくはBluetoothプロファイルの根本的な動作要点をご存知の方がいましたらお教えいただきたい所存ですm(_ _)m

##############以下、調べてみたこと(1)
ArudinoでSparkFun社のBluetoothMateというBluetoothモジュールをテストしていました。
・Bluetoothモジュールをコマンドモードで115200bpsか9600bpsに固定
・Arduino側のソースもシリアルの速度をBluetoothモジュールと同じにしておく
…で相手側を設定しておくと、UUIDが"00001101-0000-1000-8000-00805F9B34FB"であれば
Android側での通信速度の設定をしなくてもチャットが可能になります。

結局、相手側は9600bps,8ピット,パリティなし,ハードフローなしの状態で通信しています。
現在6ドルのBluetoothモジュールをテストしていますが、それも同じ結果になっています。

ーー以下抜粋
BluetoothChatプロジェクトのBluetoothChatService.javaの中にあるUUID
// Unique UUID for this application
private static final UUID MY_UUID =
UUID.fromString("fa87c0d0-afac-11de-8a39-0800200c9a66");
これを以下のように書き換えます。
private static final UUID MY_UUID =
UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
ーー以上
##############以下、調べてみたこと(2)
UUID値="00001101-0000-1000-8000-00805F9B34FB"は何を表すのか?
参考URL:
1.“Bluetooth Assigned Numbers” document http://bit.ly/mdbWNr
2.SPP v1.0 の SDP レコード http://bit.ly/kAuIPV

0x1101がSPPを表す値でこれを16ビットUUID(UUID16)という。
先頭から32ビットはUUID32という予約済み領域で0x00001101でSPPを表すのみ。
残りはBASE_UUIDで、00000000-0000-1000-8000-00805F9B34FB を足して128ビットUUID(UUID128)という。

BASE_UUIDがなぜこんな値になるのかわからないのですが、SPP以外のプロファイルでも使われるベース部分のUUID値なら、ここに通信速度の設定を入れるのはなさそうに思える。

【疑問点】サンプルプログラムBluetoothChatのUUID値"fa87c0d0-afac-11de-8a39-0800200c9a66"はどこからやってきた値なのか?

ちなみに「00001101-0000-1000-8000-00805F9B34FB」をGoogleで検索すると以下のサイトが出てきます。
ServiceClassIDList http://bit.ly/lPvbOY
英語なんで読み飛ばしになりますが、0x1101でSPPデバイスの指定だよ、とかBluetooth/rs232はデフォルト115200bpsで9600pbsにセットして使うもんだよ、とか書かれています。
==============以上

以上、もう既に調べられたことかもしれませんが…。
ご検討の一助となれば幸いです。

2011年5月29日0:56 Yoshinari Ueyama <uey...@gmail.com>:

> --
> このメールは Google グループのグループ「Android-SDK-Japan」の登録者に送られています。
> このグループに投稿するには、android-...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-sdk-ja...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-sdk-japan?hl=ja
> からこのグループにアクセスしてください。
>

Yoshinari Ueyama

unread,
May 29, 2011, 10:11:30 PM5/29/11
to android-...@googlegroups.com
吉田様、ご返答ありがとうございます。

「通信速度を変更できるメソッド」を探した方が他にも存在し、メソッドを見つけられなかったことがわかっただけでも収穫です。これから本格的に他の方法を検討いたします。(接続したいコードリーダーは、19200bps固定です。 orz)
 
以下のブログをまとめている者です。
BluetoothChatでシリアル接続(SPP)を行う | dietposter's blog http://bit.ly/jQbEVQ

メソッドなどAPI経由でボーレートを変える場所はありません(みつかりませんでした)。
(ちなみに細かいことを言うとボーではなくてbpsですが、bpsなど通信速度を変える場所がありません)

結局、相手側を11520bpsか9600bpsに設定すれば、Android側はそれに合わせてうまく通信してくれる、ということが経験的にわかりました。(調べてみたこと(1)参照)
ですんで、ネイティブな部分(JNIになるんでしょうか)で
・自動的に通信速度を変更している部分をみつける
・自分で明示的に通信の設定を変更する
…などとして踏み込んでいくことになるんでしょうか。


以下で紹介されているUUID値に関するページも今後の勉強のため参考にさせていただきます。
 
あと、UUID値の指定で通信速度などの設定を変更することができるのでは?と思い調べてみましたが、
UUID値="00001101-0000-1000-8000-00805F9B34FB"は、SPPというプロファイルだよと伝えているに過ぎないようです。(調べてみたこと(2)参照)

SPPでAndroid側から通信速度を指定できないか?というのは、私自身課題としていた点です。
3ヶ月ほど前まで取り組んでいて、Bluetooth通信が結果つながったのでそのままにしていた疑問点です。
植山さんの投稿を見て、自分自身の疑問もあり、わかる範囲で調べていました。
以下に調べてみたことを2点述べておきます。

どなたか解決策もしくはBluetoothプロファイルの根本的な動作要点をご存知の方がいましたらお教えいただきたい所存ですm(_ _)m

##############以下、調べてみたこと(1)

(以下略)

以上です。ありがとうございました。

Yasuhiro ISHII

unread,
May 30, 2011, 8:06:38 AM5/30/11
to android-...@googlegroups.com
植山様

神戸支部の石井と申します。
お世話になっております。

さて、Bluetooth SPPで接続されるQRコードリーダーは19200bps固定ということ
ですが、ここで使用されているQRコードリーダーはBTのモジュールが内蔵
されているものになりますでしょうか。

もしSPPのモジュールが単体のBluetooth-シリアル変換器の形であれば、
BT経由以外の方法で(シリアル側からの設定で)
シリアル通信速度を設定できるということはないでしょうか。

私はいくつかBT SPPモジュールを個人的に使用していたのですが、
モジュールにはシリアルから設定するコマンドセット(ATコマンドの形式)があ
り、それで通信速度等も設定できるようになっていました。
ATコマンドで通信速度を設定しモジュール内に記憶させることで、次回電源投入
時から設定されたレート(ここでは19200bps)で通信できるのではないかと
思った次第です。

ご参考に、とあるBTモジュールでの通信速度設定のコマンドについて説明ページ
のURLを貼り付けさせていただきます。
http://szparts.com/?mode=f10

よろしくお願いいたします。

2011年5月30日11:11 Yoshinari Ueyama <uey...@gmail.com>:

> --
> このメールは Google グループのグループ「Android-SDK-Japan」の登録者に送られています。
> このグループに投稿するには、android-...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-sdk-ja...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-sdk-japan?hl=ja
> からこのグループにアクセスしてください。
>

--
--
Yasuhiro ISHII
ishii.y...@gmail.com

Yoshinari Ueyama

unread,
May 31, 2011, 1:05:33 AM5/31/11
to android-...@googlegroups.com
石井様、お世話になっております。植山です。

購入したバーコードリーダー(BW-130BT)はBTのモジュールは内蔵されている
者です。また、取扱説明書を確認いたしましたが、ご指摘いただいたような、シリ
アルから設定するコマンドセットに関する説明は見当たりませんでした。

今回は適用できませんでしたが、貴重なご意見・ご指摘ありがとうございました。

さて、Bluetooth SPPで接続されるQRコードリーダーは19200bps固定ということ
ですが、ここで使用されているQRコードリーダーはBTのモジュールが内蔵
されているものになりますでしょうか。

もしSPPのモジュールが単体のBluetooth-シリアル変換器の形であれば、
BT経由以外の方法で(シリアル側からの設定で)
シリアル通信速度を設定できるということはないでしょうか。

私はいくつかBT SPPモジュールを個人的に使用していたのですが、
モジュールにはシリアルから設定するコマンドセット(ATコマンドの形式)があ
り、それで通信速度等も設定できるようになっていました。
ATコマンドで通信速度を設定しモジュール内に記憶させることで、次回電源投入
時から設定されたレート(ここでは19200bps)で通信できるのではないかと
思った次第です。


以上です。
Reply all
Reply to author
Forward
0 new messages