📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, TComm1, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
mReceive: TMemo;
Button1: TButton;
Button2: TButton;
rdCOM: TRadioGroup;
Button4: TButton;
Comm1: TComm;
Label4: TLabel;
txtVoltage: TEdit;
txtCmd: TEdit;
Button3: TButton;
procedure Button4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
PowerDelay:Integer;
Procedure TimeDelay(DT:DWORD);
implementation
{$R *.DFM}
//以下是延迟函数,单位毫秒
Procedure TimeDelay(DT:DWORD);
var
TT:DWORD;
begin
//取得现在的Tick值
TT:=GetTickCount();
//计算Tick差值是否超过设置值
while GetTickCount()-TT<DT do
Application.ProcessMessages; //释放控制权
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
//确定使用的通信端口号码
if rdCOM.ItemIndex =0 then
Comm1.CommPort := pnCOM1
else
Comm1.CommPort := pnCOM2;
//打开通信端口
Comm1.PortOpen := True;
Button1.Enabled := True;
Button3.Enabled := True;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Buf : String;
BufLen,i : Integer;
begin
PowerDelay := 50; //延迟设置
Buf := (txtCmd.Text); //命令字符串指定
BufLen := Length(Buf); //取得长度
//每个字符分别送出
For i := 1 To BufLen do
begin
Comm1.OutputString(Copy(Buf,i,1));
TimeDelay(PowerDelay);
end;
//送出结尾字符
Comm1.OutputString( Chr(13));
TimeDelay(100);
//取得执行结果
mReceive.Text := Comm1.Input;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
PowerDelay,i,Code:Integer;
SetVoltage:Single;
Buf : String;
BufLen : Integer;
begin
PowerDelay := 50; //设置延迟时间
//转换字符串为数值
Val(txtVoltage.Text,SetVoltage ,Code);
//若数值为0,表示重设
If SetVoltage = 0 Then
begin
Comm1.OutputString('C');TimeDelay (PowerDelay);
Comm1.OutputString('H'); TimeDelay (PowerDelay);
Comm1.OutputString('A'); TimeDelay (PowerDelay);
Comm1.OutputString('N'); TimeDelay (PowerDelay);
Comm1.OutputString('1'); TimeDelay (PowerDelay);
Comm1.OutputString(Chr(13));
TimeDelay(100);
Comm1.OutputString('O'); TimeDelay (PowerDelay);
Comm1.OutputString('U'); TimeDelay (PowerDelay);
Comm1.OutputString('T'); TimeDelay (PowerDelay);
Comm1.OutputString('0'); TimeDelay (PowerDelay);
Comm1.OutputString(Chr(13));
TimeDelay(300);
mReceive.Text := Comm1.Input ;
Exit;
End;
//以下仅设置第一个波道
//每个字符均分别送出
Comm1.OutputString('C'); TimeDelay (PowerDelay);
Comm1.OutputString('H'); TimeDelay (PowerDelay);
Comm1.OutputString('A'); TimeDelay (PowerDelay);
Comm1.OutputString('N'); TimeDelay (PowerDelay);
Comm1.OutputString('1'); TimeDelay (PowerDelay);
Comm1.OutputString(Chr(13));
TimeDelay(100);
mReceive.Text := mReceive.Text + Comm1.Input ;
Buf := FormatFloat('00.00',SetVoltage);
Buf := 'VSET1 ' + Buf + Chr(13);
BufLen := Length(Buf);
//TimeDelay(300);
For i := 1 To BufLen do
begin
Comm1.OutputString(Copy(Buf,i,1));
TimeDelay (PowerDelay);
end;
TimeDelay(300);
//取得结果
mReceive.Text := mReceive.Text + Comm1.Input ;
Comm1.OutputString('O'); TimeDelay (PowerDelay);
Comm1.OutputString('U'); TimeDelay (PowerDelay);
Comm1.OutputString('T'); TimeDelay (PowerDelay);
Comm1.OutputString('1'); TimeDelay (PowerDelay);
Comm1.OutputString(Chr(13));
TimeDelay(300);
//取得结果
mReceive.Text := mReceive.Text + Comm1.Input ;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//结束程序
Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -