您的位置:首页 > 其它

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

2009-04-03 10:48 435 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: