📄 wbtaunit1.pas
字号:
unit WBTAUnit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, ComCtrls, Menus, ToolWin, Buttons,
Grids, Clipbrd, INIFiles, ShellApi, CheckLst, CPortCtl, CPort;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
Exit1: TMenuItem;
SetCom1: TMenuItem;
UnitSelect1: TMenuItem;
StatusBar1: TStatusBar;
CAASCA11: TMenuItem;
CAASCA21: TMenuItem;
DRSC1: TMenuItem;
SS2000I1: TMenuItem;
PIEPI1: TMenuItem;
TDC1: TMenuItem;
WarpDrive1: TMenuItem;
Elterm24Emulator1: TMenuItem;
Help: TMenuItem;
helpIndex1: TMenuItem;
N1: TMenuItem;
About1: TMenuItem;
Commands1: TMenuItem;
HEXMode1: TMenuItem;
Edit1: TMenuItem;
Copy1: TMenuItem;
N2: TMenuItem;
Clearscreen1: TMenuItem;
ComTerminal1: TComTerminal;
ToolBar1: TToolBar;
Terminal1: TMenuItem;
Communication1: TMenuItem;
SpeedButton1: TSpeedButton;
IOButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
RepeatButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
Clearscreen2: TMenuItem;
Splitter1: TSplitter;
Scanforindexer1: TMenuItem;
SaveDialog1: TSaveDialog;
IDXtpoPC1: TMenuItem;
StringGrid1: TStringGrid;
Label1: TLabel;
Label2: TLabel;
Repeat1: TMenuItem;
RepSetup: TMenuItem;
Macros1: TMenuItem;
N01: TMenuItem;
N11: TMenuItem;
N21: TMenuItem;
N31: TMenuItem;
N41: TMenuItem;
N51: TMenuItem;
N61: TMenuItem;
N71: TMenuItem;
N81: TMenuItem;
N91: TMenuItem;
ProgPar1: TMenuItem;
Program1: TMenuItem;
Parameters1: TMenuItem;
ComboBox1: TComboBox;
WBTA1: TMenuItem;
Timer1: TTimer;
N3: TMenuItem;
Autorepeat1: TMenuItem;
N4: TMenuItem;
Viewlogfile1: TMenuItem;
OpenDialog1: TOpenDialog;
Unitsetup1: TMenuItem;
N5: TMenuItem;
PopupMenu1: TPopupMenu;
Save1: TMenuItem;
Load1: TMenuItem;
ClearAll1: TMenuItem;
AltT1: TMenuItem;
Contents1: TMenuItem;
ComboBox2: TComboBox;
ComPort1: TComPort;
procedure FormCreate(Sender: TObject);
procedure SetCom1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure CAASCA11Click(Sender: TObject);
procedure CAASCA21Click(Sender: TObject);
procedure DRSC1Click(Sender: TObject);
procedure SS2000I1Click(Sender: TObject);
procedure PIEPI1Click(Sender: TObject);
procedure TDC1Click(Sender: TObject);
procedure WarpDrive1Click(Sender: TObject);
procedure HEXMode1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Terminal1Click(Sender: TObject);
procedure Clearscreen2Click(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
// procedure Scanforindexer1Click(Sender: TObject);
procedure RepeatButton4Click(Sender: TObject);
procedure Scanforindexer1Click(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure IDXtpoPC1Click(Sender: TObject);
procedure ReadLParameters1Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Copy1Click(Sender: TObject);
procedure StringGrid1Click(Sender: TObject);
procedure RepSetupClick(Sender: TObject);
procedure Editmacros1Click(Sender: TObject);
procedure N01Click(Sender: TObject);
procedure WBTA1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure ProgPar1Click(Sender: TObject);
procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
procedure IOButton2Click(Sender: TObject);
procedure Autorepeat1Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure Viewlogfile1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ClearAll1Click(Sender: TObject);
procedure helpIndex1Click(Sender: TObject);
procedure About1Click(Sender: TObject);
procedure Contents1Click(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ComboBox2Change(Sender: TObject);
procedure StatusBar1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
// procedure CreateParams(var Params: TCreateParams); override;
private
{ Private declarations }
CommandRepeat : Boolean;
INIFilename : string;
INIFile : TINIFile;
INISection : string;
Params : Boolean; // selct parameter or terminal
// procedure XWETA0001;
// from the old WETA.PAS program
procedure UpdateCombo(S : String);
function ByteHex(a : byte):string;
Procedure PutContrSpec;
Procedure SendMacro(M : integer);
procedure UpdateComPort;
Procedure ReadINI;
procedure SaveINI;
// procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
public
{ Public declarations }
procedure WriteScreen(S : string);
procedure NoIDXSel;
FUNCTION CleanStr(S : String):string;
Procedure TermReceive; // terminal for the EPI and SS2000I
Function AchterSpatieWeg (S: ShortString) : ShortString;
function AddTextToFile(const aFileName, aText: string; AddCRLF: Boolean): Boolean;
end;
var
Form1: TForm1;
implementation
uses ScanIDX, WBTA_Var, WBTA_32_IDX, WBTA_RepTime, WBTA_Macro, WBTA_EPI_IO,
WarpIOTest, WBTA_SS2KIO;
{$R *.DFM}
{
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle:= Params.ExStyle or WS_EX_APPWINDOW;
end;
procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
case Msg.CmdType of
SC_MINIMIZE: begin
ShowWindow(Handle, SW_MINIMIZE);
(**) Application.Minimize;
(**) ShowWindow(Application.Handle, SW_HIDE);
(**) ShowWindow(Handle, SW_MINIMIZE);
end;
SC_RESTORE: begin
(**) Application.Restore;
ShowWindow(Handle, SW_RESTORE);
(**) ShowWindow(Application.Handle, SW_HIDE);
end;
else
inherited;
end;
end;
}
FUNCTION TForm1.AchterSpatieWeg (S: ShortString) : ShortString;
BEGIN
WHILE S[Length(S)] = ' ' DO
Delete (S,Length(S),1);
Result := S;
END; { AchterSpatieWeg }
procedure TForm1.UpdateComPort;
begin
Comport1.Close;
Comport1.Port := 'COM' + IntToStr(ComPort);
Comport1.Baudrate := StrToBaudrate(IntToStr(Baudrate));
Comport1.Open;
StatusBar1.Panels[0].Text := ' '+ Comport1.Port + ' ' +
BaudRateToStr(ComPort1.BaudRate) + ' ' +
DataBitsToStr(ComPort1.DataBits) + ' ' +
ParityToStr(ComPort1.Parity.Bits) + ' ' +
StopBitsToStr(ComPort1.StopBits);
end;
Procedure TForm1.ReadINI;
begin
IniFile := TIniFile.Create(INIFileName);
AddTextToFile('error.log','INI file created',true);
// read the comport setting
// ComPort := IniFile.ReadInteger (INISection, 'COMPort', 1); // problem NT5.6
ComPort := StrToInt(IniFile.ReadString (INISection, 'COMPort', '1'));
AddTextToFile('error.log','Comport read OK',true);
BaudRate := StrToInt(IniFile.ReadString (INISection, 'Baudrate', '9600'));
AddTextToFile('error.log','Baudrate read OK',true);
AddTextToFile('error.log','comport settings ',true);
// read the keyboard macro's
Alt0 := IniFile.ReadString (INISection, 'Alt0 Macro','Alt0');
Alt1 := IniFile.ReadString (INISection, 'Alt1 Macro','Alt1');
Alt2 := IniFile.ReadString (INISection, 'Alt2 Macro','Alt2');
Alt3 := IniFile.ReadString (INISection, 'Alt3 Macro','Alt3');
Alt4 := IniFile.ReadString (INISection, 'Alt4 Macro','Alt4');
Alt5 := IniFile.ReadString (INISection, 'Alt5 Macro','Alt5');
Alt6 := IniFile.ReadString (INISection, 'Alt6 Macro','Alt6');
Alt7 := IniFile.ReadString (INISection, 'Alt7 Macro','Alt7');
Alt8 := IniFile.ReadString (INISection, 'Alt8 Macro','Alt8');
Alt9 := IniFile.ReadString (INISection, 'Alt9 Macro','Alt9');
// some special stuff
AddTextToFile('error.log','macro settings',true);
RepDelay := StrToInt(IniFile.ReadString (INISection, 'Repeat delay', '1000' ));
Emulation := StrToInt(IniFile.ReadString (INISection, 'Terminal Emulation', '1' ));
Editor := IniFile.ReadString (INISection, 'Editor',' Choose editor');
LogFile := IniFile.ReadString (INISection, 'Terminal Log File','WBTA.LOG');
IniFile.Free;
Form1.SpeedButton3.Hint := 'Log file = '+ LogFile;
AddTextToFile('error.log','rest OK',true);
UpdateComPort;
AddTextToFile('error.log','comport updated, end of INI file',true);
end;
procedure TForm1.SaveINI;
begin
IniFile := TIniFile.Create(INIFileName);
// save the comport setting
IniFile.WriteString (INISection, 'COMPort', IntToStr(Comport));
IniFile.WriteString (INISection, 'Baudrate', IntToStr(Baudrate));
// save the keyboard macro's
IniFile.WriteString (INISection, 'Alt0 Macro',Alt0);
IniFile.WriteString (INISection, 'Alt1 Macro',Alt1);
IniFile.WriteString (INISection, 'Alt2 Macro',Alt2);
IniFile.WriteString (INISection, 'Alt3 Macro',Alt3);
IniFile.WriteString (INISection, 'Alt4 Macro',Alt4);
IniFile.WriteString (INISection, 'Alt5 Macro',Alt5);
IniFile.WriteString (INISection, 'Alt6 Macro',Alt6);
IniFile.WriteString (INISection, 'Alt7 Macro',Alt7);
IniFile.WriteString (INISection, 'Alt8 Macro',Alt8);
IniFile.WriteString (INISection, 'Alt9 Macro',Alt9);
// some special stuff
IniFile.WriteString (INISection, 'Repeat delay', IntToStr(RepDelay));
IniFile.WriteString (INISection, 'Terminal Emulation', IntToStr(Emulation));
IniFile.WriteString (INISection, 'Editor',editor);
IniFile.WriteString (INISection, 'Terminal Log File',LogFile);
IniFile.Free;
Form1.SpeedButton3.Hint := 'Log file = '+ LogFile;
UpdateComPort;
end;
Procedure TForm1.PutContrSpec;
Begin
if Params then
SpeedButton1.Click;
AddTextToFile('error.log','Procedure TForm1.PutContrSpec',true);
CAASCA11.Checked := False;
CAASCA21.Checked := False;
DRSC1.Checked := False;
SS2000I1.Checked := False;
PIEPI1.Checked := False;
TDC1.Checked := False;
WarpDrive1.Checked := False;
SpeedButton1.Enabled := False;
Case ContrType of
1 : Begin {SCA1 / CAA1 }
EXT := 'PRG';
CAASCA11.Checked := True;
UnitStr := ' SCA1 / CAA1';
IOButton2.Enabled := False;
end;
2 : Begin { SCA2 / CAA2 }
EXT := 'PRG';
CAASCA21.Checked := true;
UnitStr := ' SCA2 / CAA2';
IOButton2.Enabled := False;
end;
3 : begin { DRSC }
EXT := 'SC';
DRSC1.Checked := True;
UnitStr := ' DRSC';
IOButton2.Enabled := False;
end;
4 : begin { SS2000I }
EXT := 'PGM';
SS2000I1.Checked := True;
UnitStr := ' SS2000I';
IOButton2.Enabled := True;
SpeedButton1.Enabled := True;
end;
5 : Begin { EPI }
EXT := 'PGM';
PIEPI1.Checked := True;
UnitStr := ' PI / EPI Indexers';
IOButton2.Enabled := True;
SpeedButton1.Enabled := True;
end;
6 : begin { TDC }
EXT := 'DMC'; // Direc Mode Control
TDC1.Checked := True;
UnitStr := ' TDC';
IOButton2.Enabled := True;
end;
7 : Begin { Cobra }
EXT := 'DMC'; { Direct Mode Cobra }
WarpDrive1.Checked := True;
UnitStr := ' Warpdrive';
IOButton2.Enabled := True;
end;
8 : begin { Elterm emulator }
EXT := ' ';
UnitStr := ' Elterm 24 Emulator';
IOButton2.Enabled := False;
end;
end;
INISection := UnitStr;
while pos(' ',INISection) <> 0 do // remove spaces
delete(INISection,pos(' ',INISection),1);
{ Case ContrType of
1 : INISection := 'SCA1 / CAA1';
2 : INISection := 'SCA2 / CAA2';
3 : INISection := 'DRSC';
4 : INISection := 'SS2000I';
5 : INISection := 'EPI';
6 : INISection := 'TDC';
7 : INISection := 'WarpDrive';
8 : INISection := 'Elterm emulator';
end; }
ReadINI;
// SetCom; { to get the right COM port activated }
StatusBar1.Panels[1].Text := ' EXT '+ EXT;
Form1.caption := Progname + UnitStr;
try
If Comterminal1.Visible = True then
Comterminal1.SetFocus;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -