2012-08-08 87 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