From 59c61e291c0da3db104d973d498e7a334005bed5 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Tue, 3 Nov 2015 09:49:17 +0100 Subject: fehlertolerantere irdecoderunit.pas --- irdecoderunit.pas | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'irdecoderunit.pas') diff --git a/irdecoderunit.pas b/irdecoderunit.pas index 5b9d045..cff9936 100644 --- a/irdecoderunit.pas +++ b/irdecoderunit.pas @@ -145,7 +145,8 @@ begin if eingabeLaenge>=length(eingabePuffer) then setlength(eingabePuffer,eingabeLaenge+1024); eingabePuffer[eingabeLaenge]:=(findeZeichen(lw and not $08) shl 1) or byte((lw and $08) <> 0); - inc(eingabeLaenge); + if ((not eingabePuffer[eingabeLaenge]) and (not 1)) <> 0 then + inc(eingabeLaenge); end; letztesZeichen[empf]:=lw; @@ -199,8 +200,10 @@ begin if mi<>ma then raise exception.create('Sanity-Check nicht bestanden: mi<>ma nach Bisektion!'); result:=mi; - if zeichenTabelle[result]<>lw then - raise exception.create('Kann Tastencode '''+inttohex(lw,4)+''' nicht finden!'); + if zeichenTabelle[result]<>lw then begin + writeln(stderr,'Kann Tastencode '''+inttohex(lw,4)+''' nicht finden, ignoriere Taste!'); + result:=not 0; + end; end; function tIRDecoder.findeBefehl(lw: longword): int64; -- cgit v1.2.3-70-g09d2