diff options
Diffstat (limited to 'irdecoderunit.pas')
-rw-r--r-- | irdecoderunit.pas | 92 |
1 files changed, 53 insertions, 39 deletions
diff --git a/irdecoderunit.pas b/irdecoderunit.pas index c9917a7..da9a424 100644 --- a/irdecoderunit.pas +++ b/irdecoderunit.pas @@ -5,7 +5,7 @@ unit irdecoderunit; interface uses - Classes, SysUtils, lesethreadunit, lowlevelunit; + Classes, SysUtils, lesethreadunit, lowlevelunit, process; type tBefehlsWort = ( @@ -51,40 +51,40 @@ const zeichenTabelle: array[tBefehlsWort] of longword = ( $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 + (einzelKlick: true; toDo: 'echo 0'), // 0/10 + (einzelKlick: true; toDo: 'echo 1'), // 1 + (einzelKlick: true; toDo: 'echo 2'), // 2 + (einzelKlick: true; toDo: 'echo 3'), // 3 + (einzelKlick: true; toDo: 'echo 4'), // 4 + (einzelKlick: true; toDo: 'echo 5'), // 5 + (einzelKlick: true; toDo: 'echo 6'), // 6 + (einzelKlick: true; toDo: 'echo 7'), // 7 + (einzelKlick: true; toDo: 'echo 8'), // 8 + (einzelKlick: true; toDo: 'echo 9'), // 9 + (einzelKlick: true; toDo: 'echo 2/12'), // 2-/12 + (einzelKlick: true; toDo: 'screen -d -m /usr/bin/shutdownasap'), // Power + (einzelKlick: true; toDo: 'mocp -o s'), // Punkt + (einzelKlick: true; toDo: 'mocp -u s'), // PfeilInKasten + (einzelKlick: true; toDo: 'mocp -f'), // |> + (einzelKlick: true; toDo: 'mocp -r'), // <| + (einzelKlick: true; toDo: 'mocp -k -5'), // << + (einzelKlick: true; toDo: 'mocp -k +5'), // >> + (einzelKlick: true; toDo: 'mocp -G'), // || + (einzelKlick: true; toDo: 'mocp -p'), // > + (einzelKlick: true; toDo: 'mocp -s'), // [] + (einzelKlick: true; toDo: 'playlist +'), // P+ + (einzelKlick: true; toDo: 'playlist -'), // P- + (einzelKlick: true; toDo: 'stumm -t'), // Stumm + (einzelKlick: false; toDo: 'lautstaerke +1'), // L+ + (einzelKlick: false; toDo: 'lautstaerke -1'), // L- + (einzelKlick: false; toDo: 'lautstaerke -5'), // K- + (einzelKlick: false; toDo: 'lautstaerke +5'), // K+ + (einzelKlick: false; toDo: 'lautstaerke -25'), // H- + (einzelKlick: false; toDo: 'lautstaerke +25'), // H+ + (einzelKlick: true; toDo: 'playlist -r'), // rot + (einzelKlick: true; toDo: 'echo gruen'), // gruen + (einzelKlick: true; toDo: 'echo gelb'), // gelb + (einzelKlick: true; toDo: 'echo blau') // blau ); // tIRDecoder ****************************************************************** @@ -133,8 +133,10 @@ end; procedure tIRDecoder.befehlAusfuehren(lw: longword); var - neu: boolean; - bw: tBefehlsWort; + neu: boolean; + bw: tBefehlsWort; + output: string; + p: tProcess; begin neu:=lw<>letzterBefehl; letzterBefehl:=lw; @@ -142,10 +144,22 @@ begin 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); + if neu or not befehlsTabelle[bw].einzelKlick then begin + output:=befehlsTabelle[bw].toDo; + p:=tProcess.create(nil); + p.executable:=copy(output,1,pos(' ',output+' ')-1); + delete(output,1,length(p.executable)+1); + while (output)<>'' do begin + p.parameters.add(copy(output,1,pos(' ',output+' ')-1)); + delete(output,1,length(p.parameters[p.parameters.count-1])+1); + end; + p.options:=p.options + [poWaitOnExit]; + p.execute; + p.free; + end; exit; end; + writeln('roh: '+hexDump(@lw,sizeof(lw))); end; |