2012-08-08 67 views
3

我有很長的時間解碼IR代碼與最佳的Ken Shirriff Arduino庫。我修改了一下代碼,這樣我就可以轉儲三星空調(MH026FB)56位信號。三星IR代碼校驗和

我的工作成果位於Google Docs文檔Samsung MH026FB AirCon IR Codes Dump

這是一個包含所有傾倒值和結果解釋的spreasheet。 AFAIK,根據指令,空調機組發送兩個或三個56  位數據的「脈衝串」。我能夠正確解碼位,找出空調溫度,風扇,功能和其他選項的位置。我的問題是校驗和。在所有這些7字節碼,所述第二個從後者5個 字節某種方式來計算,例如:

BF B2 0F FF FF FF F0 (lead-in code) 
7F B8 8A 71 F6 4F F0 (auto mode - 25 degrees) 
7F B2 80 71 7A 4F F0 (auto mode - 26 degrees) 
7F B4 80 71 FA 7D F0 (heat mode - 26 degrees - fan auto) 

由於我重新創建在運行時的IR代碼,我需要能夠爲這些代碼計算校驗和

我嘗試了很多標準的校驗和算法,沒有一個給出有意義的結果。校驗和似乎與其餘代碼中的零數(從3到7的字節數)有關,但我真的無法確定它的方式。

有沒有解決這個問題的方法?

+0

我知道這個問題有點老,但是由於56位三星解碼器不在Sherriff的庫中,如果OP仍然有他的工作,他可以​​請將它上傳到某處(github),或者更好地創建一個拉請求進入Shirriff的存儲庫? – 2017-04-14 21:20:38

+0

該代碼早已嵌入Souliss開源框架中。你可能會看那裏 – Shine 2017-04-27 10:05:02

回答

3

Ken Shirriff對此進行了整理。算法是如下:

  1. 計數中的所有字節的1個比特數除#2(校驗和)
  2. 計算計數模15。如果值爲0,則使用15。
  3. 取值從2,翻轉的4位,和反轉的4位。
  4. 校驗和是Bn其中n是上一步的值。

因爲他的聰明和敏銳而向他致意。

+2

聖,這是一個真棒大腦! – chwi 2013-07-05 09:02:49

0

bytes/packets0/1位順序正確解釋(從似乎都被顛倒的算法),該算法將只是sum of 0 bits modulo 15