?? ufmain.pas
字號:
unit UFMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Menus, ExtCtrls, ComCtrls, ToolWin;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
StatusBar1: TStatusBar;
GroupBox2: TGroupBox;
Label3: TLabel;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Memo1: TMemo;
Edit1: TEdit;
Memo2: TMemo;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Timer1: TTimer;
procedure N4Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses
UFHelp, UFConfig, USMS;
{$R *.dfm}
procedure TForm1.N4Click(Sender: TObject);
begin
Form1.Close;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
Form2.Show;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
Form3.Show;
end;
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = Word(#13) then
begin
BitBtn1.Click;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Caption := Application.Title;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
if Timer1.Interval <> (SMS.SMSSet.ChkMsgDelay*1000) then
begin
Timer1.Interval := SMS.SMSSet.ChkMsgDelay*1000;
end;
if not SMS.SComm.m_Opened then
begin
Memo1.Lines.Add('初始化失敗,程序無法運行!');
Memo1.Enabled := FALSE;
Memo2.Enabled := FALSE;
Edit1.Enabled := FALSE;
BitBtn1.Enabled := FALSE;
BitBtn2.Enabled := FALSE;
end else
begin
Memo1.Lines.Clear;
Memo1.Enabled := TRUE;
Memo2.Enabled := TRUE;
Edit1.Enabled := TRUE;
BitBtn1.Enabled := TRUE;
BitBtn2.Enabled := TRUE;
end;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Memo1.Lines.Clear;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
smsBuf:string;
Mobile:string;
begin
BitBtn1.Enabled := FALSE;
if SMS.SComm.m_Opened then
begin
Mobile := '86'+Edit1.Text;
if length(Mobile) <> 13 then
begin
if Mobile = '86' then
MessageDlg('請輸入手機號碼!',mtInformation,[mbOk],0)
else
MessageDlg('手機號碼不正確!',mtInformation,[mbOk],0);
BitBtn1.Enabled := TRUE;
exit;
end;
smsBuf := Memo1.Lines.GetText;
if (length(smsBuf) > 70) and (SMS.SMSSet.SMSMode = 'PDU')
or (length(smsBuf) >140) and (SMS.SMSSet.SMSMode ='Text') then
begin
MessageDlg('短消息內容太長!',mtInformation,[mbOk],0);
BitBtn1.Enabled := TRUE;
exit;
end;
if smsBuf = '' then
begin
MessageDlg('請輸入發送內容!',mtInformation,[mbOk],0);
Memo1.Lines.Clear;
BitBtn1.Enabled := TRUE;
exit;
end;
while SMS.Busy do;
SMS.Busy := TRUE;
if SMS.SendSMS(smsBuf,Mobile) then
begin
MessageDlg('短消息發送成功!',mtInformation,[mbOk],0);
//Memo1.Lines.Clear;
end else
begin
MessageDlg('短消息發送失敗!',mtWarning,[mbOk],0);
Memo1.Lines.Text := smsBuf;
end;
SMS.Busy := FALSE;
end else
begin
MessageDlg('串口初始化失敗!不能發送短消息。',mtError,[mbOk],0);
end;
BitBtn1.Enabled := TRUE;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
CheckResult:boolean;
strTmp:string;
begin
CheckResult := TRUE;
if not SMS.SComm.m_Opened or not SMS.SMSSet.ChkNewMsg then exit;
if SMS.Busy then exit;
SMS.Busy := TRUE;
while CheckResult do
begin
CheckResult := SMS.CheckNewSMS;
if CheckResult then
begin
strTmp := '20'+copy(SMS.RxMsg.Date,1,2)+'-'+copy(SMS.RxMsg.Date,3,2)
+'-'+copy(SMS.RxMsg.Date,5,2)+' '+copy(SMS.RxMsg.Date,7,2)
+':'+copy(SMS.RxMsg.Date,9,2)+':'+copy(SMS.RxMsg.Date,11,2);
Memo2.Lines.Append('時間:'+strTmp);
Memo2.Lines.Append('號碼:'+copy(SMS.RxMsg.Mobile,3,11));
Memo2.Lines.Append('內容:'+SMS.RxMsg.SMSMsg);
Memo2.Lines.Append('');
end;
sleep(300);
end;
SMS.Busy := FALSE;
end;
initialization
begin
SMS := TSMSControl.Create; //注意先后順序
if SMS.SComm.SComInit then
begin
SMS.ErrMsg := SMS.IniSMS;
if SMS.ErrMsg < 0 then
begin
SMS.SComm.CloseSerial;
case SMS.ErrMsg of
-1:
begin
if MessageDlg(' 沒有檢測到短消息模塊,如果模塊已與計算機連接,'
+chr(13)+'請檢查端口參數設置。要繼續嗎?',mtError,[mbYes,mbNo],0) = mrNo then
Application.Terminate;
end;
-4:
begin
if MessageDlg('設置GSM字符集錯誤,請檢查您的短消息模塊。',mtError,[mbYes,mbNo],0) = mrNo then
Application.Terminate;
end;
-5:
begin
if MessageDlg('短消息中心沒有配置或配置置錯誤,請檢查SIM卡和短消息參數設置。要繼續嗎?',mtWarning,[mbYes,mbNo],0) = mrNo then
Application.Terminate;
end;
-6:
begin
if MessageDlg('短消息模塊不支持文本方式(Text)發送,請重新配置短消息參數。要繼續嗎?',mtWarning,[mbYes,mbNo],0) = mrNo then
Application.Terminate;
end;
-7:
begin
if MessageDlg('短消息模塊不支持PDU方式,請重新配置短消息參數。要繼續嗎?',mtWarning,[mbYes,mbNo],0) = mrNo then
Application.Terminate;
end;
-8:
begin
if MessageDlg('設置PDU-UCS2字符集錯誤,請確認您的模塊是否支持。要繼續嗎?',mtWarning,[mbYes,mbNo],0) = mrNo then
begin
Application.Terminate;
end;
end;
else
begin
Application.Terminate;
end;
end;
end;
end else
begin
if MessageDlg('串口初始化失敗!要繼續嗎?',mtWarning,[mbYes,mbNo],0) = mrNo then
begin
Application.Terminate;
end;
end;
end;
finalization
begin
SMS.SComm.CloseSerial;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -