home *** CD-ROM | disk | FTP | other *** search
- unit Easy_pgm;
-
- interface
-
- uses
- SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
- Forms, Dialogs, Menus,
- wsc, ExtCtrls, StdCtrls;
- const
- MaxRow = 15;
- MaxCol = 65;
- type
- TEasy = class(TForm)
- MainMenu: TMainMenu;
- menuLine: TMenuItem;
- menuOnLine: TMenuItem;
- menuOffline: TMenuItem;
- menuExit: TMenuItem;
- menuChange: TMenuItem;
- menuPort: TMenuItem;
- menuBaud: TMenuItem;
- menuCOM1: TMenuItem;
- menuCOM2: TMenuItem;
- menuCOM3: TMenuItem;
- menuCOM4: TMenuItem;
- menu300: TMenuItem;
- menu1200: TMenuItem;
- menu2400: TMenuItem;
- menu4800: TMenuItem;
- menu9600: TMenuItem;
- menu19200: TMenuItem;
- menu38400: TMenuItem;
- menu57600: TMenuItem;
- Timer: TTimer;
- procedure IncrCol;
- procedure IncrRow;
- procedure DisplayChar(TheChar : Char);
- procedure DisplayString(Text : String);
- procedure DisplayLine(Text : String);
- procedure FormCreate(Sender: TObject);
- procedure menuOnLineClick(Sender: TObject);
- procedure menuOfflineClick(Sender: TObject);
- procedure menuCOM1Click(Sender: TObject);
- procedure menuCOM2Click(Sender: TObject);
- procedure menuCOM3Click(Sender: TObject);
- procedure menuCOM4Click(Sender: TObject);
- procedure menuExitClick(Sender: TObject);
- procedure menu300Click(Sender: TObject);
- procedure menu1200Click(Sender: TObject);
- procedure menu2400Click(Sender: TObject);
- procedure menu4800Click(Sender: TObject);
- procedure menu9600Click(Sender: TObject);
- procedure menu19200Click(Sender: TObject);
- procedure menu38400Click(Sender: TObject);
- procedure menu57600Click(Sender: TObject);
- procedure TimerTimer(Sender: TObject);
- procedure KeyPress(Sender: TObject; var Key: Char);
- private
- { Private declarations }
- LastChar : Char;
- Row : Integer;
- Col : Integer;
- RowBase : Integer;
- CharWidth : Integer;
- CharHeight : Integer;
- Port : Integer;
- Baud : Integer;
- Parity : Integer;
- DataBits : Integer;
- StopBits : Integer;
- ScreenBuffer : array [0..MaxRow] of string;
- BlankLine : string;
- public
- { Public declarations }
- end ;
-
- var
- Easy: TEasy;
-
- implementation
-
- {$R *.DFM}
-
- procedure TEASY.IncrRow;
- var
- I : Integer;
- begin
- Col := 0;
- Inc(Row);
- if Row > MaxRow then
- begin
- (* scroll ScreenBuffer *)
- for I := 0 to MaxRow-1 do
- ScreenBuffer[I] := ScreenBuffer[I+1];
- ScreenBuffer[MaxRow] := '';
- (* re-display *)
- for I := 0 to MaxRow-1 do
- begin
- Canvas.TextOut(0,(I*CharHeight),ScreenBuffer[I]+BlankLine);
- end;
- (* position on last line *)
- Row := MaxRow;
- Canvas.TextOut(0,MaxRow*CharHeight,BlankLine);
- Canvas.MoveTo(0,MaxRow*CharHeight)
- end
- end;
-
- procedure TEASY.IncrCol;
- begin
- Inc(Col);
- if Col > MaxCol then
- begin
- IncrRow;
- end;
- end;
-
- procedure TEASY.DisplayChar(TheChar : Char);
- var
- TheString : String;
- begin
- if TheChar <> Chr(10) then
- begin
- if TheChar = Chr(13) then
- begin
- IncrRow;
- end
- else
- begin
- ScreenBuffer[Row] := ScreenBuffer[Row] + TheChar;
- Canvas.TextOut((Col*CharWidth),(Row*CharHeight),''+TheChar);
- IncrCol;
- end;
- end;
- end;
-
- procedure TEASY.DisplayString(Text : String);
- var
- I : Integer;
- Len : Integer;
- S:String;
- begin
- Len := Length(Text);
- if Len > 0 then
- for I := 1 to Len do
- begin
- DisplayChar(Text[I])
- end;
- end;
-
- procedure TEASY.DisplayLine(Text : String);
- begin
- DisplayString(Text);
- DisplayChar(chr(13))
- end;
-
- procedure TEasy.FormCreate(Sender: TObject);
- var
- I : Integer;
- Code : Integer;
- begin
- (* initialize canvas *)
- RowBase := 0;
- CharWidth := Canvas.TextWidth('A');
- CharHeight := Canvas.TextHeight('A');
- for I := 0 to MaxRow do ScreenBuffer[I] := '';
- BlankLine := '';
- for I := 0 to MaxCol do BlankLine := BlankLine + ' ';
- (* initialize parameters *)
- Port := COM1;
- Baud := Baud19200;
- Parity := NoParity;
- DataBits := WordLength8;
- StopBits := OneStopBit;
- (* initialize menu settings *)
- menuOffLine.Checked := true;
- menuCOM1.Checked := true;
- menu19200.Checked := true
- end;
-
- procedure TEasy.menuOnLineClick(Sender: TObject);
- var
- Code : Integer;
- begin
- (* initialize WSC *)
- Code := SioReset(Port,1024,256);
- if Code < 0 then
- begin
- DisplayString(Format('Error %d: Cannot reset port',[Code]));
- exit
- end;
- (* update menu settings *)
- Easy.Caption := 'EASY: COM' + Chr($31+Port) + ' Online';
- menuOnLine.Checked := true;
- menuOffLine.Checked := false;
- menuChange.Enabled := false;
- Code := SioBaud(Port,Baud);
- Code := SioParms(Port, Parity, StopBits);
- Code := SioDTR(Port,'S');
- Code := SioRTS(Port,'S')
- end;
-
- procedure TEasy.menuOfflineClick(Sender: TObject);
- var
- Code : Integer;
- begin
- Easy.Caption := 'EASY: Offline';
- DisplayString('Shutting down COM port');
- menuOnLine.Checked := false;
- menuOffLine.Checked := true;
- menuChange.Enabled := true;
- Code := SioDone(Port)
- end;
-
- procedure TEasy.menuCOM1Click(Sender: TObject);
- begin
- menuCOM1.Checked := true;
- menuCOM2.Checked := false;
- menuCOM3.Checked := false;
- menuCOM4.Checked := false;
- Port := COM1
- end;
-
- procedure TEasy.menuCOM2Click(Sender: TObject);
- begin
- menuCOM1.Checked := false;
- menuCOM2.Checked := true;
- menuCOM3.Checked := false;
- menuCOM4.Checked := false;
- Port := COM2
- end;
-
- procedure TEasy.menuCOM3Click(Sender: TObject);
- begin
- menuCOM1.Checked := false;
- menuCOM2.Checked := false;
- menuCOM3.Checked := true;
- menuCOM4.Checked := false;
- Port := COM3
- end;
-
- procedure TEasy.menuCOM4Click(Sender: TObject);
- begin
- menuCOM1.Checked := false;
- menuCOM2.Checked := false;
- menuCOM3.Checked := false;
- menuCOM4.Checked := true;
- Port := COM4
- end;
-
- procedure TEasy.menuExitClick(Sender: TObject);
- var
- Code : Integer;
- begin
- Code := SioDone(Port);
- Application.Terminate;
- end;
-
- procedure TEasy.menu300Click(Sender: TObject);
- begin
- menu300.Checked := true;
- menu1200.Checked := false;
- menu2400.Checked := false;
- menu4800.Checked := false;
- menu9600.Checked := false;
- menu19200.Checked := false;
- menu38400.Checked := false;
- menu57600.Checked := false;
- Baud := Baud300
- end;
-
- procedure TEasy.menu1200Click(Sender: TObject);
- begin
- menu300.Checked := false;
- menu1200.Checked := true;
- menu2400.Checked := false;
- menu4800.Checked := false;
- menu9600.Checked := false;
- menu19200.Checked := false;
- menu38400.Checked := false;
- menu57600.Checked := false;
- Baud := Baud1200
- end;
-
- procedure TEasy.menu2400Click(Sender: TObject);
- begin
- menu300.Checked := false;
- menu1200.Checked := false;
- menu2400.Checked := true;
- menu4800.Checked := false;
- menu9600.Checked := false;
- menu19200.Checked := false;
- menu38400.Checked := false;
- menu57600.Checked := false;
- Baud := Baud2400
- end;
-
- procedure TEasy.menu4800Click(Sender: TObject);
- begin
- menu300.Checked := false;
- menu1200.Checked := false;
- menu2400.Checked := false;
- menu4800.Checked := true;
- menu9600.Checked := false;
- menu19200.Checked := false;
- menu38400.Checked := false;
- menu57600.Checked := false;
- Baud := Baud4800
- end;
-
- procedure TEasy.menu9600Click(Sender: TObject);
- begin
- menu300.Checked := false;
- menu1200.Checked := false;
- menu2400.Checked := false;
- menu4800.Checked := false;
- menu9600.Checked := true;
- menu19200.Checked := false;
- menu38400.Checked := false;
- menu57600.Checked := false;
- Baud := Baud9600
- end;
-
- procedure TEasy.menu19200Click(Sender: TObject);
- begin
- menu300.Checked := false;
- menu1200.Checked := false;
- menu2400.Checked := false;
- menu4800.Checked := false;
- menu9600.Checked := false;
- menu19200.Checked := true;
- menu38400.Checked := false;
- menu57600.Checked := false;
- Baud := Baud19200
- end;
-
- procedure TEasy.menu38400Click(Sender: TObject);
- begin
- menu300.Checked := false;
- menu1200.Checked := false;
- menu2400.Checked := false;
- menu4800.Checked := false;
- menu9600.Checked := false;
- menu19200.Checked := false;
- menu38400.Checked := true;
- menu57600.Checked := false;
- Baud := Baud38400
- end;
-
- procedure TEasy.menu57600Click(Sender: TObject);
- begin
- menu300.Checked := false;
- menu1200.Checked := false;
- menu2400.Checked := false;
- menu4800.Checked := false;
- menu9600.Checked := false;
- menu19200.Checked := false;
- menu38400.Checked := false;
- menu57600.Checked := true;
- Baud := Baud57600
- end;
-
- procedure TEasy.TimerTimer(Sender: TObject);
- var
- Code : Integer;
- begin
- repeat
- Code := SioGetc(Port);
- if Code >= 0 then DisplayChar(Chr(Code))
- until Code < 0;
- end;
-
- procedure TEasy.KeyPress(Sender: TObject; var Key: Char);
- var
- Code : Integer;
- begin
- Code := SioPutc(Port,Key)
- end;
-
- end.
-