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

📄 monitorcotrol.~pas

📁 该程序可作为386的接警程序使用
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
     else if AlertLight.Color=clRed then
     AlertLight.Color:=clLime;
  //end
end;

procedure TmonitorControl.Button3Click(Sender: TObject);
begin
  close;
end;

procedure TmonitorControl.Button2Click(Sender: TObject);
var strtemp:string;
begin
  strtemp:='';
  if comboBox1.Text<>'-请选择-'   then
  begin
    strtemp:='select ID AS ID,BH AS 报警器编号,RQ AS 日期,SJ AS 时间 ,WZ AS 报警位置 from BJJLB where bh='+inttostr(BHNo[comboBox1.ItemIndex]);
  end;
  if comboBox2.Text<>'-请选择-'   then
  begin
    if strtemp='' then strtemp:=strtemp+'select ID AS ID,BH AS 报警器编号,RQ AS 日期,SJ AS 时间 ,WZ AS 报警位置 from BJJLB where rq='''+combobox2.Text+''''
    else  strtemp:=strtemp+' and rq='''+combobox2.Text+'''';
  end;
  if comboBox3.Text<>'-请选择-'   then
  begin
    if strtemp='' then strtemp:=strtemp+'select ID AS ID,BH AS 报警器编号,RQ AS 日期,SJ AS 时间 ,WZ AS 报警位置 from BJJLB where wz='''+combobox3.Text+''''
    else  strtemp:=strtemp+' and wz='''+combobox3.Text+'''';
  end;
  if strtemp<>'' then
  begin
    adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.Add(strtemp);
    adoquery1.Open;
  end
end;

procedure TmonitorControl.FormActivate(Sender: TObject);
var i:Integer;
begin
  //初始化全局变量
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select * from BJQWHB');
  adoquery1.Open;
  Timer2.Enabled:=false;
  IsRight:=false;

  {MachineNum:=adoquery1.RecordCount;    //从数据库取设备数目
  setlength(Position,MachineNum);
  setlength(State,MachineNum);
  adoquery1.First;  }

  //从数据库表中读值
  for i:=0 to 15 do  //MachineNum-1
  begin
    Pos[i]:=adoquery1.fieldbyname('WZ').AsString;
    State[i]:=adoquery1.fieldbyname('ZT').AsString;
    adoquery1.Next;
  end;
  //关闭数据库
  adoquery1.SQL.Clear;
  adoquery1.Close;

  PageControl1.ActivePageIndex:=0;
  for i:=1 to 16 do   //@@@
   begin
     bh[i]:=0;
   end;
  MonitorComm.StopComm;
  AlertLight.Color:=clYellow;
  Button5.Caption:='启动监控';
  InitCombox;
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select BH AS 报警器编号,WZ AS 位置, ZT AS 备注 from BJQWHB');
  adoquery1.Open;
end;

procedure TmonitorControl.Button4Click(Sender: TObject);
begin
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select ID AS ID,BH AS 报警器编号,RQ AS 日期,SJ AS 时间 ,WZ AS 报警位置 from BJJLB');
  adoquery1.Open;
end;

procedure TmonitorControl.TabSheet1Show(Sender: TObject);
begin
  {adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select * from BJQWHB');
  adoquery1.Open;
  while not adoquery1.Eof do
  begin
    //DBGrid1:=adoquery1.fieldbyname('WZ').AsString;
    //State[i]:=adoquery1.fieldbyname('ZT').AsInteger;
    adoquery1.Next;
  end }
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select BH AS 报警器编号,WZ AS 位置, ZT AS 备注 from BJQWHB');
  adoquery1.Open;

end;

procedure TmonitorControl.Button5Click(Sender: TObject);
var i:Integer;//@@@
begin
   if Button5.Caption='启动监控' then
     begin
     AlertLight.Color:=clLime;
   //Timer2.Enabled:=false;   //...................
     try
        MonitorComm.StopComm;
        MonitorComm.CommName:=CbComm.Text;
        MonitorComm.BaudRate:=strtoint(CbBaudRate.text);
        MonitorComm.StartComm;
        Button5.Caption:='关闭监控';
      except
        showmessage('打开串口失败');
      end
    end
    else
    if Button5.Caption='关闭监控' then
      begin
        AlertLight.Color:=clYellow;
        MonitorComm.StopComm;
        Timer2.Enabled:=false;
        Button5.Caption:='启动监控';

        for i:=1 to 16 do   //@@@
        begin
          bh[i]:=0;
        end;

        DBGrid1.Repaint;
      end;
end;

procedure TmonitorControl.Button6Click(Sender: TObject);
var strtemp:string;
begin
    if IsCommSetUp then
    begin
      adoquery2.Close;
      adoquery2.SQL.Clear;
      strtemp:='update TbCommParam set CommName='''+CbComm.Text+''',BaudRate='''+CbBaudRate.Text+'''';
      adoquery2.SQL.Add(strtemp);
      adoquery2.ExecSQL;
    end
    else
    begin
      adoquery2.Close;
      adoquery2.SQL.Clear;
      strtemp:= 'insert TbCommParam (CommName,BaudRate) values('''+CbComm.Text+''',BaudRate='''+CbBaudRate.Text+''')';
      adoquery2.SQL.Add(strtemp);
      adoquery2.ExecSQL;
    end;
    ShowMessage('已修改默认值')
end;

function TmonitorControl.IsCommSetUp:boolean;
var strtemp:string;
begin
    adoquery2.Close;
    adoquery2.SQL.Clear;
    strtemp:='select * from TbCommParam';
    adoquery2.SQL.Add(strtemp);
    adoquery2.Open;
    if adoquery2.RecordCount>0 then
      Result:=true
    else
      Result:=false;
end;

Procedure TmonitorControl.OnReceiveData(Sender: TObject;Buffer: Pointer;
    BufferLength: Word);
var i:integer;
    sBuf:byte;
    strDate,strTime:string;
    strSQL:string;
    pos : array[1..16] of string;
begin
   setLength(rBuf, BufferLength);
   move(Buffer^, pchar(@rBuf[1])^, BufferLength);
   if rBuf[1] = 250 then   //若是0xaa的握手信号, 则确认该信号
   begin
      //MessageBox(Application.Handle, '接收握手成功', '提示', MB_OK);
      IsRight:=true;
      if not MonitorComm.writecommdata(@rBuf[1], 1) then
      begin
        MessageBox(Application.Handle, '发送握手确认信号错误', '错误', MB_OK);
      end;
   end
   //如果不是0Xaa,则说明开始发送数据部分
   else
   begin
      if IsRight=true then
      begin
      IsRight:=false;
      strSQL:='select wz from bjqwhb';
      ADOQuery2.Close;
      ADOQuery2.SQL.Clear;
      ADOQuery2.SQL.Text := strSQL;
      ADOQuery2.ExecSQL;
      ADOQuery2.open;
      i:=0;
      while not adoquery2.Eof do
      begin
        i:=i+1;
        pos[i]:=ADOQuery2.FieldByName('wz').AsString;
        ADOQuery2.Next;
      end;
      ADOQuery2.close;
      //获取日期和时间
      strDate:=DateToStr(date);
      strTime:=TimeToStr(Time);

      //组装数据。。。
      i:= rBuf[1];  //@@@
      bh[i] := i ;  //@@@

      //下面写入报警记录表
      strSQL := 'Insert into BJJLB(BH, RQ, SJ, WZ) values (';
      strSQL:=strSQL+IntToStr(i)+',''' + strDate + ''',''' + strTime + ''',''' + pos[i] + ''')'; //@@@
      ADOQuery2.Close;
      ADOQuery2.SQL.Clear;
      ADOQuery2.SQL.Text := strSQL;
      ADOQuery2.ExecSQL;
      
      //下面返回信息,以让单片机认为发送成功
      {sBuf:= 170;
      if not MonitorComm.writecommdata(@sBuf, 1) then
      begin
        MessageBox(Application.Handle, '发送接收完毕确认信息时错误', '错误', MB_OK);
      end;}
      dbgrid1.Repaint;
      Timer2.Enabled:=true;

   end;
   end;
end;
procedure TmonitorControl.Button7Click(Sender: TObject);
var i:Integer;//@@@
begin
  timer2.Enabled:=false;
  AlertLight.Color:=clLime;

   for i:=1 to 16 do   //@@@
   begin
     bh[i]:=0;
   end;

  DBGrid1.Repaint;
end;

procedure TmonitorControl.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
var i:Integer;//@@@
begin
  i:=DBGrid1.DataSource.DataSet.RecNo;    //@@@
  if bh[i]>0 then       //@@@
  begin
    if  i =bh[i]  then   //@@@
    begin
      DBGrid1.Canvas.Font.Color:= clNone;
      DBGrid1.Canvas.Brush.Color:= clRed;//clCream;
    end;
  end;
  DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;

procedure TmonitorControl.Init(Sender: TObject);
var i:integer;
begin
for i:=1 to 16 do   //@@@
   begin
     bh[i]:=0;
   end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -