diff options
author | Erich Eckner <git@eckner.net> | 2015-10-19 21:09:39 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2015-10-19 21:09:39 +0200 |
commit | 9992352d91dbf2f5ee59dd23c7a970312a0d2bfb (patch) | |
tree | c12bd9b7b3d5fb97a2b0d2bfe867fb7044e83dd0 | |
parent | e69b34e2a2bf722ab6b7b8daf8656e582608f053 (diff) | |
download | units-9992352d91dbf2f5ee59dd23c7a970312a0d2bfb.tar.xz |
Tastencodes einprogrammiert, die meisten Tasten entprellt
-rw-r--r-- | irdecoderunit.pas | 61 |
1 files changed, 51 insertions, 10 deletions
diff --git a/irdecoderunit.pas b/irdecoderunit.pas index ac46bcb..1075857 100644 --- a/irdecoderunit.pas +++ b/irdecoderunit.pas @@ -10,11 +10,12 @@ uses type tIRDecoder = class private - ttySLeser: tLeseProzess; - letztesZeichen: array[boolean] of longword; - letzterEmpf: boolean; - eingabePuffer: array of longword; - eingabeLaenge: longword; + ttySLeser: tLeseProzess; + letztesZeichen: array[boolean] of longword; + letzterEmpf: boolean; + eingabePuffer: array of longword; + eingabeLaenge, + letzterBefehl: longword; procedure init; procedure tastenDruckAnhaengen(lw: longword); procedure befehlAusfuehren(lw: longword); @@ -33,8 +34,41 @@ type implementation -const zeichenTabelle: array[0..0] of tBefehl = ( - (zeichen: $e0000000; einzelKlick: true; toDo: 'Hallo!') +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 ); // tIRDecoder ****************************************************************** @@ -58,6 +92,7 @@ begin letztesZeichen[false]:=$ffffffff; letztesZeichen[true]:=$ffffffff; letzterEmpf:=false; + letzterBefehl:=$ffffffff; setlength(eingabePuffer,0); eingabeLaenge:=0; end; @@ -69,7 +104,7 @@ begin empf:=odd(lw shr 1); lw:=((lw shr 1) and not 1) or byte(odd(lw)); - if (lw<>letztesZeichen[letzterEmpf]) or (empf=letzterEmpf) then begin + if (lw<>letztesZeichen[letzterEmpf]) or (empf=letzterEmpf) or empf then begin if eingabeLaenge>=length(eingabePuffer) then setlength(eingabePuffer,eingabeLaenge+1024); eingabePuffer[eingabeLaenge]:=lw; @@ -82,11 +117,17 @@ end; procedure tIRDecoder.befehlAusfuehren(lw: longword); var - i: longword; + i: longword; + neu: boolean; 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 - writeln('> '+zeichenTabelle[i].toDo); + if neu or not zeichenTabelle[i].einzelKlick then + writeln('> '+zeichenTabelle[i].toDo); exit; end; writeln('roh: '+hexDump(@lw,sizeof(lw))); |