📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, MSCommLib_TLB, Buttons, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
GroupBox1: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Edit7: TEdit;
Label15: TLabel;
Timer1: TTimer;
BitBtn1: TBitBtn;
MSComm1: TMSComm;
BitBtn2: TBitBtn;
Label16: TLabel;
Edit8: TEdit;
Label17: TLabel;
Edit9: TEdit;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn2Click(Sender: TObject);
procedure Edit8Exit(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
editss:array[1..4] of string;
Function HextoInt(HexChar: string): Integer;
begin
if HexChar='0' then Result:=0
else if HexChar='1' then Result:=1
else if HexChar='2' then Result:=2
else if HexChar='3' then Result:=3
else if HexChar='4' then Result:=4
else if HexChar='5' then Result:=5
else if HexChar='6' then Result:=6
else if HexChar='7' then Result:=7
else if HexChar='8' then Result:=8
else if HexChar='9' then Result:=9
else if HexChar='A' then Result:=10
else if HexChar='B' then Result:=11
else if HexChar='C' then Result:=12
else if HexChar='D' then Result:=13
else if HexChar='E' then Result:=14
else if HexChar='F' then Result:=15
else ShowMessage('仪表返回数据有误!');
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
R: string;
posint: integer;
y,t: real;
{i,j: integer;
R1:string;
Result:real;
LH,LL,HH,HL,Dot:string;}
begin
mscomm1.Output := 'SDR00<CR><LF>';
If MSComm1.InBufferCount>=10 then
R:= mscomm1.Input;
posint :=Pos('.', R);
edit9.Text :=copy(R,posint-1,5);
t:= strtofloat(edit9.Text );
y:=t*1000;
edit6.Text := formatfloat('0.00',y);
{ MSComm1.Output:=#64'01RD'#49#55#13;
sleep(50);
If MSComm1.InBufferCount>=13
Then R1:=MSComm1.Input;
LH:=Copy(R1,8,1);
LL:=Copy(R1,9,1);
HH:=Copy(R1,10,1);
HL:=Copy(R1,11,1);
Dot:=Copy(R1,13,1);
j:=HextoInt(HH);
if j<8 then result:=HextoInt(HH)*4096+HextoInt(HL)*256+HextoInt(LH)*16+HextoInt(LL)
else result:=((-1)* HextoInt(HL)*256+HextoInt(LH)*16+HextoInt(LL));
for i:=1 to HextoInt(Dot) do result:=result/10;
Edit6.Text:=formatfloat('0.000',result);}
end;
procedure TForm1.FormCreate(Sender: TObject);
var
mytextfile:textfile;
//s:string;
s:array[1..4] of string;
i:integer;
begin
if mscomm1.PortOpen = false then
mscomm1.PortOpen := true;
mscomm1.InBufferCount :=0;
mscomm1.OutBufferCount :=0;
reset(mytextfile,'mytextfile.text');
while not eof(mytextfile) do
begin
for i:=1 to 4 do
begin
readln(mytextfile,s[i]);
editss[i]:=s[i];
//writeln(mytextfile,s[i]);
end;
end;
//finally
closefile(mytextfile);
edit1.Text :=editss[1];
edit2.Text :=editss[2];
edit3.Text :=editss[3];
edit8.Text :=editss[4];
sleep(500);
//timer1.Enabled := true;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
mytextfile:textfile;
s:array[1..4] of string;
i:integer;
d,l,q,u,p0,p,stl: real;
begin
editss[1]:=edit1.Text ;
editss[2]:=edit2.Text ;
editss[3]:=edit3.Text ;
editss[4]:=edit8.Text ;
Assignfile(mytextfile,'mytextfile.text');
rewrite(mytextfile);
try
for i:=1 to 4 do
begin
s[i]:=editss[i];
writeln(mytextfile,s[i]);
end;
finally
closefile(mytextfile);
end;
d:= strtofloat(edit2.Text );
l:= strtofloat(edit1.Text );
q:= strtofloat(edit6.Text );
u:= strtofloat(edit5.Text );
p0:= strtofloat(edit3.Text );
p:= strtofloat(edit4.Text );
stl:= 800*p0*q*u*l/3.14159/d/d/p/(p+2*p0)/60;
edit7.Text := formatfloat('0.000',stl);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
mscomm1.PortOpen := false;
timer1.Enabled := false;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Edit8Exit(Sender: TObject);
var tempvis: real;
temprature:real;
begin
temprature := strtofloat(edit8.text);
tempvis:= 0.00005*temprature+0.01709;
edit5.text := formatfloat('0.00000',tempvis);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -