zoukankan      html  css  js  c++  java
  • 使用短信控件的一个简单示例

    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.

  • 相关阅读:
    CCF计算机职业资格认证考试 201809-2 买菜
    【CodeVS3013】单词背诵
    【CodeVS3304】水果姐逛水果街Ⅰ
    【CodeVS4246】奶牛的身高
    【hdu1247】Hat’s Words
    【CodeVS4189】字典
    【CodeVS4244】平衡树练习
    【poj3264】Balanced Lineup
    【树状数组】
    【CodeVS1163】访问艺术馆
  • 原文地址:https://www.cnblogs.com/GarfieldTom/p/1428758.html
Copyright © 2011-2022 走看看