📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ImgList, CoolTrayIcon, ExtCtrls, ActnList,
Menus, StdCtrls, SMSComm;
type
TMainFrm = class(TForm)
StatusBar1: TStatusBar;
Timer1: TTimer;
TrayIcon1: TCoolTrayIcon;
ImageList1: TImageList;
ImageList3: TImageList;
PopupMenu1: TPopupMenu;
ShowWindow1: TMenuItem;
HideWindow1: TMenuItem;
N1: TMenuItem;
Exit1: TMenuItem;
MainMenu1: TMainMenu;
vvv1: TMenuItem;
NSetPort: TMenuItem;
NSetSCA: TMenuItem;
N7: TMenuItem;
NStartInspect: TMenuItem;
NCloseInspect: TMenuItem;
N2: TMenuItem;
NHideFrm: TMenuItem;
NExit: TMenuItem;
N5: TMenuItem;
ActionList1: TActionList;
acHideMainFrm: TAction;
acShowMainFrm: TAction;
acExit: TAction;
acSetSCA: TAction;
acSetPort: TAction;
acStartInspect: TAction;
acCloseInspect: TAction;
Button1: TButton;
SMSComm1: TSMSComm;
Label2: TLabel;
ComboBox1: TComboBox;
LabeledEdit1: TLabeledEdit;
Memo1: TMemo;
Label1: TLabel;
Button2: TButton;
Button3: TButton;
procedure StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
procedure FormActivate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure acHideMainFrmExecute(Sender: TObject);
procedure acShowMainFrmExecute(Sender: TObject);
procedure acExitExecute(Sender: TObject);
procedure acSetSCAExecute(Sender: TObject);
procedure acSetPortExecute(Sender: TObject);
procedure acStartInspectExecute(Sender: TObject);
procedure acCloseInspectExecute(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure SMSComm1AfterSend(Sender: TObject; aSMSItem: TSMSItem;
SendOK: Boolean);
procedure SMSComm1BeforeSend(Sender: TObject; aSMSItem: TSMSItem);
procedure SMSComm1Receive(Sender: TObject; aSMSItem: TSMSItem);
procedure SMSComm1BeforeTimingDelSMS(Sender: TObject);
procedure SMSComm1AfterTimingDelSMS(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ComboBox1CloseUp(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure SMSComm1BeforeOpenModem(Sender: TObject);
procedure SMSComm1AfterOpenModem(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure GSMIni;
end;
var
MainFrm: TMainFrm;
S: string;
implementation
uses GlobalPara1, SetPort;
{$R *.dfm}
procedure TMainFrm.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin
with StatusBar1.Canvas do
begin
Brush.Color:=clBtnFace;
case Panel.Index of
0: begin
Font.Color := clBlue;
ImageList3.Draw(StatusBar1.Canvas,Rect.Left+5,Rect.Top+1,9);
TextOut(Rect.left+24, Rect.top+3 , '最新事件' );
end;
1: begin
Font.Color := clBlue;
TextOut(Rect.left + 5, Rect.top + 3, gpMainFrmStatusbarText);
end;
2: begin
Font.Color := clBlue;
if gpCurrentStation = csInitialize then
TextOut(Rect.left+5, Rect.top+3 , '当前状态: 初始化' )
else if gpCurrentStation = csInspect then
TextOut(Rect.left+5, Rect.top+3 , '当前状态: 监测' )
else if gpCurrentStation = csOffLine then
TextOut(Rect.left+5, Rect.top+3 , '当前状态: 离线' )
else if gpCurrentStation = csCommand then
TextOut(Rect.left+5, Rect.top+3 , '当前状态: 命令' )
else
TextOut(Rect.left+5, Rect.top+3 , '当前状态: 监测' );
end;
end;
end;
end;
procedure TMainFrm.FormActivate(Sender: TObject);
begin
Timer1.Enabled := True;
end;
procedure TMainFrm.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
gpCurrentStation := csInitialize;
GSMIni;
end;
procedure TMainFrm.GSMIni;
begin
if not SMSComm1.Active then begin
gpMainFrmStatusbarText := '正在连接GSM模块,请等待...';
StatusBar1.Refresh;
if SMSComm1.Open then begin
NStartInspect.Enabled := False;
NCloseInspect.Enabled := True;
gpMainFrmStatusbarText := '连接GSM模块成功!';
gpCurrentStation:=csInspect;
TrayIcon1.Hint := '监测';
TrayIcon1.IconList := ImageList1;
TrayIcon1.CycleIcons := True;
TrayIcon1.Refresh;
end
else begin
NStartInspect.Enabled := True;
NCloseInspect.Enabled := False;
gpMainFrmStatusbarText := '连接GSM模块失败!';
gpCurrentStation:=csOffLine;
TrayIcon1.Hint := '离线状态';
TrayIcon1.IconList := nil;
TrayIcon1.CycleIcons := False;
TrayIcon1.Refresh;
end;
StatusBar1.Refresh;
end;
end;
procedure TMainFrm.acHideMainFrmExecute(Sender: TObject);
begin
TrayIcon1.HideMainForm;
end;
procedure TMainFrm.acShowMainFrmExecute(Sender: TObject);
begin
TrayIcon1.ShowMainForm;
end;
procedure TMainFrm.acExitExecute(Sender: TObject);
begin
if MessageDlg('是否退出报警监测程序?',mtConfirmation,[mbOK,mbCancel],0)=mrOk then
Application.Terminate;
end;
procedure TMainFrm.acSetSCAExecute(Sender: TObject);
var
SCA: string;
begin
if (not InputQuery('信息中心号码设置', '号码', SCA)) or
(SCA = '') then Exit;
gpMainFrmStatusbarText := '正在设置短信中心号码...';
StatusBar1.Refresh;
if SMSComm1.GSM_AT_CSCA(SCA) then
gpMainFrmStatusbarText := '设置短信中心号码成功!'
else
gpMainFrmStatusbarText := '设置短信中心号码失败!';
StatusBar1.Refresh;
end;
procedure TMainFrm.acSetPortExecute(Sender: TObject);
begin
SetPortFrm := TSetPortFrm.Create(Self);
try
SetPortFrm.ShowModal;
finally
SetPortFrm.Free;
SetPortFrm := nil;
end;
end;
procedure TMainFrm.acStartInspectExecute(Sender: TObject);
begin
gpCurrentStation := csInitialize;
GSMIni;
end;
procedure TMainFrm.acCloseInspectExecute(Sender: TObject);
begin
SMSComm1.Close;
gpMainFrmStatusbarText := '关闭监测!';
gpCurrentStation:=csOffLine;
StatusBar1.Refresh;
NStartInspect.Enabled := True;
NCloseInspect.Enabled := False;
TrayIcon1.CycleIcons := False;
end;
procedure TMainFrm.Button1Click(Sender: TObject);
begin
SMSComm1.GSM_AT_CMGS(LabeledEdit1.Text, Memo1.Text);
end;
procedure TMainFrm.SMSComm1AfterSend(Sender: TObject; aSMSItem: TSMSItem;
SendOK: Boolean);
begin
if SendOK then
gpMainFrmStatusbarText := '发送消息成功!'
else
gpMainFrmStatusbarText := '发送消息失败!';
StatusBar1.Refresh;
end;
procedure TMainFrm.SMSComm1BeforeSend(Sender: TObject;
aSMSItem: TSMSItem);
begin
gpMainFrmStatusbarText := '正在发送消息...';
StatusBar1.Refresh;
end;
procedure TMainFrm.SMSComm1Receive(Sender: TObject; aSMSItem: TSMSItem);
begin
showmessage(aSMSItem.Msg);
end;
procedure TMainFrm.SMSComm1BeforeTimingDelSMS(Sender: TObject);
begin
Memo1.Text := Memo1.Text + #13#10 +'开始定时删除短信...';
end;
procedure TMainFrm.SMSComm1AfterTimingDelSMS(Sender: TObject);
begin
Memo1.Text := Memo1.Text + #13#10 +'定时删除短信完毕!';
end;
procedure TMainFrm.Button2Click(Sender: TObject);
var
S: string;
begin
if SMSComm1.GSM_AT_CMGL(4, S) then begin
Memo1.Text := Memo1.Text + S;
Memo1.Refresh;
end;
end;
procedure TMainFrm.FormCreate(Sender: TObject);
begin
SMSComm1.DestPhoneStyle := TPhoneStyle(ComboBox1.ItemIndex);
end;
procedure TMainFrm.ComboBox1CloseUp(Sender: TObject);
begin
SMSComm1.DestPhoneStyle := TPhoneStyle(ComboBox1.ItemIndex);
end;
procedure TMainFrm.Button3Click(Sender: TObject);
var
S: string;
begin
S := '';
if not InputQuery('短信中心号码设置', '如长沙号码设置为:'#10#13'+8613800731500 注意从+号开始', S) then Exit;
if SMSComm1.GSM_AT_CSCA(S) then ShowMessage('设置成功')
else ShowMessage('设置失败')
end;
procedure TMainFrm.SMSComm1BeforeOpenModem(Sender: TObject);
begin
gpMainFrmStatusbarText := '正在与GSM模块联系...';
StatusBar1.Refresh;
end;
procedure TMainFrm.SMSComm1AfterOpenModem(Sender: TObject);
begin
gpMainFrmStatusbarText := '清除SIM卡中的消息完毕!';
StatusBar1.Refresh;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -