summaryrefslogtreecommitdiff
path: root/irdecoderunit.pas
blob: c4cb658d86ab5b610219351b62edfcd1b9d0960a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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: longword;
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.