⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ufrmmain.pas.~241~

📁 用串口发送手机短信 需要GSM Mode设备
💻 ~241~
📖 第 1 页 / 共 3 页
字号:
  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 + -