2011年3月8日火曜日

ELECOM TK-FBP017のSPP転送フォーマット

Bluetooth HIDとSPP
ELECOM TK-FBP017のBluetoothインターフェースは、右上のスイッチを設定することによって、2種類のプロファイルを選べます。プロファイルとはBluetoothの通信方式のことです。

ひとつはHIDです。キーボードとして接続するための規約なので、このモードで接続できれば、特別なことをしなくても、OSで通常のキーボードとして処理されます。アプリケーションにはキーボードイベントが通知されるので、専用のキーボードとまったく同じに見えます。残念ながらAndroid携帯でHIDを備えてる機種はほとんどありません。

もうひとつはSPPモードです。アプリケーションではBluetooth経由のシリアルポートに見えるので、OKeyPieのようなIMEを使って、シリアルから読みだした値をアプリケーションに入力値として送ってやる必要があります。Android2.0以降では、たいていこのモードを備えているので、こちらの方式ならほとんどの機種に接続できるはずです。(Nexus Sのような例外もあるので注意)

ELECOM TK-FBP017 のSPP転送フォーマット
TK-FBP017は、キーボードを押した瞬間と、離した瞬間に、キーボードのデータを送ってきます。転送フォーマットは次のとおりです。
ff (押した、あるいは離したキーのコードのバイト列) 00
先頭に16進数のffが1バイト送信され、キーコードがいくつかあって、最後に00で終わります。キーコードの配置は下図のとおりですが、これは押したときの値で、離したときのキーコードは図のコードに80をORした値となります。

たとえば "A" のキーを押した場合は
ff 1c 00

離したときは
ff 9c 00

"A" と "B" が押されたときは
ff 1c 32 00
というふうに転送されてきます。

TK-FBP017 キーコード (クリックで拡大)
同時打鍵も検出できますが、まったくデータが来ない組み合わせもあるので注意が必要です。

0 件のコメント:

コメントを投稿