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

📄 unit1.pas

📁 利用Modem的远程通信功能
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, ComCtrls, ToolWin, Menus, jpeg, Buttons, StdCtrls, Db, DBTables,
  ImgList;

type
  Tmain = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    ToolBar1: TToolBar;
    Panel1: TPanel;
    Image2: TImage;
    Image3: TImage;
    StatusBar1: TStatusBar;
    Image1: TImage;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SpeedButton5: TSpeedButton;
    SpeedButton6: TSpeedButton;
    SpeedButton7: TSpeedButton;
    SpeedButton8: TSpeedButton;
    SpeedButton9: TSpeedButton;
    SpeedButton10: TSpeedButton;
    SpeedButton11: TSpeedButton;
    SpeedButton12: TSpeedButton;
    SpeedButton13: TSpeedButton;
    SpeedButton14: TSpeedButton;
    SpeedButton15: TSpeedButton;
    SpeedButton16: TSpeedButton;
    SpeedButton17: TSpeedButton;
    SpeedButton18: TSpeedButton;
    SpeedButton19: TSpeedButton;
    SpeedButton20: TSpeedButton;
    SpeedButton21: TSpeedButton;
    SpeedButton22: TSpeedButton;
    SpeedButton23: TSpeedButton;
    SpeedButton24: TSpeedButton;
    SpeedButton25: TSpeedButton;
    SpeedButton26: TSpeedButton;
    Panel2: TPanel;
    Image4: TImage;
    ToolButton1: TToolButton;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N20s1: TMenuItem;
    N30s1: TMenuItem;
    N30s2: TMenuItem;
    N12: TMenuItem;
    N13: TMenuItem;
    N14: TMenuItem;
    N15: TMenuItem;
    N101: TMenuItem;
    N16: TMenuItem;
    N17: TMenuItem;
    N18: TMenuItem;
    N19: TMenuItem;
    N20: TMenuItem;
    N21: TMenuItem;
    N22: TMenuItem;
    N23: TMenuItem;
    N24: TMenuItem;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    ToolButton11: TToolButton;
    ToolButton12: TToolButton;
    ToolButton13: TToolButton;
    ToolButton14: TToolButton;
    ToolButton15: TToolButton;
    ToolButton16: TToolButton;
    ToolButton17: TToolButton;
    N25: TMenuItem;
    N26: TMenuItem;
    Timer1: TTimer;
    N27: TMenuItem;
    N10s1: TMenuItem;
    N20s2: TMenuItem;
    Table1: TTable;
    TimerPhone: TTimer;
    N28: TMenuItem;
    N29: TMenuItem;
    N30: TMenuItem;
    ImageList1: TImageList;
    ImageList2: TImageList;
    PopupMenu1: TPopupMenu;
    N31: TMenuItem;
    N32: TMenuItem;
    N33: TMenuItem;
    N34: TMenuItem;
    N35: TMenuItem;
    Label1: TLabel;
    clock: TTimer;
    Database1: TDatabase;
    ToolButton7: TToolButton;
    ToolButton18: TToolButton;
    ToolButton19: TToolButton;
    N110: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N10s1Click(Sender: TObject);
    procedure N20s2Click(Sender: TObject);
    procedure N30s2Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N16Click(Sender: TObject);
    procedure N27Click(Sender: TObject);
    procedure N17Click(Sender: TObject);
    procedure N18Click(Sender: TObject);
    procedure N19Click(Sender: TObject);
    procedure N20Click(Sender: TObject);
    procedure N21Click(Sender: TObject);
    procedure N22Click(Sender: TObject);
    procedure N26Click(Sender: TObject);
    procedure TimerPhoneTimer(Sender: TObject);
    procedure N23Click(Sender: TObject);
    procedure N24Click(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
    procedure ToolButton9Click(Sender: TObject);
    procedure ToolButton10Click(Sender: TObject);
    procedure ToolButton11Click(Sender: TObject);
    procedure ToolButton13Click(Sender: TObject);
    procedure ToolButton14Click(Sender: TObject);
    procedure ToolButton17Click(Sender: TObject);
    procedure N29Click(Sender: TObject);
    procedure clockTimer(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure N110Click(Sender: TObject);

  private

    // function ring1(n:integer):boolean;{ Private declarations }
  public

    FloatNum,FloatFlag:integer;  
    { Public declarations }
  end;

    function ring(n:integer):boolean;
    procedure readdata(i:integer);
var
  main: Tmain;
  Getdata:array[1..4] of real; //远程录入数据;
  flagmonth,flagyear:integer;
  ModemStatus:array [1..30] of boolean;
  modemflag:integer;
implementation
  uses unit2,unit3,unit4,unit5,unit6,unit7,unit8,unit9, Unit10, Unit11,
  Unit15, Unit16, Unit12,unit17;

{$R *.DFM}
procedure readdata(i:integer);
var
j:integer;
begin// 利用Config产生随机数据
  datamd.tableconfig.open;
  datamd.TableConfig.First;
  datamd.TableConfig.MoveBy(i-1);
  with datamd.TableConfig do
    begin
    for j := 1 to 4 do
    begin
      getdata[j]:=fields[2*j].Asfloat+abs(random(105)/100*(fields[2*j].AsFloat-fields[2*j-1].AsFloat));
    end;//数据生成                              /105说明有超标值/
    end;
end;

function ring(n:integer):boolean;
var
m:boolean;
begin
  result:=true; //模拟拨号,若成功则返回真;
end;

procedure Tmain.FormCreate(Sender: TObject);
var
pth:string;  //获取数据库的路径,利用Database连接数据库
begin
  pth:=getcurrentdir;  //获取程序当前目录
   speedbutton1.Hint:=' 市精工集团股份有限公司';
   main.Database1.Connected:=false; //断开Database的数据库连接
  main.Database1.Params.Add('path='+pth+'\data');// 得到数据库的目录
  main.Database1.Connected:=true;//恢复数据库的连接


  modemflag:=0;
  flagmonth:=0;
  flagYear:=0;
  main.Timer1.Enabled:=false;//关闭监测时钟
  floatNum:=26;
  floatFlag:=1;
end;

procedure Tmain.Timer1Timer(Sender: TObject);
var
i:integer;
begin
     readdata(floatflag);    //获取实时数据
     //运行时间显示
    main.StatusBar1.Panels[1].Text:='正在运行';
     datamd.TableReal.open;
     datamd.TableReal.First;
     datamd.TableReal.MoveBy(floatflag-1);
     with datamd.TableReal do//对实时表进行修改
     begin
       edit;
       setfields([nil,date,time,getdata[1],getdata[2],getdata[3],getdata[4]]);
       post;
       realgrid.Table1.open;
       realgrid.Table1.Refresh;
       (*超标纪录的操作*)
       datamd.TableConfig.open;
       datamd.TableConfig.First;
       datamd.TableConfig.MoveBy(floatflag-1);
       with datamd.TableConfig do  //判断数据是否超标
       begin
         if (getdata[1]>fields[1].Asfloat )or (getdata[2]>fields[3].AsFloat) or (getdata[3]>fields[5].asFloat)
           then
           begin
            dataMD.TableExceed.open;
           dataMD.TableExceed.Appendrecord([floatflag,date,time,getdata[1],getdata[2],getdata[3],getdata[4]]);
           beep;
           (*可以提示*)
           end;
       end;//数据生成
      end;

      (**  //进行日数据写入**)
     with dataMD.tableday do
     begin

       active:=false;
       TableName:='Day_'+inttostr(floatflag)+'.db';
       active:=true;
       if recordcount>=2000 then// 设置数据库的容量
       begin
       ControlsDisabled;//使控件失效
       first;
         for i:=1 to 10 do
          begin
           delete;
          end;
       end;

      EnableControls;
       AppendRecord([nil,date,time,getdata[1],getdata[2],getdata[3],getdata[4]]);

     end;

    (***月数据的操作****)
   if flagmonth=6 then
    begin
     with dataMD.tableMonth do
     begin
       active:=false;
       TableName:='month_'+inttostr(floatflag)+'.db';
       active:=true;
       if recordcount>=2000 then// 设置数据库的容量
       begin
       ControlsDisabled;//使控件失效
       first;
         for i:=1 to 10 do
          begin
           delete;
           next;
          end;
       end;
       EnableControls;
       AppendRecord([nil,date,time,getdata[1],getdata[2],getdata[3],getdata[4]]);
       if floatflag=floatnum then flagmonth:=0;//设标志回0

     end;
    end;
     (*****年数据的操作****)
    if flagyear=36 then
    begin
     with dataMD.tableYear do
     begin
       active:=false;
       TableName:='year_'+inttostr(floatflag)+'.db';
       active:=true;
       if recordcount>=2000 then// 设置数据库的容量
       begin
       ControlsDisabled;//使控件失效
       first;
         for i:=1 to 10 do
          begin
           delete;
           next;
          end;
       end;
       EnableControls;
       AppendRecord([nil,date,time,getdata[1],getdata[2],getdata[3],getdata[4]]);
       if floatflag=floatnum then flagyear:=0;
     end;
    end;

     inc(floatflag);
     realgrid.Table1.next; //为了方便实时显示。
  if floatflag>floatnum then//若循环完毕,重新拨号。
     begin
     flagyear:=flagyear+1;
     flagmonth:=flagmonth+1;
     floatflag:=1;
     realgrid.Table1.First;
     end;
  //模拟数据采集


end;

procedure Tmain.N2Click(Sender: TObject);
begin
  timer1.Enabled:=true;//拨号
end;

procedure Tmain.N10s1Click(Sender: TObject);
begin
  timer1.Interval:=1000*1;            //设置读数时间
end;

procedure Tmain.N20s2Click(Sender: TObject);
begin
  timer1.Interval:=1000*20;
end;

procedure Tmain.N30s2Click(Sender: TObject);
begin
  timer1.Interval:=1000*30;
end;

procedure Tmain.N4Click(Sender: TObject);
begin
  timer1.Enabled:=false;//中止监测
  main.StatusBar1.Panels[1].Text:='未运行';
end;

procedure Tmain.N10Click(Sender: TObject);
begin
  photonumber.Table1.Active:=true;
  photonumber.show;
end;

procedure Tmain.N6Click(Sender: TObject);
begin
  close;
end;

procedure Tmain.N7Click(Sender: TObject);
begin
  config.show;
end;

procedure Tmain.N16Click(Sender: TObject);
var
t:string;
begin
  inputquery('待机时间','请输入待机时间',t);
  timer1.Interval:=1000*round(strtofloat(t));
end;

procedure Tmain.N27Click(Sender: TObject);
begin
  realpanel.Show;
end;

procedure Tmain.N17Click(Sender: TObject);
begin
  realgrid.show;
end;

procedure Tmain.N18Click(Sender: TObject);
begin
  realcurve.show;
end;

procedure Tmain.N19Click(Sender: TObject);
begin
   realrpt.QuickRep1.Preview;
end;

procedure Tmain.N20Click(Sender: TObject);
begin
  Day_data.show;
end;

procedure Tmain.N21Click(Sender: TObject);
begin
  month_data.show;
end;

procedure Tmain.N22Click(Sender: TObject);
begin
  year_data.show;
end;

procedure Tmain.N26Click(Sender: TObject);
begin
  datamd.tablephone.active:=true;
  datamd.tablephone.first;
  timerphone.Enabled:=true;



end;

procedure Tmain.TimerPhoneTimer(Sender: TObject);

begin
  with datamd.tablephone do    //拨号测试
  begin
    if  not eof then
    begin
    modemflag:=modemflag+1;
    modemstatus[modemflag]:=ring(fields[2].asinteger);
    case modemflag of
    1:speedbutton1.Glyph.LoadFromFile('Day.bmp');
 2:speedbutton2.Glyph.LoadFromFile('Day.bmp');
3:speedbutton3.Glyph.LoadFromFile('Day.bmp');
4:speedbutton4.Glyph.LoadFromFile('Day.bmp');
5:speedbutton5.Glyph.LoadFromFile('Day.bmp');
6:speedbutton6.Glyph.LoadFromFile('Day.bmp');
7:speedbutton7.Glyph.LoadFromFile('Day.bmp');
8:speedbutton8.Glyph.LoadFromFile('Day.bmp');
9:speedbutton9.Glyph.LoadFromFile('Day.bmp');
10:speedbutton10.Glyph.LoadFromFile('Day.bmp');
11:speedbutton11.Glyph.LoadFromFile('Day.bmp');
12:speedbutton12.Glyph.LoadFromFile('Day.bmp');
13:speedbutton13.Glyph.LoadFromFile('Day.bmp');
14:speedbutton14.Glyph.LoadFromFile('Day.bmp');
15:speedbutton15.Glyph.LoadFromFile('Day.bmp');
16:speedbutton16.Glyph.LoadFromFile('Day.bmp');
17:speedbutton17.Glyph.LoadFromFile('Day.bmp');
18:speedbutton18.Glyph.LoadFromFile('Day.bmp');
19:speedbutton19.Glyph.LoadFromFile('Day.bmp');
20:speedbutton20.Glyph.LoadFromFile('Day.bmp');
21:speedbutton21.Glyph.LoadFromFile('Day.bmp');
22:speedbutton22.Glyph.LoadFromFile('Day.bmp');
23:speedbutton23.Glyph.LoadFromFile('Day.bmp');
24:speedbutton24.Glyph.LoadFromFile('Day.bmp');
25:speedbutton25.Glyph.LoadFromFile('Day.bmp');
26:speedbutton26.Glyph.LoadFromFile('Day.bmp');
end;

    next;
   end
  else
    begin
    main.TimerPhone.Enabled:=false;
    showmessage('测试完毕!');
    end;
   end;
end;

procedure Tmain.N23Click(Sender: TObject);
begin
  exceedgrid.show;
end;

procedure Tmain.N24Click(Sender: TObject);
begin
  exceedrpt.QuickRep1.preview;
end;

procedure Tmain.ToolButton1Click(Sender: TObject);
begin
  main.N2Click(sender);
end;

procedure Tmain.ToolButton2Click(Sender: TObject);
begin
  main.N4Click(Sender);
end;

procedure Tmain.ToolButton3Click(Sender: TObject);
begin
  close;
end;

procedure Tmain.ToolButton5Click(Sender: TObject);
begin
  main.N7Click(Sender);
end;

procedure Tmain.ToolButton6Click(Sender: TObject);
begin
  main.N16Click(Sender);
end;

procedure Tmain.ToolButton9Click(Sender: TObject);
begin
main.N27Click(Sender);
end;

procedure Tmain.ToolButton10Click(Sender: TObject);
begin
  main.N17Click(Sender);
end;

procedure Tmain.ToolButton11Click(Sender: TObject);
begin
  main.N18Click(Sender);
end;

procedure Tmain.ToolButton13Click(Sender: TObject);
begin
  main.N19Click(Sender);
end;

procedure Tmain.ToolButton14Click(Sender: TObject);
begin
  main.N23Click(Sender);
end;

procedure Tmain.ToolButton17Click(Sender: TObject);
begin
main.N26Click(Sender);
end;

procedure Tmain.N29Click(Sender: TObject);
begin
  version.show;
end;

procedure Tmain.clockTimer(Sender: TObject);
var
 timetxt:string;
begin
     timetxt:='运行时间'+datetostr(date)+' '+timetostr(time);
     realcurve.statusbar1.panels[1].text:=timetxt;
     realgrid.statusbar1.panels[1].text:=timetxt;
     config.statusbar1.panels[1].text:=timetxt;
     Day_data.statusbar1.panels[1].text:=timetxt;
     Day_curve.statusbar1.panels[1].text:=timetxt;
     Day_data.statusbar1.panels[1].text:=timetxt;
     exceedgrid.statusbar1.panels[1].text:=timetxt;
     statusbar1.panels[2].text:=timetxt;



end;

procedure Tmain.FormShow(Sender: TObject);
begin
  main.clock.Enabled:=true;
end;

procedure Tmain.N110Click(Sender: TObject);
begin
   N101.Checked:=false;
   N110.Checked:=false;
   N20s1.Checked:=false;
   N30s1.Checked:=false;
   TMenuItem(sender).Checked:=true;
   Timerphone.Interval:=TMenuItem(sender).Tag*1000;
end;

end.

⌨️ 快捷键说明

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