0

我如何获得这个 Hex IR 代码

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 0015 003f 0015e 0015 0015e

进入这样的原始 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);
4

1 回答 1

7

前四个数字有特殊含义:

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

频率将特别重要。正如您所料,LG 想要以 Hz 为单位的频率,但您的十六进制代码是根据 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)
于 2014-12-05T19:42:11.373 回答