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

📄 unit1.pas

📁 DELPHI温控采集,曲线图绘制河温度控制的示例代码。
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, SPComm, ComCtrls, TeEngine, Series, ExtCtrls,
  TeeProcs, Chart, CheckLst;

type
  TForm1 = class(TForm)
    Comm1: TComm;
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Timer1: TTimer;
    Chart1: TChart;
    Label5: TLabel;
    Series1: TFastLineSeries;
    memo1: TMemo;
    Button3: TButton;
    Label6: TLabel;
    Button4: TButton;
    StatusBar1: TStatusBar;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
      BufferLength: Word);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  s1,shu1,shu2,shu3,shu4:string;
  k1,k2,k3,k4,k5,k6,k7,k8,t1,t2,t3,t4:integer;
  k0:double;
  buf:array[1..16]of byte;
implementation

{$R *.dfm}
function hextoint(s:string):dword;
var
r,k:dword;
hexch:string;
c,d:byte;
n:byte;
ch:char;
begin
hexch:='0123456789ABCDEF';
k:=1;r:=0;
for c:=length(s) downto 1 do
begin
ch:=s[c];n:=0;
for d:=0 to 16 do
if upcase(ch)=hexch[d] then
n:=d-1;
r:=r+n*k;
if c>1 then
k:=k*16;
end;
result:=r;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
comm1.StartComm;
button2.Enabled :=true;
button1.Enabled:=false;
statusbar1.Panels[3].Text:=comm1.Name+'已打开';
statusbar1.Refresh;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
comm1.StopComm;
button1.Enabled:=true;
button2.Enabled:=false;
statusbar1.Panels[3].Text:=comm1.Name+'已关闭';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
button2.Enabled:=false;
timer1.Enabled:=false;
statusbar1.Panels[2].Text:=datetimetostr(now);
statusbar1.Panels[0].Text:=form1.Caption;
statusbar1.Refresh;
end;

procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
  var
  k:integer;
  viewstring:string;
  strRecv:string;

begin
sleep(100);
viewstring:='';
setlength(strRecv,bufferlength);
move(Buffer^,pchar(@buf)^,Bufferlength);
 for k:=1 to bufferlength do
viewstring:=viewstring+inttohex(buf[k],2)+'';
  viewstring:='接收'+viewstring;
  memo1.lines.add(viewstring);
  memo1.lines.add('');

shu1:=inttohex(buf[1],2);
label1.Caption:=shu1;
t1:=buf[1];
t2:=buf[2];
t3:=buf[3];
t4:=buf[4];
edit1.Text:=inttostr(t3)+inttostr(t2)+'.'+inttostr(t1);//++'.'+inttostr(t4);
k0:=t3*10+t2+t1*0.1;
k1:=t3*10+t2;
//k2:=strtoint(edit2.Text);
//k3:=strtoint(edit3.Text);

//begin
//if k1>k2   then
//shape1.Brush.Color:=clred;
// shape1.Brush.Color:=clgreen;
//end;
//begin
//if k1<k3 then
//shape1.Brush.Color:=clred;

//end;
//shape1.Brush.Color:=clgreen;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
comm1.StopComm;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
chart1.Series[0].Add(k0);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -