Schritt 6: Wie funktioniert es
Übersicht
Die Grundidee ist, dass es eine 1: 1-Zuordnung zwischen einem Knopfdruck auf Ihrer Fernbedienung und eine Tastenkombination an Ihren PC gesendet. ÄRGERN! Ihre Fernbedienung lernen lehrt einfach einen Code, der eine bestimmte Tastenkombination darstellt. Sobald Sie diesen Code auf eine der Tasten der Fernbedienung programmiert haben, wird diese Taste den Code wieder zu IRK übertragen! Natürlich wird die erkennen dann schicken Sie es an den PC als USB-Tastendruck.
Da ärgern! generiert die IR-Code können sie nicht möglicherweise nicht erkennen - also ärgern! braucht nicht, eine Unmenge verschiedener IR-Fernbedienung Modelle zu unterstützen!
USB-Tastenanschläge
USB-Tastenanschläge sind an den PC gesendet mit Codes, die in der Spezifikation USB-Human Interface Gerät (HID) Nutzung Tabellen definiert. Spezifikation definiert, zum Beispiel, dass Code 0 x 04 der Buchstabe bedeutet "a". Für ein Tastaturgerät, wie IRK!, zusätzliche "Modifizierer" Codes können an den PC gesendet werden, um anzugeben, ob die GUI (aka Windows-Taste, Apple-Taste, Super-Taste), Steuerung, Alt und Shift-Tasten auch "gedrückt werden". Zum Beispiel, um einen Großbuchstaben "a" IRK senden! sendet 0x02 (d.h., die Umschalttaste gedrückt wird) und 0 x 04 (d.h., "a" gedrückt wird). Der Computer interpretiert diese Sequenz als Bedeutung Großbuchstaben "A". Unmittelbar nach dem Absenden dieser Sequenz, ärgern! senden eine "null" Abfolge von 0 x 00 und 0 x 00, um anzuzeigen, dass keine Schlüssel oder Schlüssel Modifikatoren sind derzeit gedrückt wird. Dies ist durch das USB-Protokoll sonst erforderlich, der PC wird denken Sie sind halten Sie die Tasten Shift und "A" bis es den nächsten USB-Schlüssel-Code erhält.
So können Sie sehen, dass IRK! nur muss in der Lage, "einer Fernbedienung lernen Lehren" eine Folge von 0x02 gefolgt von 0 x 04, der Buchstabe "A" vertreten sein. Wenn der Benutzer die Taste auf der Fernbedienung, IRK drückt! mit der Infrarot-Empfänger erhalten und senden Sie die 0x02 0x04-Sequenz auf dem PC, die als der Benutzer, die Taste Umschalt + A auf eine USB-Tastatur interpretiert werden.
Infrarot-Befehlsformat
ÄRGERN! erkennt nur Infrarot-Signale, die an einem bestimmten IRK gerichtet sind! Einheit. Um dies zu erreichen, ist eine Adresse Byte auch auf dem Infrarot-Weg gesendet/empfangen. Jeder Infrarot-Befehl ist eine Folge von sechs 6 Bytes wie folgt:
AA, AA', UX, UX', YY, YY "
Wo:
AA ist die Adresse Byte von 0 x 00 bis 0xFF
AA' ist das invertierte Adresse Byte (die Einsen umgewandelt zu Nullen und umgekehrt)
UX ist die Verwendungsseite (U = 0 x 0, 0xF) und für die Verwendung der Tastatur, Modifikator Nybble X (Steuerung, Alt, Shift)
UX' ist das invertierte UX-Byte
YY ist das Befehlsbyte (bei Verwendung der Tastatur, der USB-Schlüssel-Code)
YY "ist die umgekehrte Befehlsbyte
Der Grund für die Übertragung einer invertierten Kopie jedes Byte ist die Wahrscheinlichkeit zu verringern, die Störungen einen ungültigen Befehl empfangen werden verursacht hat. Zum Beispiel, Sie würde nicht wollen, Ihre Anfrage zu dieser Aufnahme "spielen" wie "Diese Aufnahme löschen" interpretiert werden, nur weil eine Fliege in diesem Augenblick den Infrarot-Signalweg unterbrochen!
Um jeden Befehl zu überprüfen, wie es empfangen, IRK! prüft, ob AA (invertiert) AA entspricht ", und die UX (invertiert) entspricht UX", und dass YY (invertiert) entspricht YY ", und dass entweder AA dieser IRK entspricht!" s-Geräteadresse oder AA entspricht 0xFF (die broadcast-Adresse). Wenn all dies wahr, dann IRK! können ziemlich sicher sein, dass es einen gültigen Befehl und darauf zu reagieren.
Infrarot-Übertragungstechnik
ÄRGERN! verwendet Pulsweitenmodulation (PWM) zum Codieren der Serie von 1 und 0, die jeden Befehl darstellen. Sie könnten umprogrammieren des Mikrocontrollers eine andere Technik wie Manchester-Codierung verwenden aber PWM funktioniert prima. Z.B., den USB-Stick "1" Taste, wenn Sie mit PWM codiert sieht aus wie das Bild oben.
Wenn das Signal "niedrig" ist, wird eine IR-Burst von Impulsen bei 38 kHz übertragen. Umgekehrt, wenn das Signal "hoch" ist stellt sie eine Zeit der Stille.
Es ist ein führender platzen für 1000 μs dann für 600 µs Stille (in Versionen von IRK! vor 2.04, war es 9400 μs und 4500 μs beziehungsweise). Dieser führenden Ausbruch wurde von älteren Infrarotempfänger Module zu "trainieren" benötigt ihre automatische Gain Control (AGC) Schaltungen damit sie bestimmen konnte, was einen normalen Signalpegel war. Heutige IR-Empfänger nicht in der Regel diese Anforderung haben, aber Ihre Fernbedienung lernen kann alt sein also ärgern! noch unterstützt.
Danach eine "1" ist als eine kurze Burst, gefolgt von einem langen Schweigen codiert, und eine '0' ist als eine kurze Burst, gefolgt von einer kurzen Pause codiert.
Broadcast-Adresse
Eine Adresse Byte 0xFF wird von allen IRK anerkannt! Geräte, die Sie erstellt haben, können. So ist es möglich, dass eine einzige Fernbedienung zum Senden eines Befehls an alle ärgern! Geräte gleichzeitig.
System-Steuerbefehle
ÄRGERN! auch unterstützt die USB-definiert "Systemsteuerung" Befehle, die namens "Schlafen", "Wake" und "Power Off". Manche USB-Tastaturen haben Schlüssel für diese Funktionen, aber sie sind nicht per se Tastaturfunktionen. Alle entsprechend programmierten USB-Gerät, z. B. IRK!, USB-System Steuerbefehle an Ihren PC es ins "Schlaf"-Modus, zum Beispiel zu Anfrage senden können. Der folgende Code ist eine Zusammenfassung der Ergebnisse der System Steuerbefehle auf meinem PC (Ihre Ergebnisse können variieren):
Power Off = CPU von der Festplatte aus, Monitor ausschalten, USB aus
Schlafen = CPU auf der Festplatte ab, Monitor ausschalten, USB auf
Erwachen bedeutet = funktioniert nicht!
Power-Schalter gedrückt = CPU von der Festplatte aus, Monitor ausschalten, USB auf
Consumer-Gerätebefehle
ÄRGERN! unterstützt die USB-definiert "Consumer-Gerät" Befehle wie "Mute", "Vol +", "Vol-", "Rechner", "Browser Home", können Sie diese Befehle steuern Sie Ihren Media-Player (Wiedergabe/Pause, stop, überspringen zurück, vorwärts springen etc.) oder starten Sie Anwendungen (Taschenrechner, Browser, Media Player usw.).
Laden Sie für eine vollständige Liste der Consumer-Gerät Befehle, die Sie verwenden können einfach das USB-Human Interface Gerät Verwendung Tabellen -Dokument. Das klingt, aber die Spezifikation kompliziert ist nicht so schwer zu lesen. Speziell, Blick auf Tabelle 17 "Verbraucher Verwendungsseite". Es spielt keine Rolle, dass IRK! die Namen dieser Befehle zeigt wie Sie blättern, keine IRK können Sie immer noch Fragen! um sie auf Ihrem USB senden sollte Host (z.B. Linux, Windows, MythTV etc.)- und der USB-Host die entsprechende Funktion ausführen.
Ein-/Ausschalter und Reset-Schalter Befehle (experimentell)
Kluge Leser werden bemerkt haben, gibt es ein Problem mit dem Versuch, IRK bekommen! "Power On" Ihr PC - weil nicht alle PCs mit USB-Geräten Stromversorgung aller Zeiten, die Verbindung mit dem Stromnetz wird ausgeschaltet und IRK! abhängig von Leistung zur Verfügung gestellt von der USB-Schnittstelle des Systems angeschlossen ist.
Eine Möglichkeit dies zu umgehen ist das IRK macht! Schaltung von "Standby" Spannung (Vsb) von der PC-Leistung liefern. VSB auf älteren Computern Lieferungen + 5V bei rund 10 mA, obwohl Sie Ihr PC ausgeschaltet haben. Neueren ATX-Netzteile liefern Vsb am 2A. Dies bedeutet, dass, wenn angetrieben von Vsb, ärgern! kann bleiben Sie wach für IR Befehle hören, solange der PC an der Steckdose angeschlossen ist. Das IRK! Schaltung sorgt für Power und Reset Tasten auf Ihrem PC, aber du musst irgendwie erschließen die Vsb-Ausgabe von PC Netzteil, get it to work. Ich weiß keine Mainboards, die einen leicht zugänglichen Header Pin für Vsb. Dies bedeutet, dass wenn Sie diese Funktion wünschen, dann musst du möglicherweise physisch der Vsb Draht von der PC-Stromversorgung unterbrochen. Der Vsb-Draht sollte die violette Leitung sein.
Beachten Sie, dass Stromversorgung IRK! von Vsb ist im Moment nicht getestet worden, sondern sollte im Prinzip funktionieren. Die Funktionen ein-/Ausschalter und Reset-Schalter funktionieren solange IRK! ist aber über USB versorgt.