From b336784693af5b73d1c9855ba6a43ee530a13b4b Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Mon, 19 Oct 2015 16:30:48 +0200 Subject: neue Datei: irdecoderunit.pas --- irdecoderunit.pas | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 irdecoderunit.pas diff --git a/irdecoderunit.pas b/irdecoderunit.pas new file mode 100644 index 0000000..1234678 --- /dev/null +++ b/irdecoderunit.pas @@ -0,0 +1,62 @@ +unit irdecoderunit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, lesethreadunit, lowlevelunit; + +type + tIRDecoder = class + private + ttySLeser: tLeseProzess; + public + constructor create(inputName: string); + destructor destroy; override; + function zeileVerarbeitet: boolean; + end; + +implementation + +// tIRDecoder ****************************************************************** + +constructor tIRDecoder.create(inputName: string); +begin + inherited create; + ttySLeser:=tLeseProzess.create(inputName,1); +end; + +destructor tIRDecoder.destroy; +begin + ttySLeser.free; + inherited destroy; +end; + +function tIRDecoder.zeileVerarbeitet: boolean; +var + s: string; + inByte: longint; +begin + result:=ttySLeser.gibZeile(s); + if not result then exit; + + if s='Ha!' then begin // Startzeichen + writeln('Empfänger hat sich gemeldet!'); + exit; + 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))); + // verarbeiten! + exit; + end; + + writeln('Warnung: Kenne Kommando '''+s+''' nicht - komisch formatiert!'); +end; + +end. + -- cgit v1.2.3-70-g09d2