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

📄 mainfrm.pas

📁 用串口通信的方式实现双机备份
💻 PAS
字号:
{*******************************************************}
{                                                       }
{       CommSend                                        }
{       Date: 2003-12-25  Owner: Han Deyu               }
{                                                       }
{       Copyright (c) 2003, NanJing lopu Corporation    }
{                                                       }
{                                                       }
{                                                       }
{*******************************************************}
unit MainFrm;
//protocol:9600,n,8,1
//comm port:default comm port 1 ,if have any question it
//will use comm port 2 automatically.
//timer1's interval is 10s
//send 01 or 02
interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  OleCtrls, MSCommLib_TLB, ExtCtrls, StdCtrls, Inifiles, Buttons, jpeg;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Edit1: TEdit;
    Button3: TButton;
    Image1: TImage;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    MSComm: TMSComm;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Timer1Timer(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
const
  Title='双机热备份控制器   ';
var
  Form1: TForm1;
  A    : Variant;
  FlagIni: TInifile;
implementation

{$R *.DFM}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if MSComm.PortOpen then MSComm.PortOpen := False;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin

   try
        MSComm.Output := A;
        Caption := Title + '写串口正确';
      except  Caption := Title + '写串口错,请再试一次!';
      end;  //end try
end;




procedure TForm1.Button3Click(Sender: TObject);
begin
  Timer1.Enabled := False;
  MsComm.PortOpen := False;
  MsComm.PortOpen := True;
  try
    MsComm.Output := Edit1.Text;
  except
    Caption := Title + '手动发送错误!';
  end;
  
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  MSComm.Settings := '9600,n,8,1';
  MSComm._CommPort := 1;
  if not MSComm.PortOpen then MSComm.PortOpen := true;
  if MSComm.PortOpen then Caption := Title + 'Com1 OK'
  else begin
    MSComm._CommPort := 2;
    MSComm.PortOpen := true;
    if MSComm.PortOpen then Caption := Title + 'Com2 OK'
    else Caption  := Title + 'Com Error'
  end;
  A := VarArrayCreate([0,1],VarByte);
  A[0] := Byte($01);
  A[1] := Byte($01);
  if MSComm.PortOpen then Timer1.Enabled := True;
  SpeedButton1.Enabled := False;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  SpeedButton1.Enabled := False;
  SpeedButton2.Enabled := True;
  Timer1.Enabled := False;
  MsComm.PortOpen := False;
  A := VarArrayCreate([0,1],VarByte);
  A[0] := Byte($01);
  A[1] := Byte($01);
  MsComm.PortOpen := True;
  Timer1.Enabled := True;
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
  SpeedButton1.Enabled := True;
  SpeedButton2.Enabled := False;
  Timer1.Enabled := False;
  MsComm.PortOpen := False;
  A := VarArrayCreate([0,1],VarByte);
  A[0] := Byte($01);
  A[1] := Byte($02);
  MsComm.PortOpen := True;
  Timer1.Enabled := True;
end;

end.

⌨️ 快捷键说明

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