Delphi7,如何编写出能够实时监测机器故障
Delphi7,如何编写出能够实时监测多个机器故障,并显示故障,当故障排除后,显示故障的地方自动清除相应故障。
[解决办法]
- Delphi(Pascal) code
implementation{$R *.dfm}const liststr: array[0..3,0..9]of string=( //按着 B1_DI 数组维数定义一个字符数组常量 ('','','','','','','','','',''), ('','','1号屏地源热泵机组出现故障','','','','1号屏生活热水循环泵1-a出现故障','','',''), ('','','','','','','','','',''), ('','','','','','','','','','') );var B1_DI: array[0..3,0..9]of boolean;//假设你的这个2维数组是这样定义 faultnum,faultnum1:integer;procedure TMainForm.Button1Click(Sender: TObject);begin list_message1.Items.Delete(list_message1.Items.IndexOf('abc'));end;procedure TMainForm.addlist1(str_temp: string);begin list_message1.Insert(0,str_temp+' '+formatdatetime('hh:mm:ss yyyyy-mm-dd',now));end;procedure TMainForm.Timer7Timer(Sender: TObject); procedure ClearMark(a1,a2:integer);//清除故障提示 var i:integer; begin for i:=0 to list_message1.Items.Count-1 do if pos(liststr[a1,a2],list_message1.Items.Strings[i])>0 then begin //找到含有提示串的行 list_message1.Items.Delete(i);//删除该行 break;//退出循环 end; end;begin if B1_DI[1,2]=True then begin //如果 1,2 传感器复位 faultnum:=0;//标志复位 ClearMark(1,2);//清除故障提示 end else if faultnum=0 then begin //否则,如果 1,2 传感器置位并且标志未置位 addlist1(liststr[1,2]);//添加故障提示 faultnum:=1;//标志置位 end; //下面语句作用参看上面注释 if B1_DI[1,6]=True then begin faultnum1:=0; ClearMark(1,6); end else if faultnum1=0 then begin faultnum1:=1; addlist1(liststr[1,6]); end;end;