📄 qzhjunit1.~pas
字号:
unit qzhjUnit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, OleCtrls, MSCommLib_TLB;
type
Tqianzhiji = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
MSComm1: TMSComm;
Timer1: TTimer;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Timer2: TTimer;
Timer3: TTimer;
Label13: TLabel;
Edit13: TEdit;
Label14: TLabel;
Edit14: TEdit;
Label15: TLabel;
Edit15: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure MSComm1Comm(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
qianzhiji: Tqianzhiji;
duanluqi1_dianliu:Integer;
duanluqi1_dianya:Integer;
duanluqi2_dianliu:Integer;
duanluqi2_dianya:Integer;
duanluqi3_dianliu:Integer;
duanluqi3_dianya:Integer;
jialiu1:Boolean;
jialiu2:Boolean;
jialiu3:Boolean;
jiaya:Boolean;
index:integer;
ctrl:integer;
implementation
{$R *.dfm}
Procedure TimeDelay(DT:DWORD);
var
TT:DWORD;
begin
TT:=GetTickCount();
while GetTickCount()-TT<DT do
Application.ProcessMessages;
end;
procedure Tqianzhiji.Button1Click(Sender: TObject);
begin
MSComm1.PortOpen:=False;
timer1.Enabled := False;
close;
end;
procedure Tqianzhiji.FormCreate(Sender: TObject);
begin
if Not MSComm1.PortOpen then
begin
MSComm1.PortOpen:=True;
MSComm1.DTREnable:=True;
MSComm1.RTSEnable:=True;
end;
MSComm1.RThreshold := 1;
jialiu1:=True;
jialiu2:=True;
jialiu3:=True;
jiaya:=True;
ctrl:=0;
Edit13.Text:='10';
Edit14.Text:='10';
Edit15.Text:='10';
end;
procedure Tqianzhiji.Button2Click(Sender: TObject);
begin
timer1.Enabled := True;
jialiu1:=True;
duanluqi1_dianliu:=0;
Edit2.text:='10KV';
Edit3.text:='21';
Edit4.text:='合上';
end;
procedure Tqianzhiji.Button4Click(Sender: TObject);
begin
timer2.Enabled := True;
jialiu2:=True;
duanluqi2_dianliu:=0;
Edit6.text:='10KV';
Edit7.text:='20';
Edit8.text:='合上';
end;
procedure Tqianzhiji.Button6Click(Sender: TObject);
begin
timer3.Enabled := True;
jialiu3:=True;
duanluqi3_dianliu:=0;
Edit10.text:='10KV';
Edit11.text:='19' ;
Edit12.text:='合上';
end;
procedure Tqianzhiji.Timer1Timer(Sender: TObject);
var
str1:string;
begin
if jialiu1 then begin
if edit4.Text='合上' then begin
duanluqi1_dianliu:=duanluqi1_dianliu+1;
str1:=inttostr(duanluqi1_dianliu);
if duanluqi1_dianliu > strtoint(edit13.text) then begin
edit1.text:='0';
Edit4.Text:='断开';
jialiu1:=false;
exit;
end;
end;
end ;
edit1.Text := str1;
end;
procedure Tqianzhiji.Timer2Timer(Sender: TObject);
var
str1:string;
begin
if jialiu2 then begin
if edit8.Text='合上'then begin
duanluqi2_dianliu:=duanluqi2_dianliu+1;
str1:=inttostr(duanluqi2_dianliu);
if duanluqi2_dianliu>strtoint(edit14.text) then begin
edit5.text:='0';
Edit8.Text:='断开';
jialiu2:=false;
exit;
end;
end;
end ;
edit5.Text := str1;
end;
procedure Tqianzhiji.Timer3Timer(Sender: TObject);
var
str1:string;
begin
if jialiu3 then begin
if edit12.Text='合上'then begin
duanluqi3_dianliu:=duanluqi3_dianliu+1;
str1:=inttostr(duanluqi3_dianliu);
if duanluqi3_dianliu>strtoint(edit15.text) then begin
Edit12.Text:='断开';
edit9.text:='0';
jialiu3:=false;
exit;
end;
end;
end;
edit9.Text:= str1;
end;
procedure Tqianzhiji.Button3Click(Sender: TObject);
begin
timer1.Enabled := False;
edit1.text:='0';
edit4.text:='断开';
end;
procedure Tqianzhiji.Button5Click(Sender: TObject);
begin
timer2.Enabled := False;
edit5.text:='0';
edit8.text:='断开';
end;
procedure Tqianzhiji.Button7Click(Sender: TObject);
begin
timer3.Enabled := False;
edit9.text:='0' ;
edit12.text:='断开';
end;
procedure Tqianzhiji.MSComm1Comm(Sender: TObject);
var
ReceBuf:string;
str1:string;
begin
ReceBuf := Trim(MSComm1.Input);
if (ReceBuf='断开') and (ctrl=0)then begin
timer1.Enabled := False;
edit1.text:='0';
edit4.text:='断开';
jialiu1 :=false;
ctrl:=1;
exit;
end;
if (ReceBuf='断开') and (ctrl=1)then begin
timer2.Enabled := False;
edit5.text:='0';
edit8.text:='断开';
jialiu2 :=false;
ctrl:=2;
exit;
end;
if (ReceBuf='断开') and (ctrl=2)then begin
timer3.Enabled := False;
edit9.text:='0';
edit12.text:='断开';
jialiu3 :=false;
ctrl:=0;
exit;
end;
if (ReceBuf='闭合')and (ctrl=0)then begin
timer1.Enabled := True;
// showMessage(ctrl1);
jialiu1:=True;
Edit2.text:='10KV';
Edit3.text:='20';
Edit4.text:='合上';
ctrl:=1 ;
exit;
end;
if (ReceBuf='闭合')and (ctrl=1)then begin
timer2.Enabled := True;
jialiu2:=True;
Edit6.text:='10KV';
Edit7.text:='20';
Edit8.text:='合上';
ctrl:=2;
exit;
end;
if (ReceBuf='闭合')and (ctrl=2)then begin
timer3.Enabled := True;
jialiu3:=True;
Edit10.text:='10KV';
Edit11.text:='20';
Edit12.text:='合上';
ctrl:=0;
exit;
end;
if ReceBuf='set A1' then begin
index:=1;
// timedelay(60);
exit;
end;
if (index=1) and (ReceBuf<>'set A1') and (ReceBuf<>'set A2') and (ReceBuf<>'set A3') and (ReceBuf<>'read D1') and (ReceBuf<>'read D2') and (ReceBuf<>'read D3') then begin
Edit13.text:=ReceBuf;
index:=0;
//---------------
// timedelay(60);
exit;
end;
if ReceBuf='set A2'then begin
index:=2;
// timedelay(60);
exit;
end;
if (index=2) and (ReceBuf<>'set A1') and (ReceBuf<>'set A2') and (ReceBuf<>'set A3') and (ReceBuf<>'read D1') and (ReceBuf<>'read D2') and (ReceBuf<>'read D3')then begin
Edit14.Text:=ReceBuf;
index:=0;
// timedelay(60);
exit;
end ;
if ReceBuf='set A3'then begin
index:=3;
// timedelay(60);
exit;
end;
if (index=3) and (ReceBuf<>'set A1') and (ReceBuf<>'set A2') and (ReceBuf<>'set A3') and (ReceBuf<>'read D1') and (ReceBuf<>'read D2') and (ReceBuf<>'read D3')then begin
Edit15.Text:=ReceBuf;
index:=0;
exit;
end;
if ReceBuf='read D1' then begin
if Edit4.text='断开' then begin
str1:='断路器1:';
MSComm1.Output := str1;
TimeDelay(100);
str1:=edit1.Text; //电流
MSComm1.Output := ' 0';
TimeDelay(100);
str1:=edit2.Text; //电压
MSComm1.Output := ' 0';
TimeDelay(100);
str1:=edit3.Text; //温度
MSComm1.Output := ' 0';
TimeDelay(100);
str1:=edit4.Text; //开关状态
MSComm1.Output := '断开';
TimeDelay(100);
exit;
end
else begin
str1:='断路器1:';
MSComm1.Output := str1;
TimeDelay(100);
str1:=edit1.Text; //电流
MSComm1.Output := str1;
TimeDelay(100);
str1:=edit2.Text; //电压
MSComm1.Output := str1;
// showmessage(str1);
TimeDelay(100);
str1:=edit3.Text; //温度
MSComm1.Output := str1;
TimeDelay(100);;
str1:=edit4.Text; //开关状态
MSComm1.Output := str1;
TimeDelay(100);;
end;
exit;
end;
if ReceBuf='read D2' then begin
if Edit8.text='断开' then begin
str1:='断路器2:';
MSComm1.Output :=str1;
TimeDelay(100);
MSComm1.Output := ' 0';
TimeDelay(100);
MSComm1.Output := ' 0';
TimeDelay(100);
MSComm1.Output := ' 0';
TimeDelay(100);
str1:=edit8.Text; //开关状态
MSComm1.Output := '断开';
TimeDelay(100);
exit;
end
else begin
str1:='断路器2:';
MSComm1.Output := str1;
TimeDelay(100);
str1:=edit5.Text; //dianliu
MSComm1.Output := str1;
TimeDelay(100);
str1:=edit6.Text; //dianya
MSComm1.Output := str1;
// showmessage(str1);
TimeDelay(100);
str1:=edit7.Text; //wendu
MSComm1.Output := str1;
TimeDelay(100);
str1:=edit8.Text; //开关状态
MSComm1.Output := str1;
TimeDelay(100);
end;
exit;
end;
if ReceBuf='read D3' then begin
if Edit12.text='断开' then begin
str1:='断路器3:';
MSComm1.Output := str1;
TimeDelay(100);
MSComm1.Output := ' 0';
TimeDelay(100);
MSComm1.Output := ' 0';
TimeDelay(100);
MSComm1.Output := ' 0';
TimeDelay(100);
str1:=edit12.Text; //开关状态
MSComm1.Output := str1;
TimeDelay(100);
exit;
end
else begin
str1:='断路器3:';
MSComm1.Output := str1;
TimeDelay(100);
str1:=edit9.Text; //dianliu
MSComm1.Output := str1;
TimeDelay(100);
str1:=edit10.Text; //dianya
MSComm1.Output := str1;
TimeDelay(100);
str1:=edit11.Text; //wendu
MSComm1.Output := str1;
TimeDelay(100);
str1:=edit12.Text; //开关状态
MSComm1.Output := str1;
TimeDelay(100);
end;
exit;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -