IR十六进制到原始IR代码转换

时间:2014-09-10 17:16:44

标签: infrared lg

如何获得此Hex IR代码

  <00> 0000 006d 0022 0003 00a9 00a8 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 003f 0015 003f 0015 003f 0015 003f 0015 003f 0015 003f 0015 0702 00a9 00a8 0015 0015 0015 0e6e

进入像这样的原始IR代码

int[] irdata = {4600,4350,700,1550,650,1550,650,1600,650,450,650,450,650,450,650,450,700,400,700,1550,650,1550,650,1600,650,450,650,450,650,450,700,450,650,450,650,450,650,1550,700,450,650,450,650,450,650,450,650,450,700,400,650,1600,650,450,650,1550,650,1600,650,1550,650,1550,700,1550,650,1550,650};
    mIR.sendIRPattern(37470, irdata);

1 个答案:

答案 0 :(得分:3)

前四个数字有特殊含义:

  • 1 - 0000表示原始IR数据(您可以忽略此值)
  • 2 - 频率
  • 3 - 第一个突发对序列的长度
  • 4 - 第二个突发对序列的长度

频率特别重要。 LG希望频率以Hz为单位,正如您所料,但您的Hex代码是根据Pronto内部时钟。转换将是:

carrierfrequency = 1000000/(HexFreq * .241246)

对于其余的代码,在那个四位前导码之后,LG想要μs中的那些,其中十六进制代码在频率方面具有它们。你需要转换每一个:

pulselength = 1000000*(HexPulse/carrierfrequency)

我不确定你是想发送整个内容,还是只发送第一个或第二个突发序列。第二个是重复序列,用于长按按钮等。但请记住,这些是,而不是单个数字。 00a9 00a8是一对突发(准时,关闭时间)。在这种情况下:

  • 第一个序列:00a9 00a8 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 003f 0015 003f 0015 003f 0015 003f 0015 003f 0015 003f 0015 0702
  • 第二个序列:00a9 00a8 0015 0015 0015 0e6e

旁注:前面的独特配对,最后的非常大的值非常典型。无需数数就可以轻松实现眼球。

所以,列出步骤:

array numbers = Split hexcode on space
(ignore numbers[0])
carrierFrequency = 1000000/(numbers[1] * .241246)
codeLength = numbers[2]
repeatCodeLength = numbers[3]
for (number in numbers[4 to end]) {
    convertedToMicrosec = 1000000*(number/carrierFrequency)
    fullSequenceConverted.add(convertedToMicrosec)
}
sequence1EndPoint = 2 * codeLength
sequence2EndPoint = sequence1EndPoint + 2 * repeatCodeLength
firstSequence = fullSequenceConverted from index 0 to sequence1EndPoint
secondSequence = fullSequenceConverted from sequence1EndPoint to sequence2EndPoint

mIR.sendIRPattern(carrierFrequency, firstSequence)