unit Rmet;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, ExtCtrls, StdCtrls;

type
  TResMeter = class(TForm)
    Panel1: TPanel;
    Timer1: TTimer;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Label1: TLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  ResMeter: TResMeter;
  Prn1: Word;
  Prn2: Word;
  Prn3: Word;
  Reading: Word;
  Dta: Byte;
  Busy: Byte;
  Digits: Byte;
  DecPos: Byte;
  Rding: String;
  Padding: String;

implementation

{$R *.DFM}

procedure TResMeter.Timer1Timer(Sender: TObject);
begin
Prn1 := 888;
Prn2 := 889;
Prn3 := 890;
Port[Prn3] := 1;
Port[Prn3] := 3;
Port[Prn3] := 1;
Repeat
Busy := Port[Prn2] AND 16;
application.processmessages;
Until Busy = 0;
Port[Prn3] := 0;
Port[Prn3] := 1;
Port[Prn3] := 0;
Port[Prn3] := 1;
Port[Prn3] := 0;
Port[Prn3] := 1;
Port[Prn3] := 0;
Port[Prn3] := 1;
Reading := 0;
Dta := Port[Prn2] AND 32;
If Dta = 32 Then Reading := 2048;
Port[Prn3] := 0;
Port[Prn3] := 1;
Dta := Port[Prn2] AND 32;
If Dta = 32 Then Reading := (Reading + 1024);
Port[Prn3] := 0;
Port[Prn3] := 1;
Dta := Port[Prn2] AND 32;
If Dta = 32 Then Reading := (Reading + 512);
Port[Prn3] := 0;
Port[Prn3] := 1;
Dta := Port[Prn2] AND 32;
If Dta = 32 Then Reading := (Reading + 256);
Port[Prn3] := 0;
Port[Prn3] := 1;
Dta := Port[Prn2] AND 32;
If Dta = 32 Then Reading := (Reading + 128);
Port[Prn3] := 0;
Port[Prn3] := 1;
Dta := Port[Prn2] AND 32;
If Dta = 32 Then Reading := (Reading + 64);
Port[Prn3] := 0;
Port[Prn3] := 1;
Dta := Port[Prn2] AND 32;
If Dta = 32 Then Reading := (Reading + 32);
Port[Prn3] := 0;
Port[Prn3] := 1;
Dta := Port[Prn2] AND 32;
If Dta = 32 Then Reading := (Reading + 16);
Port[Prn3] := 0;
Port[Prn3] := 1;
Dta := Port[Prn2] AND 32;
If Dta = 32 Then Reading := (Reading + 8);
Port[Prn3] := 0;
Port[Prn3] := 1;
Dta := Port[Prn2] AND 32;
If Dta = 32 Then Reading := (Reading + 4);
Port[Prn3] := 0;
Port[Prn3] := 1;
Dta := Port[Prn2] AND 32;
If Dta = 32 Then Reading := (Reading + 2);
Port[Prn3] := 0;
Port[Prn3] := 1;
Dta := Port[Prn2] AND 32;
If Dta = 32 Then Reading := (Reading + 1);
Str(Reading, Rding);
Digits := Length(Rding);
If Digits = 1 Then Padding := '000';
If Digits = 2 Then Padding := '00';
If Digits = 3 Then Padding := '0';
If Digits = 4 Then Padding := '';
Insert(Padding, Rding, 1);
Insert('.', Rding, DecPos);
Panel1.Caption := Rding;
If Reading = 4095 Then Panel1.Caption := 'OVER';
end;

procedure TResMeter.Button1Click(Sender: TObject);
begin
Timer1.Enabled := False;
end;

procedure TResMeter.Button2Click(Sender: TObject);
begin
Timer1.Enabled := True;
end;

procedure TResMeter.Button3Click(Sender: TObject);
begin
Port[Prn1] := 1;
DecPos := 2;
Label1.Caption := 'KILOHMS';
end;

procedure TResMeter.Button4Click(Sender: TObject);
begin
Port[Prn1] := 2;
DecPos := 3;
Label1.Caption := 'KILOHMS';
end;

procedure TResMeter.Button5Click(Sender: TObject);
begin
Port[Prn1] := 4;
DecPos := 4;
Label1.Caption := 'KILOHMS';
end;

procedure TResMeter.Button6Click(Sender: TObject);
begin
Port[Prn1] := 8;
DecPos := 2;
Label1.Caption := 'MEGOHMS';
end;

end.

