📄 qzhjunit1.pas
字号:
unit qzhjUnit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, OleCtrls, MSCommLib_TLB, ImgList;
type
Tqianzhiji = class(TForm)
Button1: TButton;
MSComm1: TMSComm;
Timer1: TTimer;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Label4: TLabel;
Label1: TLabel;
Label5: TLabel;
Timer2: TTimer;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure MSComm1Comm(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
isend : boolean;
str : string;
qianzhiji: Tqianzhiji;
Tdushu:array[1..3,1..5,1..3] of 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);
var
I:Integer;
J:Integer;
k:Integer;
begin
edit6.Text:='等待中...';
label5.Caption := Datetostr (Date ());
if Not MSComm1.PortOpen then
begin
MSComm1.PortOpen:=True;
MSComm1.DTREnable:=True;
MSComm1.RTSEnable:=True;
end;
MSComm1.RThreshold := 1;
for I:=1 to 3 do
begin
for J:=1 to 5 do
begin
for K:=1 to 3 do
begin
Tdushu[I][J][K]:=0;
end;
end;
end;
end;
procedure Tqianzhiji.Timer1Timer(Sender: TObject);
var
I:Integer;
J:Integer;
begin
label5.Caption := Datetostr (Date ());
for I:=1 to 3 do
begin
for J:=1 to 5 do
begin
Tdushu[I][J][1]:=Tdushu[I][J][1]+I+(2*J)+1;
Tdushu[I][J][2]:=Tdushu[I][J][2]+I+(3*J)+3;
Tdushu[I][J][3]:=Tdushu[I][J][3]+I+(5*J)-2;
end;
end;
end;
procedure Tqianzhiji.MSComm1Comm(Sender: TObject);
var
ReceBuf:string;
str1:string;
I:Integer;
begin
ReceBuf := Trim(MSComm1.Input);
if ReceBuf='读A栋' then begin
edit6.Text:='发送中...';
str1:='A栋:';
MSComm1.Output := str1;
TimeDelay(500);
for I:=1 to 3 do
begin
Tdushu[1][I][1]:=Tdushu[1][I][1]+I+(5*I)+1;
Tdushu[1][I][2]:=Tdushu[1][I][2]+I+(3*I)+3;
Tdushu[1][I][3]:=Tdushu[1][I][3]+I+(2*I)+1;
edit1.Text:='A';
edit2.Text := inttostr (I);
edit3.Text:=inttostr(Tdushu[1][I][1]);
str1:=edit3.Text; //水表
MSComm1.Output := str1;
TimeDelay(500);
edit4.Text:=inttostr(Tdushu[1][I][2]);
str1:=edit4.Text; //电表
MSComm1.Output := str1;
TimeDelay(500);
edit5.Text:=inttostr(Tdushu[1][I][3]);
str1:=edit5.Text; //煤气表
MSComm1.Output := str1;
TimeDelay(500);
end;
str1 := 'A!';
MSComm1.Output := str1;
TimeDelay(500);
exit;
end;
if ReceBuf='读B栋' then begin
edit6.Text:='发送中...';
str1:='B栋:';
MSComm1.Output := str1;
TimeDelay(500);
for I:=1 to 3 do
begin
Tdushu[1][I][1]:=Tdushu[1][I][1]+I+(4*I)+2;
Tdushu[1][I][2]:=Tdushu[1][I][2]+I+(3*I)+2;
Tdushu[1][I][3]:=Tdushu[1][I][3]+I+(2*I);
edit1.Text:='B';
edit2.Text :=inttostr(I);
edit3.Text:=inttostr(Tdushu[1][I][1]);
str1:=edit3.Text; //水表
MSComm1.Output := str1;
TimeDelay(500);
edit4.Text:=inttostr(Tdushu[1][I][2]);
str1:=edit4.Text; //电表
MSComm1.Output := str1;
TimeDelay(500);
edit5.Text:=inttostr(Tdushu[1][I][3]);
str1:=edit5.Text; //煤气表
MSComm1.Output := str1;
TimeDelay(500);
end;
str1 := 'B!';
MSComm1.Output := str1;
TimeDelay(500);
exit;
end;
if ReceBuf='读C栋' then begin
edit6.Text:='发送中...';
str1:='C栋:';
MSComm1.Output := str1;
TimeDelay(1000);
for I:=1 to 3 do
begin
Tdushu[1][I][1]:=Tdushu[1][I][1]+I+(3*I);
Tdushu[1][I][2]:=Tdushu[1][I][2]+I+(5*I)+2;
Tdushu[1][I][3]:=Tdushu[1][I][3]+I+(2*I)+1;
edit1.Text:='C';
edit2.Text :=inttostr(I);
edit3.Text:=inttostr(Tdushu[1][I][1]);
str1:=edit3.Text; //水表
MSComm1.Output := str1;
TimeDelay(500);
edit4.Text:=inttostr(Tdushu[1][I][2]);
str1:=edit4.Text; //电表
MSComm1.Output := str1;
TimeDelay(500);
edit5.Text:=inttostr(Tdushu[1][I][3]);
str1:=edit5.Text; //煤气表
MSComm1.Output := str1;
TimeDelay(500);
end;
edit1.Text := '0';
edit2.Text := '0';
edit3.Text := '0';
edit4.Text := '0';
edit5.Text := '0';
edit6.Text:='等待中...';
exit;
end;
end;
procedure Tqianzhiji.Timer2Timer(Sender: TObject);
begin
if edit6.Text = '' then
edit6.Text := str
else
begin
str := edit6.Text;
edit6.Text := '';
end
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -