2012-08-28 32 views
0

我沒有時間嘗試將下表轉換爲c#中的某些值。溫度轉換 - 2的補碼 - 13位

我有一個2字節數組如

byte[] data = new byte[2]; 

data [ 0 ] = 0x00; 
data [ 1 ] = 0xc9; 

是否anyhone得下列圖表轉換爲C#方法的方法?

格式爲DS2438智能電池監控器IC - http://datasheets.maxim-ic.com/en/ds/DS2438.pdf

注:底部3位始終爲0,因此不應該是下式的部分和排除。

該值乘以0.03125以產生最終溫度。

因此,在點的情況下是0xc900這等於-1760或-1760 * 0.03125 = -55℃

enter image description here

任何幫助理解。

回答

4

看起來這只是(float)(sbyte)data[1] + (float)data[0]/256

它不是問題它是13位而不是16位;因爲達拉斯進行了位移,使得它有一個不錯的8.8定點表示。如果你的傳感器具有更多的分辨率,那麼將使用這些低位,但數學仍然是完全相同的。

+0

Nope - 這是不正確的,你的結果會產生0.78515625 \t的溫度,但它應該是-1760,然後再乘以0.03125 – Chris

+0

兩次錯誤;這會產生-55.0的結果,正確的答案是-55.0。我認爲你的錯誤順序是你的字節數。 – hobbs

+0

嘗試用其他方式編制索引,哪一個字節是MSB數據[0]或數據[1] –