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

📄 unit1.pas

📁 RS232串口通讯随书源码
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, TComm1;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Edit1: TEdit;
    Check1: TCheckBox;
    Label1: TLabel;
    Timer1: TTimer;
    Button4: TButton;
    Shape1: TShape;
    Shape2: TShape;
    Shape3: TShape;
    Shape4: TShape;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button5: TButton;
    Button6: TButton;
    Label5: TLabel;
    Button7: TButton;
    Comm1: TComm;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Comm1ModemStateChange(Sender: TObject; ModemEvent: Cardinal);
    procedure Comm1ReceiveData(Sender: TObject);
    procedure Button7Click(Sender: TObject);
   private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Comm1.PortOpen :=True;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  TmpStr:String;
  StrLen:Word;
  ByteData:array of Byte;
  i:Integer;
begin
  if Check1.Checked  then
  begin
   SetLength(ByteData,5);
   for i:=0 to 4 do
     ByteData[i]:=55+i*20;
   Comm1.OutputByte(ByteData);
   exit;
  end;
  TmpStr:=memo1.Text + chr(13);
  Comm1.OutputString(TmpStr);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
 tmpArray:array[0..4096] of Byte;
 PT,P1:PByte;
 ArraySize,i: DWORD;
 Count:DWORD;
 tmpStr:string;
 pStr:PChar;
begin
  Comm1.InputLen := StrToInt(Edit1.Text);
  if Check1.Checked  then
  begin
   Memo2.Text:='';
   tmpStr:= Comm1.Input;
   pStr:=PChar(tmpStr);
   Dec(PStr);
   for i:=0 to Length(tmpStr)-1 do
    begin
     inc(PStr);
     tmpArray[i]:=Byte(PSTR^);
     Memo2.Text :=Memo2.Text + IntToStr(Ord(tmpArray[i])) + chr(13) + chr(10);
    end;
   exit;

  {   Count:=Comm1.ReadInputByte(PT);
   //if PT=0 then exit;
   Dec(PT);
   for i:=0 to Count do
    begin
     inc(PT);
     tmpArray[i]:=PT^;
     Memo2.Text :=Memo2.Text + IntToStr(Ord(tmpArray[i])) + chr(13) + chr(10);
    end;
   exit;
   }
  end;

  Memo2.Text :=Comm1.Input;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  Comm1.PortOpen :=False;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if Comm1.PortOpen then
  begin
    if Comm1.CDHolding then
     Shape1.Brush.Color:=clRED
    else
      Shape1.Brush.Color:=clWhite;
    if Comm1.DSRHolding then
     Shape2.Brush.Color:=clRED
    else
      Shape2.Brush.Color:=clWhite;
    if Comm1.RIHolding then
     Shape3.Brush.Color:=clRED
    else
      Shape3.Brush.Color:=clWhite;
    if Comm1.CTSHolding then
     Shape4.Brush.Color:=clRED
    else
      Shape4.Brush.Color:=clWhite;
  end;

end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  Comm1.DTREnabled :=not Comm1.DTREnabled ;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
  Comm1.RTSEnabled  := not Comm1.RTSEnabled ;
end;

procedure TForm1.Comm1ModemStateChange(Sender: TObject;
  ModemEvent: Cardinal);
begin
  Label5.Caption:='Modem='+ IntToStr(ModemEvent);
end;



procedure TForm1.Comm1ReceiveData(Sender: TObject);
begin
    Memo2.Text :=Memo2.Text + Comm1.Input;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  Close;
end;

end.

⌨️ 快捷键说明

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