• 使用短信控件的一个简单示例


    unit FfrmMain;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls,FSMSThread, OoMisc,
      AdPort;

    type
      TfrmMain = class(TForm)
        btnOpenComm: TButton;
        btnSendSMS: TButton;
        btnCloseComm: TButton;
        Label6: TLabel;
        edtPhone: TEdit;
        Label7: TLabel;
        edtSMS: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        cmbComm: TComboBox;
        Label3: TLabel;
        edtATCommand: TEdit;
        btnSendATCommand: TButton;
        cmbSMSCenter: TComboBox;
        cmbBaudRate: TComboBox;
        Label4: TLabel;
        Button2: TButton;
        Button3: TButton;
        chkOpenSendQueue: TCheckBox;
        Button4: TButton;
        Button5: TButton;
        Button1: TButton;
        Button6: TButton;
        Button7: TButton;
        Panel1: TPanel;
        memResponses: TMemo;
        memReceive: TMemo;
        Splitter1: TSplitter;
        Label5: TLabel;
        Label8: TLabel;
        Label9: TLabel;
        procedure btnOpenCommClick(Sender: TObject);
        procedure btnCloseCommClick(Sender: TObject);
        procedure btnSendSMSClick(Sender: TObject);
        procedure CommSMSReceiveData(StrReceive:String);
        procedure btnSendATCommandClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure chkOpenSendQueueClick(Sender: TObject);
        procedure Button5Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure ASMSSMSSendOKEvent(ID: Integer);
        procedure ASMSSendErrorEvent(ID: Integer);
        procedure ASMSSMSNewEvent(ID: Integer);
        procedure ASMSSMSNewMsgEvent(PhoneNO, Msg, MsgTime: String);
        procedure Button1Click(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure SMSResult(ID:Integer;R:Boolean);
        procedure SMSExcuteCommandResultEvent(Command:String;ReturnMsg:String;ExcuteResult:Boolean);
        procedure Button6Click(Sender: TObject);
        procedure Button7Click(Sender: TObject);
      private
        { Private declarations }
        SMS:TSMSThread;
        procedure ExcuteResult(Command, ReturnMsg: String;
          ExcuteResult: Boolean);
         procedure NewMsg(PhoneNO,Msg,MsgTime:String);
        procedure ReceiveData(StrReceive:String);
       public
        { Public declarations }
      end;

    var
      frmMain: TfrmMain;

    implementation

    {$R *.dfm}

    procedure TfrmMain.btnOpenCommClick(Sender: TObject);
    begin
      //********************************************
      //设置端口参数
      //********************************************

      SMS.SetComNum(strtoint(cmbComm.Text));
      SMS.SetBaud(strtoint(cmbBaudRate.text));
      SMS.SetAutoOpen(True);
      SMS.AutoDeleteMsg :=False;
      SMS.TimeoutCount:=100;
      SMS.EnableTimeOut :=True;
      SMS.CheckCommandTime :=1000;

      SMS.SMSCenterNO :=cmbSMSCenter.Text;
      SMS.OpenComm;
      //ASMS.Open :=True;

      SMS.InitSMS;
    end;

    procedure TfrmMain.btnCloseCommClick(Sender: TObject);
    begin
      //********************************************
      //关闭端口
      //********************************************
      //停止线程
      SMS.Suspend;
      //关闭端口
      SMS.CloseComm;
    end;

    procedure TfrmMain.btnSendSMSClick(Sender: TObject);
    begin
      if SMS.SendSMS(edtPhone.Text,edtSMS.Text) then
        memResponses.Lines.Add('发送短信成功')
      else
        memResponses.Lines.Add('发送短信失败');
    //  ASMS.SendSMS(edtPhone.Text,edtSMS.Text+'3');
    end;

    procedure TfrmMain.CommSMSReceiveData(StrReceive:String);
    begin
      //memResponses.Lines.Add('*收到数据................................................................*');
      memResponses.Lines.Add(StrReceive);
    end;

    procedure TfrmMain.btnSendATCommandClick(Sender: TObject);
    var
      s:String;
    begin
      SMS.ExcuteCommand(edtATCommand.Text+#13,s);
    end;

    procedure TfrmMain.FormCreate(Sender: TObject);
    begin
      SMS:=TSMSThread.Create(False);
      SMS.OnExcuteCommandEvent :=ExcuteResult;
      SMS.OnSMSNewMsgEvent :=NewMsg;
      SMS.OnReceiveData := ReceiveData;
      SMS.TimeoutCount:=100;
    end;

    procedure TfrmMain.Button2Click(Sender: TObject);
    begin
      frmMain.memResponses.Lines.Add('队列中待发短信的数量为:'+inttostr(SMS.GetSendQueueCount));
    end;

    procedure TfrmMain.Button3Click(Sender: TObject);
    begin
      SMS.PushSMS(10,edtPhone.Text,edtSMS.Text,Time);
    end;

    procedure TfrmMain.chkOpenSendQueueClick(Sender: TObject);
    begin
      SMS.SetOpenProcess(chkOpenSendQueue.Checked );
    end;

    procedure TfrmMain.Button5Click(Sender: TObject);
    begin
      frmMain.memResponses.Lines.Add('队列中待发命令的数量为:'+inttostr(SMS.GetCommandQueueCount));
    end;

    procedure TfrmMain.Button4Click(Sender: TObject);
    begin
      SMS.PushCommand(edtATCommand.text+#13);
    end;

    procedure TfrmMain.ASMSSMSSendOKEvent(ID: Integer);
    begin
      frmMain.memResponses.Lines.Add(inttostr(ID)+'短信发送成功!');
    end;

    procedure TfrmMain.ASMSSMSNewEvent(ID: Integer);
    begin
      frmMain.memResponses.Lines.Add('新收到位置为'+inttostr(ID)+'的短信!');
    end;

    procedure TfrmMain.ASMSSMSNewMsgEvent(PhoneNO, Msg, MsgTime: String);
    begin
       frmMain.memResponses.Lines.Add('收到短信:[PhoneNO]:'+PhoneNO+'[Msg]:'+Msg+'[MsgTime]:'+MsgTime);
    end;

    procedure TfrmMain.Button1Click(Sender: TObject);
    begin
      SMS.InitSMS;
    end;

    procedure TfrmMain.FormDestroy(Sender: TObject);
    begin
      SMS.Terminate;
    //  SMS
    end;

    procedure TfrmMain.SMSExcuteCommandResultEvent(Command:String;ReturnMsg:String;ExcuteResult:Boolean);
    begin
      memResponses.Lines.Add('命令'+Command+'执行结果为:'+ReturnMsg+' 成败标志:'+inttostr(ord(ExcuteResult)));
    end;

    procedure TfrmMain.ASMSSendErrorEvent(ID: Integer);
    begin
      frmMain.memResponses.Lines.Add(inttostr(ID)+'短信发送失败!');
    end;

    procedure TfrmMain.ExcuteResult(Command, ReturnMsg: String;
      ExcuteResult: Boolean);
    begin
    if ExcuteResult then
        memResponses.Lines.Add('命令'+Command+'执行成功,返回结果为:'#13#10+ReturnMsg)
      else
        memResponses.Lines.Add('命令'+Command+'执行失败,返回结果为:'#13#10+ReturnMsg);
    end;

    procedure TfrmMain.SMSResult(ID: Integer; R: Boolean);
    begin
      memResponses.Lines.Add(inttostr(id)+'发送结果为:'+inttostr(ord(r)));
    end;

    procedure TfrmMain.Button6Click(Sender: TObject);
    begin
      SMS.CloseComm;
      SMS.Terminate;
      close;
      Application.Terminate;
    end;

    procedure TfrmMain.Button7Click(Sender: TObject);
    begin
      memResponses.Clear;
      memReceive.Clear;
    end;

    procedure TfrmMain.NewMsg(PhoneNO, Msg, MsgTime: String);
    begin
      memResponses.Lines.Add('收到短信'+PhoneNO+Msg+MsgTime);
    end;

    procedure TfrmMain.ReceiveData(StrReceive: String);
    begin
      memReceive.Text :=memReceive.Text +StrReceive;
    end;

    end.

  • 相关阅读:
    PowerDesigner 取消 Name 和 Code 的同步
    租赁内含利率、增量借款利率
    投资收益月末结转
    产品保修费计入哪里
    投资收益
    投资性房地产成本模式转为公允价值模式
    公允价值变动计入所得税费用还是其他综合收益
    所得税费用
    什么是预算会计
    产品质量保证费纳入应纳税所得额吗
  • 原文地址:https://www.cnblogs.com/GarfieldTom/p/1428758.html
Copyright © 2020-2023  润新知