📄 unit1.~pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, TComm1;
type
TForm1 = class(TForm)
mCmd: TMemo;
mReceive: TMemo;
Label1: TLabel;
Label2: TLabel;
Comm1: TComm;
Timer1: TTimer;
txtNowValue: TEdit;
Label3: TLabel;
Button1: TButton;
Button2: TButton;
rdCOM: TRadioGroup;
Button4: TButton;
procedure Button4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
CmdFlag : Boolean;
Procedure TimeDelay(DT:DWORD);
implementation
{$R *.DFM}
procedure TForm1.Button4Click(Sender: TObject);
begin
//确定使用的通信端口号码
if rdCOM.ItemIndex =0 then
Comm1.CommPort := pnCOM1
else
Comm1.CommPort := pnCOM2;
//打开通信端口
Comm1.PortOpen := True;
Timer1.Enabled := True; //激活定时器
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//激活命令标志
CmdFlag := True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
Buf : String;
Pos1,Pos2:Integer;
begin
//若命令标志激活,则执行以下的程序
if CmdFlag then
begin
//将命令区中的命令送出
Comm1.OutputString(mCmd.Text + Chr(10) );
TimeDelay(300); //延迟一下
//接收结果
mReceive.Text := Comm1.Input;
CmdFlag := False; //标志取消
end;
//不断送出读值的命令
Comm1.OutputString(':M_D:C_D?'+ Chr(10)+Chr(13));
TimeDelay(300);
Buf := Comm1.Input ;
//判断DATA字符串的位罝
Pos1 := Pos('DATA',Buf);
//判断逗号的位置
Pos2 := Pos(',',Buf);
//二个位置的中间就是数值的范围
if (Pos1>0) and (Pos2>0) then
txtNowValue.Text := Copy(Buf,Pos1+4,Pos2-(Pos1+4));
end;
//以下是延迟函数,单位毫秒
Procedure TimeDelay(DT:DWORD);
var
TT:DWORD;
begin
//取得现在的Tick值
TT:=GetTickCount();
//计算Tick差值是否超过设置值
while GetTickCount()-TT<DT do
Application.ProcessMessages; //释放控制权
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//结束程序
Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -