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

📄 setcomm.pas

📁 Delphi 7 串口通讯程序
💻 PAS
字号:
unit setcomm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,SPComm, Buttons, XPMenu;

type
  TFsetcom = class(TForm)
    Comsele: TComboBox;
    Label1: TLabel;
    comrate: TComboBox;
    Label2: TLabel;
    Combyte: TComboBox;
    Label3: TLabel;
    Comstop: TComboBox;
    Label4: TLabel;
    Comparity: TComboBox;
    Label5: TLabel;
    Bsetok: TBitBtn;
    BCancel: TBitBtn;
    Bevel1: TBevel;
    XPMenu1: TXPMenu;
    procedure FormActivate(Sender: TObject);
    procedure BCancelClick(Sender: TObject);
    procedure BsetokClick(Sender: TObject);
    procedure ComseleChange(Sender: TObject);
    procedure comrateChange(Sender: TObject);
    procedure CombyteChange(Sender: TObject);
    procedure ComstopChange(Sender: TObject);
    procedure ComparityChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
TCommSet=record
CommName:string;
BaudRate:DWORD;
ByteSize:TByteSize;
StopBits:TStopBits;
Parity:TParity;
end;
var
  Fsetcom: TFsetcom;
  CommSet:TCommSet;
  procedure initialize_comm();
  procedure Error(str:longint);
  function Tostr():string;
  procedure write_set();
  procedure read_set();
implementation

uses main;

{$R *.dfm}

procedure Error(str:longint);
begin
end;
procedure read_set();
begin 
         CommSet.CommName:=fmain.Comm1.CommName;
         CommSet.BaudRate:=fmain.Comm1.BaudRate;
         CommSet.ByteSize := fmain.Comm1.ByteSize;
         CommSet.StopBits:= fmain.Comm1.StopBits;
         CommSet.Parity :=fmain.Comm1.Parity;
end;
function Tostr():string;
var tmpstr:string;
const spacestr:string='       ';
begin
tmpstr:=tmpstr+'串口:'+commset.CommName+'  传输数率:'+inttostr(commset.BaudRate)+'波特';
tmpstr:=tmpstr+spacestr;
 case Commset.ByteSize of
               _8:tmpstr:=tmpstr+'数据位:8 数据位';
               _7:tmpstr:=tmpstr+'数据位:7 数据位';
               _6:tmpstr:=tmpstr+'数据位:6 数据位';
               _5:tmpstr:=tmpstr+'数据位:5 数据位'
        else
                Error($171);
        end;
tmpstr:=tmpstr+spacestr;
 case Commset.StopBits of
                _1:tmpstr:=tmpstr+'停止位:1 位停止位';
                _1_5:tmpstr:=tmpstr+'停止位:1.5 位停止位';
                _2:tmpstr:=tmpstr+'停止位:2 位停止位';
        else
                Error($172);
        end;
tmpstr:=tmpstr+spacestr;
 case Commset.Parity of
                None:tmpstr:=tmpstr+'奇偶校验:无校验';
                Odd:tmpstr:=tmpstr+'奇偶校验:奇校验';
                Even:tmpstr:=tmpstr+'奇偶校验:偶校验';
                Mark:tmpstr:=tmpstr+'奇偶校验:标记';
                Space:tmpstr:=tmpstr+'奇偶校验:空格';
        else
                Error($173);
        end;    
result:=tmpstr;
end;
procedure write_set();
begin
         fmain.Comm1.CommName:=CommSet.CommName;
         fmain.Comm1.BaudRate:=CommSet.BaudRate;
         fmain.Comm1.ByteSize := CommSet.ByteSize;
         fmain.Comm1.StopBits:= CommSet.StopBits;
         fmain.Comm1.Parity:=CommSet.Parity;
end;
procedure initialize_comm();
var i:byte;
begin
read_set();
with Fsetcom do
begin
        comsele.Items.Clear;
        for i:=1 to 128 do
                begin
                        fmain.comm1.StopComm;
                        try
                        fmain.comm1.CommName:='com'+inttostr(i);
                        fmain.comm1.StartComm;
                        comsele.Items.Add(fmain.comm1.CommName);
                        except;
                        end;
                end;
          comsele.ItemIndex:=0;
        end;
end;
procedure TFsetcom.FormActivate(Sender: TObject);
begin
initialize_comm();
end;

procedure TFsetcom.BCancelClick(Sender: TObject);
begin
close;
end;

procedure TFsetcom.BsetokClick(Sender: TObject);
begin
write_set();
close;
end;

procedure TFsetcom.ComseleChange(Sender: TObject);
begin
//串口名字
CommSet.CommName:=Comsele.Text;
end;

procedure TFsetcom.comrateChange(Sender: TObject);
begin
//传输数率
Commset.BaudRate:=strtoint(comrate.Text);
end;

procedure TFsetcom.CombyteChange(Sender: TObject);
begin
//数据位设置
        case combyte.ItemIndex of
                -1,0:Commset.ByteSize:=_8;
                1:CommSet.ByteSize:=_7;
                2:CommSet.ByteSize:=_6;
                3:CommSet.ByteSize:=_5
        else
                Error($131);
        end;

end;

procedure TFsetcom.ComstopChange(Sender: TObject);
begin
//停止位设置
        case comstop.ItemIndex of
                -1,0:Commset.StopBits:=_1;
                1:CommSet.StopBits:=_1_5;
                2:CommSet.StopBits:=_2;
        else
                Error($132);
        end;
end;

procedure TFsetcom.ComparityChange(Sender: TObject);
begin
//校验
        case ComParity.ItemIndex of
                -1,0:Commset.Parity:=None;
                1:CommSet.Parity:=Odd;
                2:CommSet.Parity:=Even;
                3:CommSet.Parity:=Mark;
                4:CommSet.Parity:=Space
        else
                Error($133);
        end;
end;

procedure TFsetcom.FormCreate(Sender: TObject);
begin
read_set();
end;

end.

⌨️ 快捷键说明

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