unit untType;

interface

uses
  // VCL
  SysUtils, Classes, OleCtrls;

type
  TBaudrate =(br110, br300, br600, br1200, br2400, br4800, br9600, br14400,
    br19200, br38400, br56000, br57600, br115200, br128000, br256000);

  TRotation = (rtNone, rt90, rt180, rt270);
  TAlignment = (alLeft, alCenter, alRight);

type
  TINT_BaudRate         = TOleEnum;
const
  INT_br110             = $00000000;
  INT_br300             = $00000001;
  INT_br600             = $00000002;
  INT_br1200            = $00000003;
  INT_br2400            = $00000004;
  INT_br4800            = $00000005;
  INT_br9600            = $00000007;
  INT_br14400           = $00000009;
  INT_br19200           = $0000000A;
  INT_br38400           = $0000000C;
  INT_br56000           = $0000000D;
  INT_br57600           = $0000000E;
  INT_br115200          = $00000012;
  INT_br128000          = $00000013;
  INT_br256000          = $00000015;

  BaudrateToStr: array[TBaudRate] of String =
   ('110', '300', '600', '1200', '2400', '4800', '9600', '14400', '19200',
    '38400', '56000', '57600', '115200', '128000', '256000');

type
  TPrinterModel  = (pmStar2000, pmStar298, pmStar600, pmStar700, pmStar800, pmAxiohm794, pmCBM1000);
const
  PrinterModelToStr: array[TPrinterModel] of String = ('STAR SP2000', 'STAR SP298',
    'STAR TSP600', 'STAR TSP700', 'STAR TSP800', 'Axiohm 794', 'CBM 1000 II');
type
  TPrinterType = (ptCheques1, ptCheques2, ptSlip1, ptSlip2, ptSlip3);
const
  PrinterTypeToStr: array[TPrinterType] of String = (' ',
    '  ', '  ',
    '   ',
    '   ');

//---------      ------------

  CharacteristicAvailable: array [Boolean] of String = (' ', '');
  RotatationToStr: array [TRotation] of String = ('', '90', '180', '270');
  AlignmentToStr: array [TAlignment] of String = ('  ', ' ',
                                                  ' ');
  PrinterColorsToStr: array [1..3] of String = ('   ',
                                                '   ',
                                                '   ');

//

function IntToEnumBaudRate(const Value: TINT_BaudRate): TBaudRate;
function EnumToIntBaudRate(const Value: TBaudRate): TINT_BaudRate;

function PortNumberToStr(Value: Integer): String;

implementation

function IntToEnumBaudRate(const Value: TINT_BaudRate): TBaudRate;
begin
  case Value of
  INT_br110:    Result := br110;
  INT_br300:    Result := br300;
  INT_br600:    Result := br600;
  INT_br1200:   Result := br1200;
  INT_br2400:   Result := br2400;
  INT_br4800:   Result := br4800;
  INT_br9600:   Result := br9600;
  INT_br14400:  Result := br14400;
  INT_br19200:  Result := br19200;
  INT_br38400:  Result := br38400;
  INT_br56000:  Result := br56000;
  INT_br57600:  Result := br57600;
  INT_br115200: Result := br115200;
  INT_br128000: Result := br128000;
  INT_br256000: Result := br256000;
  else
    raise Exception.CreateFmt('   : (%d)', [Value]);
  end;
end;

function EnumToIntBaudRate(const Value: TBaudRate): TINT_BaudRate;
begin
  case Value of
  br110:    Result := INT_br110;
  br300:    Result := INT_br300;
  br600:    Result := INT_br600;
  br1200:   Result := INT_br1200;
  br2400:   Result := INT_br2400;
  br4800:   Result := INT_br4800;
  br9600:   Result := INT_br9600;
  br14400:  Result := INT_br14400;
  br19200:  Result := INT_br19200;
  br38400:  Result := INT_br38400;
  br56000:  Result := INT_br56000;
  br57600:  Result := INT_br57600;
  br115200: Result := INT_br115200;
  br128000: Result := INT_br128000;
  br256000: Result := INT_br256000;
  else
    raise Exception.CreateFmt('   : (%s ) ', [BaudRateToStr[Value]]);
  end;
end;

function PortNumberToStr(Value: Integer): String;
const
  MAXCOM_PORT = 32;
begin
  if Value <= MAXCOM_PORT then Result := 'COM' + IntToStr(Value)
    else Result := 'LPT' + IntToStr(Value - MAXCOM_PORT);
end;

end.
