summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2015-10-20 12:30:35 +0200
committerErich Eckner <git@eckner.net>2015-10-20 12:30:35 +0200
commit8f2a34f475d6847874f3ac8952d138a559ac520e (patch)
tree53a24b2fb6b900fecc226fb3f57addfa2ad9c3fa
parent907d704462b445c67abe06f147c6a4a490022710 (diff)
downloadunits-8f2a34f475d6847874f3ac8952d138a559ac520e.tar.xz
Strukturanpassung
-rw-r--r--irdecoderunit.pas101
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;