📄 unit1.~pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, TComm1;
type
TForm1 = class(TForm)
Label1: TLabel;
Label3: TLabel;
txtInput: TEdit;
cmdCalc: TButton;
cmdClose: TButton;
Comm1: TComm;
mReceive: TMemo;
cmdClearCom: TButton;
cmdReceive: TButton;
procedure cmdCalcClick(Sender: TObject);
procedure cmdClearComClick(Sender: TObject);
procedure cmdReceiveClick(Sender: TObject);
procedure cmdCloseClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Procedure TimeDelay(DT:DWORD);//延迟函数
implementation
{$R *.DFM}
//以下程序将字符串中的字符送出
procedure TForm1.cmdCalcClick(Sender: TObject);
var
InputStr:String;
begin
//命令指定,并加上结尾字符Cr
InputStr:=Trim(txtInput.Text) + Chr(13);
Comm1.OutputString(InputStr);//送出数据
end;
//结束程序
procedure TForm1.cmdCloseClick(Sender: TObject);
begin
Close;
end;
//以下是延迟函数,单位毫秒
Procedure TimeDelay(DT:DWORD);
var
TT:DWORD;
begin
//取得现在的Tick值
TT:=GetTickCount();
//计算Tick差值是否超过设置值
while GetTickCount()-TT<DT do
Application.ProcessMessages; //释放控制权
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//打开通信端口
Comm1.PortOpen := True;
end;
//清除接收缓冲区
procedure TForm1.cmdClearComClick(Sender: TObject);
begin
Comm1.DataCount :=0;
end;
//接收串行端口数据
procedure TForm1.cmdReceiveClick(Sender: TObject);
var
Buf:String;
DotPos:Integer;
ReceiveStr:String;
begin
ReceiveStr := Trim(Comm1.Input);
//结尾字符是否已返回
If Pos('!',ReceiveStr) < 1 Then
Exit
Else
begin
Repeat
//检查逗号的位置
DotPos := Pos(',',ReceiveStr);
//数据放进Memo
mReceive.Text := mReceive.Text + Copy(ReceiveStr,1,DotPos-1) +Chr(13) + Chr(10);
//留下未处理的数据
ReceiveStr := Copy(ReceiveStr,DotPos+1,Length(ReceiveStr)-DotPos);
until DotPos=0; //直到找不到逗号
ReceiveStr := '';
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -