8

何年もの間、何かが私を悩ませています。私は多くのBluetoothと最近のwifiストリーム(spp)を扱っています。これらのストリームは常に特定のデバイスに接続し、通信は単純なバイト コマンドを介して行われます。

一部のデバイス (マイクロコントローラー) は自分でプログラムしますが、ワイヤー上の信号が期待どおりかどうかを常に確認し、送信して crcs を確認する必要があります。

「readByte」を使用してストリームにアクセスし、バイト単位で読み取るため、スマートフォンでも同じことをしたいと思っています。または「順不同」

基盤となるハードウェアがどの程度機能するかはわかりません。すべてのメッセージを crc でチェックし、メッセージが破損している場合はメッセージを再要求しますか? それとも、やみくもにすべてのバイトを「readByte」メソッドに渡しますか?

デバイスがメッセージaを送信してからbを送信する場合、受信者がaの前にbを受信し、aの前にコードbを渡すか、ジッパーのようにバイトを混同してa [0]、b [0]、aを与える可能性はありますか[1]など。

これらのストリームをどれだけ信頼する必要がありますか? いくつかの明確化をいただければ幸いです

4

3 に答える 3

7

ぐっすり眠れると思います。WiFi と Bluetooth はパケット スイッチ ネットワークに基づいており、各パケットには crc が付属しており、物理層には輻輳とリンクの品質管理が組み込まれているため、非常にまれなファームウェアのバグを除けば、実際には有線シリアル接続よりも信頼性が高くなります。

つまり、使用しているレベルよりも低いレベルでエラー修正が行われます。

パケットの到着順序に関する質問への回答: ポイント ツー ポイント プロトコルはこの問題の影響を受けません。パケットの並べ替えは、異なるルートを移動するときに発生するため、他のルートがない場合は問題ありません。

これらのプロトコルでバイト指向のストリームを使用している場合、同じバイトを同じ順序で取得します。これは、この目標を念頭に置いて設計されているためです。一方、パケット アクセスはそうではありませんが、Android はそれを使用する手段を提供しません。

于 2015-05-10T22:40:14.987 に答える
1

について学んだことがあればComputer Network OSI Model、私が話していることをよりよく理解できると思います。

まず、 とTCP/IPは何の共通点もありませんBluetoothTCPトランスポートレベルのプロトコルですBluetoothが、下位レベルのプロトコルになります。したがって、イーサネット上で TCP と UDP を使用するのと同じように、Bluetooth 上で TCP または UDP を使用できます。

第二に、ブルートゥースデバイスを介してデータが転送される場合、TCPプロトコルが使用されます。データが正確に転送されるようにするためのTCP使用。congestion recovery algorithmsの最新の実装にTCPは、フロー制御のための 4 つの絡み合ったアルゴリズム (スロー スタート輻輳回避高速再送信高速回復) が含まれています。ですから、これについてもっと知りたい場合は、インターネットで検索してください。プログラムよりもむしろ理論的であるためです。

于 2015-05-11T09:53:30.760 に答える
0

データの破損については、良い考えがありません。しかし、「ジッパーのようにバイトを混ぜ合わせて、a[0]、b[0]、a[1]」ということはありません。

外部Bluetooth GPSからnmeaメッセージを解析するアプリを作成しました。私は自分のアプリがどのように安定して動作するかを何もチェックしません。

于 2015-04-15T12:03:11.447 に答える