2012-05-02 17 views
2

心拍モニタによって転送されたデータをBluetoothで読み込もうとしていますが、心拍数モニタから返されたバイトを読み取る方法がわかりません。心拍数モニタからのデータ復帰の分析

各ベンダーがデータをバイトにラップする独自の方法がある可能性があります。しかし、これらのバイトを読み込み可能な形式に変換するにはどうしたらよいですか?
ASCII値または16進数の値と似ています。

私はMyTrackアプリケーションのコードを試しましたが、それは私の仕事ではありませんでした。

MyTrack Parse Heart Rate Data

私はこれらのデータを取得しています今のところ、Androidの中でバイトを読み込むしようとしていますが、何を表すフィールドか分かりません。

55 04 00 38 00 15 af  

14 b0 00 38 00 13 b1  

55 04 00 38 00 13 b1 

55 04 00 38 00 12 b2 
+0

データを追加していただきありがとうございますが、詳細が必要です。既知の心拍数でデータを記録する。上記のデータの場合、心拍数が約177の場合、最後のバイトは心拍数(af、b1、b2)を表し、2つの進行バイトは時間であると推測します。確かに知るには、より多くのデータとテストが必要になります。 – Nate

+0

@ネイト、これらのビットはハートビートを表現していないので、私は減算、追加などしても多くの組み合わせを試しましたが、それでも解読する方法は見つけられませんでした – Hunt

答えて

0

心拍数モニタの転送仕様に関するドキュメントがない場合は、データを分析してフォーマットを解読する必要があります。これを行う1つの方法は、心拍モニタから送信されたデータ(休息中の人とジョギングしている人との間のスワッピングなど)に制御されたバリエーションを作成してから、そのデータの違いとパターンを探します。

少なくとも、データには時間と心拍数の値が含まれていますが、ヘッダー、パケット識別子と長さ、チェックサム値など他のフィールドも確実に存在します。

+0

ええ、私は印刷時にデータを消したり、バイト私はいくつかの判読不能な値を得ています – Hunt

+0

解読する方法?あなたは値を見て、あなたが思う、あなたが推測する、微調整する、試してみてください。すすぎ、満足するまで繰り返す。未知のデータフォーマットをデコードするときには、ショートカットはありません。厳しい労働が道です。 – bos

+0

あなたが持っているのはバイトだけなので、秘密のコードを破るように考えてください。 @bosが言うように、あなたは試し続けなければならないでしょう。私の答えを読んで、その提案に従ってください。 – Nate

2

うまくいけば、あなたの心拍数モニタは、ここで定義されたデータの仕様に従います。

Heart Rate Measurement at Bluetooth.org

私の知る限り、ここではその文書に情報を適用する方法は次のとおりです。

  1. テイク
  2. Bluetoothデータはリトルエンディアンなので、そのシーケンスの右端をビット0、左端をビット7と見なします。
  3. これで、BluetoothメッセージのFlagsフィールドのドキュメントを見ることができます。 flagsフィールドのビット0は、心拍数データが​​8ビットか16ビットかを示します。あなたのケースでは、ビット0は1なので、あなたは16ビットのデータを持っています。
  4. 最初のサンプルの次の2つの16進バイトを見てください。04 00
  5. 10進数に変換してください。今私はこの部分についてはわかりません。 04 00を10進数に変換すると1024が得られるので、何か間違っている必要があります。おそらく偶然にも、これらの数字を逆にして00 40を10進数に変換すると、コンピュータに座っている人(私の場合は現在62)の心拍数の64になります。たぶん誰かがこの部分をどのように解釈するかについてコメントすることができます。私の場合は

、ワフーブルーHRと、データは次のように戻って来ている:(バイナリ(00010100)への14の変換

とビット0を見て0)は心拍数が8ビットであることを示しているので、2番目の16進バイト(46)が必要です。小数点に変換すると70になります。

残念ながら、私はあなたの2番目のサンプルをどのように解釈するのか分かりません。最初の16進バイトの14は8ビットの値を示しますが、これは心拍数B0または176を作成します。これはコンピュータに座っている人のための価値ではありません。 1つのデバイスで8ビットと16ビットの値を切り替えることも期待していませんが、可能です。

This SO questionには、これらの変換を行うためのコードが含まれていて、それは私のために働いています。私はそれを実装する前にドキュメンテーションを試して理解したかっただけです。

関連する問題