📄 ufrmmain.pas.~241~
字号:
Qury.Close;
uU1.sqlQurySub(sTmpDB,Qury);
Qury.SQL.Text :='select id,iTime,煤矿号,测点号,传感器号,开始时间,iMsg from 报警数据 where ((iMsg is null) or (iMsg=0))and(开始时间 between '''
+FormatDateTime('yyyy-MM-dd',dtTime)+' 0:00:00'' and '''+FormatDateTime('yyyy-MM-dd',dtTime)
+' 23:59:59'') order by 开始时间';
Qury.Open;
chkListWait.Items.Clear;
while not Qury.Eof do begin
tmpRow :=uU1.tabToRow2(Qury.Fields[2].AsString,Qury.Fields[3].AsString,0,1,sg);
if tmpRow>0 then begin
chkListWait.Items.Add(
Qury.Fields[0].AsString +'@' +
FormatDateTime('MM-dd HH:mm',Qury.Fields[5].AsDateTime) + ' ' +
Qury.Fields[2].AsString+'的测点' +
Qury.Fields[3].AsString+'(' +
sg.Cells[3,tmpRow]+')报警'
);
end;
Qury.Next;
Application.ProcessMessages;
end;
{
Qury.Close;
uU1.sqlQurySub(sTmpDB,Qury);
Qury.SQL.Text :='select cd,iMsg,t0,_id from 瓦斯断电表 where (有效>1 and iMsg=0)and(t0 between '''
+FormatDateTime('yyyy-MM-dd',dtTime)+' 0:00:00'' and '''+FormatDateTime('yyyy-MM-dd',dtTime)
+' 23:59:59'') order by t0';
Qury.Open;
chkListWait.Items.Clear;
while not Qury.Eof do begin
tmpRow :=uU1.tabToRow2(Qury.Fields[0].AsString,Qury.Fields[0].AsString,1,1,sg);
if tmpRow>0 then begin
chkListWait.Items.Add(
Qury.Fields[3].AsString +'@' +
FormatDateTime('MM-dd HH:mm',Qury.Fields[2].AsDateTime) +
sg.Cells[0,tmpRow]+' ' +
sg.Cells[3,tmpRow] +' 的测点' +
Qury.Fields[0].AsString+'(' +
sg.Cells[2,tmpRow]+')断电'
);
end;
Qury.Next;
Application.ProcessMessages;
end;
}
Qury.Close;
FreeAndNil(Qury);
FreeAndNil(sg);
end;
procedure TfrmMain.dbFshSnd(sTmpDB:string; dtTime:TDateTime); //搜索库中已经发送的信息
var
Qury :TADOQuery;
sg :TStringGrid;
tmpRow :integer;
begin
sg :=TStringGrid.Create(self);
sg.RowCount :=2; sg.ColCount :=8;
sg.Cells[0,0] := '煤矿名';
sg.Cells[1,0] := '测点号';
sg.Cells[2,0] := '类型';
sg.Cells[3,0] := '安装地点';
sg.Cells[4,0] := '短信类别';
sg.Cells[5,0] := '发送情况';
sg.Cells[6,0] := '实时值';
sg.Cells[7,0] := '时间';
sg.Rows[1].Clear;
Qury :=TADOQuery.Create(self);
uU1.sqlQurySub(uPU.LogBase,Qury);
Qury.SQL.Text :='select 煤矿号,测点号,传感器名,测点位置 from 配置测点 order by 测点号';
Qury.Open;
while not Qury.Eof do begin
tmpRow := sg.RowCount-1;
sg.Cells[0,tmpRow] := Qury.Fields[0].AsString; //煤矿号
sg.Cells[1,tmpRow] := Qury.Fields[1].AsString; //测点号
sg.Cells[2,tmpRow] := Qury.Fields[2].AsString; //传感器名
sg.Cells[3,tmpRow] := Qury.Fields[3].AsString; //测点位置
sg.RowCount := sg.RowCount +1;
sg.Rows[sg.RowCount-1].Clear;
Qury.Next;
Application.ProcessMessages;
end;
if sg.RowCount>2 then sg.RowCount :=sg.RowCount-1;
Qury.Close;
uU1.sqlQurySub(sTmpDB,Qury);
Qury.SQL.Text :='select id,iTime,煤矿号,测点号,传感器号,开始时间,iMsg from 报警数据 where (iMsg<>0)and(开始时间 between '''
+FormatDateTime('yyyy-MM-dd',dtTime)+' 0:00:00'' and '''+FormatDateTime('yyyy-MM-dd',dtTime)
+' 23:59:59'') order by 开始时间';
Qury.Open;
chkList.Items.Clear;
while not Qury.Eof do begin
tmpRow :=uU1.tabToRow2(Qury.Fields[2].AsString,Qury.Fields[3].AsString,0,1,sg);
if tmpRow>0 then begin
chkList.Items.Add(
FormatDateTime('MM-dd HH:mm',Qury.Fields[5].AsDateTime) +' '+
Qury.Fields[2].AsString +'的测点' +
Qury.Fields[3].AsString+'(' +
sg.Cells[3,tmpRow]+')报警'
);
end;
Qury.Next;
Application.ProcessMessages;
end;
{
Qury.Close;
uU1.sqlQurySub(sTmpDB,Qury);
Qury.SQL.Text :='select cd,iMsg,t0,_id from 瓦斯断电表 where (有效>1 and iMsg<>0)and(t0 between '''
+FormatDateTime('yyyy-MM-dd',dtTime)+' 0:00:00'' and '''+FormatDateTime('yyyy-MM-dd',dtTime)
+' 23:59:59'') order by t0';
Qury.Open;
chkList.Items.Clear;
while not Qury.Eof do begin
tmpRow :=uU1.tabToRow2(Qury.Fields[0].AsString,Qury.Fields[0].AsString,1,1,sg);
if tmpRow>0 then begin
chkList.Items.Add(
FormatDateTime('MM-dd HH:mm',Qury.Fields[2].AsDateTime) +
sg.Cells[0,tmpRow]+' ' +
sg.Cells[3,tmpRow] +' 的测点' +
Qury.Fields[0].AsString+'(' +
sg.Cells[2,tmpRow]+')断电'
);
end;
Qury.Next;
Application.ProcessMessages;
end;
}
Qury.Close;
FreeAndNil(Qury);
end;
procedure TfrmMain.grpOnePhoneAlt(sPhone:string;sMsg :WideString;var bytBuf:TBytes); //组合一个电话号码和一条报警信息
var
tmpBytes:TBytes;
i :integer;
begin
tmpBytes :=AnsiToByte(sMsg); //将一个Unico串变为字节数组
SetLength(bytBuf,length(tmpBytes)+13);
bytBuf[0] :=$AA;
bytBuf[1] :=$02;
for i:=1 to length(sPhone) do begin //此为string类型,0位表示长度
bytBuf[i+1] :=ord( sPhone[i] );
end;
for i:=1 to length(tmpBytes) do begin
bytBuf[i+12] :=ord( tmpBytes[i-1] );
end;
end;
procedure TfrmMain.mnuMsgCentClick(Sender: TObject);
begin
txtMsgCent.Text :=TMenuItem(Sender).Caption;
txtMsgCent.Enabled :=false;
end;
procedure TfrmMain.N22Click(Sender: TObject);
begin
self.Visible :=True;
self.WindowState :=wsNormal;
end;
procedure TfrmMain.PageControl1Change(Sender: TObject);
begin
if PageControl1.ActivePageIndex=1 then begin
showSet; //显示配置参数
end;
end;
procedure TfrmMain.FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
begin
Resize :=false;
end;
procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
clsCom.bolComClose;
UnInstallIcon; //删除托盘图标
end;
procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if (MessageBox(handle,'是否要退出短信平台?','信息',MB_ICONQUESTION+MB_YesNo)=IDNO) then //是否关闭软件
begin
CanClose:=false;
end;
end;
procedure TfrmMain.InstallIcon; //初始化系统托盘
begin
add_ico.cbSize :=SizeOf(TNotifyIcondata);
add_ico.Wnd :=handle;
add_ico.uID :=900;
add_ico.uFlags :=nif_icon or nif_message or nif_tip;
add_ico.hIcon :=imgIcon1.Picture.Icon.Handle; //Application.Icon.Handle;
add_ico.szTip :='手机短信报警平台';
add_ico.uCallBackMessage := MI_ICONEVENT;
Shell_NotifyIcon(nim_add,@add_ico);
end;
procedure TfrmMain.UnInstallIcon; //删除托盘图标
begin
Shell_NotifyIcon(nim_delete,@add_ico);
end;
procedure TfrmMain.IconOnClick(var message: TMessage);
var
p: TPoint;
begin
//if ((message.lParam = WM_LBUTTONDOWN) and (Status = True)) then
//Form2.Show;
if (message.lParam = WM_RBUTTONDOWN) then //WM_LBUTTONDBLCLK 双击
begin
GetCursorPos(p);
PopupMenu2.Popup(p.x, p.y);
end else if (message.lParam = WM_LBUTTONDBLCLK) then begin //WM_LBUTTONDBLCLK 双击
self.Visible :=True;
self.WindowState :=wsNormal;
//end else if (message.WParam = WM_QUIT) then begin
end;
Inherited;
end;
procedure TfrmMain.WMQueryEndSession(var Msg: TMessage);
begin
Msg.Result := 1;
end;
procedure TfrmMain.frmMinClick(var msg:tmessage);
begin
if msg.wparam=sc_minimize then begin
self.Visible :=false;
end;
inherited;//别忘了这句,否则,你对窗口什么操作都不会响应
end;
procedure TfrmMain.FormCreate(Sender: TObject);
var
sTmpDB, sID:string;
dtTime:TDateTime;
begin
InstallIcon; //初始化系统托盘
puSubQJBL(); //初始化全局变量
showSet; //显示配置参数
bolPause :=false;
if lstPhone.Count=0 then begin
PageControl1.ActivePageIndex :=1;
end else begin
PageControl1.ActivePageIndex :=0;
Timer1.Enabled :=true;
end;
clsCom := TclsCom.Create; //创建串口类 [ uCom ]
if(not clsCom.bolComInit(uPU.iComPort, 0, uPU.iComBaud))then begin //uPU.ComPort, uPU.WaitTime1
clsCom.bolComClose;
ShowMessagePos( '串口创建失败',SCreen.Width div 2 -35,150);
FreeAndNil(clsCom);
Application.Terminate ; //Application.Terminate不执行FormClose
end;
bolSql :=sqlSevr_2('master');
if not bolSql then begin
MessageBox(handle,'未能找到数据库服务器','信息',MB_OK);
end else begin
dtTime :=Now;
sTmpDB :='kj78_'+FormatDateTime('yyMM',dtTime);
uU1.sqlComdExec(sTmpDB,sqlMSG);
dbFsh(sTmpDB,dtTime); //库搜索
dbFshSnd(sTmpDB, dtTime); //搜索库中已经发送的信息
showSet; //显示配置参数
end;
wpgThread := TwpgThread.Create(true); //True表示线程创建后挂起
wpgThread.FreeOnTerminate := true; //线程执行后自动释放内存
wpgThread.Resume;
end;
procedure TfrmMain.showSet; //显示配置参数
var
i :integer;
begin
if (iComPort>=1)and(iComPort<=4) then cboMsgPort.ItemIndex :=iComPort-1
else cboMsgPort.ItemIndex :=3;
if iComBaud=1200 then cboMsgBaud.ItemIndex :=0
else if iComBaud=2400 then cboMsgBaud.ItemIndex :=1
else if iComBaud=4800 then cboMsgBaud.ItemIndex :=2
else if iComBaud=9600 then cboMsgBaud.ItemIndex :=3
else cboMsgBaud.ItemIndex :=3;
txtMsgCent.Text :=sMsgCentID;
LstBoxPhone.Items.Clear;
for i:=1 to lstPhone.Count do begin
LstBoxPhone.Items.Add(lstPhone[i-1]);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -