diff options
author | Erich Eckner <git@eckner.net> | 2015-11-03 09:49:17 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2015-11-03 09:49:17 +0100 |
commit | 59c61e291c0da3db104d973d498e7a334005bed5 (patch) | |
tree | de9fa98344b7652b44501f4a52b380ab9d038a1c | |
parent | 9388cfc20bdd06fedc277afb473bb99e636979f1 (diff) | |
download | units-59c61e291c0da3db104d973d498e7a334005bed5.tar.xz |
fehlertolerantere irdecoderunit.pas
-rw-r--r-- | irdecoderunit.pas | 9 |
1 files changed, 6 insertions, 3 deletions
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; |