diff options
-rw-r--r-- | irdecoderunit.pas | 101 |
1 files changed, 56 insertions, 45 deletions
diff --git a/irdecoderunit.pas b/irdecoderunit.pas index 1075857..edf981c 100644 --- a/irdecoderunit.pas +++ b/irdecoderunit.pas @@ -8,6 +8,14 @@ uses Classes, SysUtils, lesethreadunit, lowlevelunit; type + tBefehlsWort = ( + bwNull,bwEins,bwZwei,bwDrei,bwVier,bwFuenf,bwSechs,bwSieben,bwAcht,bwNeun,bwZwoelf, + bwAnAus,bwPunkt,bwPfeilInKasten, + bwNaechstes,bwVorheriges,bwZurueck,bwVor,bwPause,bwLos,bwStop, + bwProgrammPlus,bwProgrammMinus,bwStumm,bwLauter,bwLeiser, + bwKontrastMinus,bwKontrastPlus,bwHelligkeitMinus,bwHelligkeitPlus, + bwRot,bwGruen,bwGelb,bwBlau); + tIRDecoder = class private ttySLeser: tLeseProzess; @@ -27,48 +35,55 @@ type end; tBefehl = record - zeichen: longword; einzelKlick: boolean; toDo: string; end; implementation -const zeichenTabelle: array[0..33] of tBefehl = ( - (zeichen: $00000007; einzelKlick: true; toDo: '0'), // 0/10 - (zeichen: $00004006; einzelKlick: true; toDo: '1'), // 1 - (zeichen: $00002007; einzelKlick: true; toDo: '2'), // 2 - (zeichen: $00006006; einzelKlick: true; toDo: '3'), // 3 - (zeichen: $00001007; einzelKlick: true; toDo: '4'), // 4 - (zeichen: $00005006; einzelKlick: true; toDo: '5'), // 5 - (zeichen: $00003007; einzelKlick: true; toDo: '6'), // 6 - (zeichen: $00007006; einzelKlick: true; toDo: '7'), // 7 - (zeichen: $00000807; einzelKlick: true; toDo: '8'), // 8 - (zeichen: $00004806; einzelKlick: true; toDo: '9'), // 9 - (zeichen: $00000a07; einzelKlick: true; toDo: '2/12'), // 2-/12 - (zeichen: $00001807; einzelKlick: true; toDo: 'Power'), // Power - (zeichen: $00001a07; einzelKlick: true; toDo: 'Punkt'), // Punkt - (zeichen: $00007806; einzelKlick: true; toDo: 'PfeilInKasten'), // PfeilInKasten - (zeichen: $00002a07; einzelKlick: true; toDo: '|>'), // |> - (zeichen: $00003a07; einzelKlick: true; toDo: '<|'), // <| - (zeichen: $00002807; einzelKlick: true; toDo: '<<'), // << - (zeichen: $00006806; einzelKlick: true; toDo: '>>'), // >> - (zeichen: $00003807; einzelKlick: true; toDo: '||'), // || - (zeichen: $00006a06; einzelKlick: true; toDo: '>'), // > - (zeichen: $00004a06; einzelKlick: true; toDo: '[]'), // [] - (zeichen: $00004e06; einzelKlick: true; toDo: 'P+'), // P+ - (zeichen: $00000e07; einzelKlick: true; toDo: 'P-'), // P- - (zeichen: $00005806; einzelKlick: true; toDo: 'Stumm'), // Stumm - (zeichen: $00000407; einzelKlick: false; toDo: 'L+'), // L+ - (zeichen: $00004406; einzelKlick: false; toDo: 'L-'), // L- - (zeichen: $00005406; einzelKlick: false; toDo: 'K-'), // K- - (zeichen: $00001407; einzelKlick: false; toDo: 'K+'), // K+ - (zeichen: $00006406; einzelKlick: false; toDo: 'H-'), // H- - (zeichen: $00002407; einzelKlick: false; toDo: 'H+'), // H+ - (zeichen: $00004c06; einzelKlick: true; toDo: 'rot'), // rot - (zeichen: $00007406; einzelKlick: true; toDo: 'gruen'), // gruen - (zeichen: $00006c06; einzelKlick: true; toDo: 'gelb'), // gelb - (zeichen: $00001207; einzelKlick: true; toDo: 'blau') // blau +const zeichenTabelle: array[tBefehlsWort] of longword = ( + $0007,$4006,$2007,$6006,$1007,$5006,$3007,$7006,$0807,$4806,$0a07, + $1807,$1a07,$7806, + $2a07,$3a07,$2807,$6806,$3807,$6a06,$4a06, + $4e06,$0e07,$5806,$0407,$4406, + $5406,$1407,$6406,$2407, + $4c06,$7406,$6c06,$1207 + ); +const befehlsTabelle: array[tBefehlsWort] of tBefehl = ( + (einzelKlick: true; toDo: '0'), // 0/10 + (einzelKlick: true; toDo: '1'), // 1 + (einzelKlick: true; toDo: '2'), // 2 + (einzelKlick: true; toDo: '3'), // 3 + (einzelKlick: true; toDo: '4'), // 4 + (einzelKlick: true; toDo: '5'), // 5 + (einzelKlick: true; toDo: '6'), // 6 + (einzelKlick: true; toDo: '7'), // 7 + (einzelKlick: true; toDo: '8'), // 8 + (einzelKlick: true; toDo: '9'), // 9 + (einzelKlick: true; toDo: '2/12'), // 2-/12 + (einzelKlick: true; toDo: 'Power'), // Power + (einzelKlick: true; toDo: 'Punkt'), // Punkt + (einzelKlick: true; toDo: 'PfeilInKasten'), // PfeilInKasten + (einzelKlick: true; toDo: '|>'), // |> + (einzelKlick: true; toDo: '<|'), // <| + (einzelKlick: true; toDo: '<<'), // << + (einzelKlick: true; toDo: '>>'), // >> + (einzelKlick: true; toDo: '||'), // || + (einzelKlick: true; toDo: '>'), // > + (einzelKlick: true; toDo: '[]'), // [] + (einzelKlick: true; toDo: 'P+'), // P+ + (einzelKlick: true; toDo: 'P-'), // P- + (einzelKlick: true; toDo: 'Stumm'), // Stumm + (einzelKlick: false; toDo: 'L+'), // L+ + (einzelKlick: false; toDo: 'L-'), // L- + (einzelKlick: false; toDo: 'K-'), // K- + (einzelKlick: false; toDo: 'K+'), // K+ + (einzelKlick: false; toDo: 'H-'), // H- + (einzelKlick: false; toDo: 'H+'), // H+ + (einzelKlick: true; toDo: 'rot'), // rot + (einzelKlick: true; toDo: 'gruen'), // gruen + (einzelKlick: true; toDo: 'gelb'), // gelb + (einzelKlick: true; toDo: 'blau') // blau ); // tIRDecoder ****************************************************************** @@ -117,17 +132,17 @@ end; procedure tIRDecoder.befehlAusfuehren(lw: longword); var - i: longword; neu: boolean; + bw: tBefehlsWort; begin neu:=lw<>letzterBefehl; letzterBefehl:=lw; lw:=lw and not $08; - for i:=0 to length(zeichenTabelle)-1 do - if zeichenTabelle[i].zeichen=lw then begin - if neu or not zeichenTabelle[i].einzelKlick then - writeln('> '+zeichenTabelle[i].toDo); + for bw:=low(tBefehlsWort) to high(tBefehlsWort) do + if zeichenTabelle[bw]=lw then begin + if neu or not befehlsTabelle[bw].einzelKlick then + writeln('> '+befehlsTabelle[bw].toDo); exit; end; writeln('roh: '+hexDump(@lw,sizeof(lw))); @@ -148,10 +163,6 @@ begin end; if (length(s)=3) and base64Decode(s,inByte) then begin - if not base64ToBin(s) then - raise exception.create('interner Fehler: base64ToBin meckert, base64Decode aber nicht!'); - - writeln('Bits: '+s+' '+hexDump(@inByte,sizeof(inByte))); tastenDruckAnhaengen(inByte); exit; end; |