⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 气体渗透率 用于气体渗透率测量控制
💻 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 + -