2012-05-02 43 views
2

我想讀取通過藍牙心率監測器傳輸的數據,但我真的不知道如何讀取心率監測器返回的字節。分析從心率監測器返回的數據

可能每個供應商都有自己的將數據換成字節的方式。但是,如何將這些字節轉換爲可讀格式,以便我可以分析其中的變化?
像ASCII值或某些十六進制值。

我嘗試了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),兩個前進字節可能是時間。您需要更多的數據和測試才能確定。 – Nate

+0

@Nate,沒有這些位並不代表心臟跳動時,我嘗試了許多組合即使減去,加等,但仍然沒有找到一個方法來對其進行解碼 – Hunt

回答

0

除非你能找到一個心臟監測儀傳輸規格一些文檔,你將需要的數據進行分析和解讀的格式。一種方法是從心率監測器發送的數據中創建受控的變化(例如,休息的人和慢跑者之間的交換),然後查找數據中的差異和模式。

至少,我希望數據由時間和心率值組成,但大多數情況下也會包含其他字段,例如標頭,數據包標識符和長度以及校驗和值。

+0

是的,但我問怎麼dechipher或disect的數據,當我打印字節我得到一些不可讀的值 – Hunt

+0

如何解碼?你看看你認爲的值,你猜,你調整,你試試,你測試。沖洗並重復直至滿意。解碼未知數據格式時沒有捷徑。艱苦的勞動就是這樣。 – bos

+0

你所擁有的只是字節,所以把它想象成試圖破解密碼。正如@ bos所說,你只需要嘗試並繼續嘗試。重新閱讀我的答案,並按照建議。 – Nate

2

希望,你的心臟監測儀如下這裏定義的數據規格:

Heart Rate Measurement at Bluetooth.org

至於我可以告訴大家,這裏是如何在該文件中適用的信息:

  1. 取您的第一個十六進制字節爲55,並將其轉換爲二進制:01010101。
  2. 由於藍牙數據是小端,因此將該序列的右端看作位0,將左端看作位7.
  3. 現在您可以查看Bluetooth消息的Flags字段的文檔。 flags字段的位0告訴您心率數據是8位還是16位。在你的情況下,位0是1,所以你有16位數據。
  4. 看看你的第一個樣本中接下來的兩個十六進制字節:04 00.
  5. 將其轉換爲十進制。現在這部分我不確定。如果我將04 00轉換成十進制,我得到1024,所以我一定是做錯了。也許巧合的是,如果我將這些數字進行反轉並將00 40轉換爲十進制數,那麼我得到64,這對於坐在他們的計算機上的某人(我的計算機現在是62)可能是一個心率值。也許有人可以評論如何解釋這部分。

在我的情況,具有嗬藍HR,數據是回來像這樣:

轉換14爲二進制(00010100),並在第0位尋找( 0)告訴我心率是8位的,所以我只需要第二個十六進制字節(46)。把它轉換成十進制給我70.

不幸的是,我不知道如何解釋你的第二個樣本。第一個十六進制字節14表示一個8位值,但這會使心率值B0或176 - 對坐在他們電腦上的某個人來說不是一個可能的值。我也不希望單個設備在傳輸8位和16位值之間切換,但我想這是可能的。

This SO question包括代碼做這些轉換,它的工作對我來說。我只是想在實現它之前嘗試理解文檔。