2014-09-10 3 views
-1

Comment puis-je obtenir ce code Hex IRIR Hex à la conversion de code Raw 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 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

Dans un code IR Raw comme celui-ci

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); 
+2

Il vous ressemble déjà obtenu. Que demandez-vous exactement? Est-ce une question de programmation? Avez-vous du code que vous avez essayé? Quelle langue utilisez-vous? –

+0

Je suppose que cela fait référence à [com.lge.hardware.IRBlaster] (http://developer.lge.com/MOBILE_HELP/index.jsp?topic=%2Flge.mobilesdk.LGQRemote.api%2Fhtml%2FDeveloping% 2FDeveloping% 2FDeveloping.htm), donc je suis allé de l'avant et j'ai tagué la question avec [tag: lg]. – femtoRgon

Répondre

2

Les quatre premiers chiffres, il ont une signification particulière:

  • 1 - 0000 indique que les données IR brutes (vous pouvez ignorer cette valeur)
  • 2 - fréquence
  • 3 - longueur de la première salve séquence de paires
  • 4 - longueur de la deuxième séquence de paires de salve

la fréquence sera partic particulièrement important. LG veut la fréquence en Hz, comme vous pouvez vous y attendre, mais votre code hexadécimal est en termes d'horloge interne Pronto. La conversion sera:

carrierfrequency = 1000000/(HexFreq * .241246) 

Pour le reste du code, après ce préambule à quatre chiffres, LG veut que ceux en ms, où le code hexadécimal les a en termes de fréquence. Vous devrez convertir chacun d'eux:

pulselength = 1000000*(HexPulse/carrierfrequency) 

Je ne sais pas si vous voulez simplement envoyer le tout, ou seulement la première ou la deuxième séquence de rafale. La seconde est une séquence répétée, utilisée pour de longues pressions sur les boutons et autres. Mais gardez à l'esprit, ceux-ci sont en termes de paires, pas de numéros individuels. 00a9 00a8 est une paire rafale (à l'heure, hors temps). Dans ce cas:

  • première séquence: 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
  • seconde séquence: 00a9 00a8 0015 0015 0015 0e6e

Sidenote: La paire distincte à l'avant, et très grande valeur à la fin sont très typiques. Facilite le globe oculaire sans avoir à compter.

Ainsi, pour définir les étapes:

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) 
Questions connexes