マイクロテクニカ製品サポートFAQ
[一覧] [1つ前に戻る] [マニュアル及び各種ダウンロードページへ]
トランスペアレントモード移行時にデータ転送を開始するタイミングについて
RBT-001ではトランスペアレントモードが実行されていない時は、コマンドモードでRBT-001に対する各種設定コマンド等を受け付ける状態となっています。

パソコンと接続をする場合には、ペアリンク確立後仮想COMポートを開いた後に、トランスペアレントモードに移行します。
RBT-001を2台接続している場合には、"SPP_TRANSPTRENT_MODE"コマンドを実行した後からトランスペアレントモードに以降します。

送受信したいUARTのデータは、トランスペアレントモードに正しく移行した後から始めるのが原則としては正しい使い方となっております。
トランスペアレントモードが実行されるとローカルデバイスでは"SPP_LINK_ESTABLISHED"が返されます。通常は、RBT-001からこの戻り値が返されて、正しくトランスペアレントモードの通信路が確保されてトランスペアレントモードにRBT-001が状態移行してからデータ通信を開始するよう設計をしてください。

Bluetoothはその規格上、有線とは異なり通信相手が物理的に保証されない関係にあり(通信距離が遠く通信ができない場合など)、トランスペアレントモードが開始するまでは、通信路の確保は限定的です。また、パソコン側の仮想COMポートにも様々な制限があり、物理的なCOMポートを開いているのではなく、あくまでもCOMポートを仮想的にソフトウエア上でエミュレーションしたポートですので、Windows側や仮想COMポートドライバー(通常はBluetoothのSPPスタックに含まれます)の性能や特性により、期待される性能が一定ではありません。

仮想COMポートを閉じていたとしても、そのクローズしたことが直ちにRBT-001には伝送されない場合もありますし(タイムラグ)、逆に仮想COMポートをオープンしても、RBT-001側でそのことを検出しトランスペアレントモードに移行するまでにはある程度の時間がかかります。これは有線で接続されたCOMポートを開いたり閉じたりするということとは違い、ソフトウエアが下位層のドライバーを介してエミュレーションしている結果であり、タイムラグは不可避的です。仮想COMポートをパソコン側で開くにも通常のCOMポートよりも時間がかかっていることは体感的にも分かります。

ゆえに、データの送受信をバースト転送的に行う場合には、仮想COMポートが完全に開かれ、その上でトランスペアレントモードがRBT-001で実行され、通信双方の機器で正しくバースト転送が行える状態が確立してから、通信を開始するよう機器を設計する必要があります。

通常仮想COMポートが完全にポートをオープンできたかどうかは、Windows側のターミナルソフトで把握できますし、RBT-001がパソコン側からの要求に応じてトランスペアレントモードに正しく移行できたかを知るには、RBT-001からUART機器に返るSPP_LINK_ESTABLISHEDコマンドを受信し、UART機器はこの信号の受信を完了したことを確認してからデータ通信を開始するよう設計してください。

※コマンドモードはあくまでRBT-001がコマンド設定のために設けられている状態であり、RBT-001が動作を停止しているわけではありません。よって、コマンドモード中にRBT-001にとって不明なデータを渡すことはRBT-001には予期しないデータの到来となるわけで、場合によっては予期しない動作をすることも否定できません。
本来の使い方は、コマンドモードの際にはその名の通り正しくRBT-001用のコマンドを送ることが要求され、コマンド設定以外の信号はUART側からRBT-001に渡さないのが原則です。
オリジナル - FAQみたいです - 猫でいいです