📄 monitorcotrol.pas
字号:
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;
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 + -