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

📄 main.pas

📁 西门子与计算机通讯程序包括源代码 程序说明 可以进行时时数据采集记录
💻 PAS
字号:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ComCtrls,  StdCtrls,inifiles,Prodave, ExtCtrls,TypInfo,
  WinSkinData;

type

  TForm1 = class(TForm)
    StatusBar1: TStatusBar;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    N13: TMenuItem;
    N5: TMenuItem;
    Timer1: TTimer;
    N6: TMenuItem;
    N7: TMenuItem;
    procedure N3Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect;
      Selected: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure N12Click(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure N13Click(Sender: TObject);
    procedure ddddd1Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
   
  private
    { Private declarations }
  public
   procedure DisplayHint(Sender: TObject);


    { Public declarations }
  end;
 const
  tcolortype1: array[0..20] of tcolor=(TColor($ff0000),  TColor($00ff00), TColor($0000ff),
                 TColor($ffff00),  TColor($00ffff), TColor($ff00ff),
                 TColor($800000),  TColor($008000), TColor($000080),
                 TColor($808000),  TColor($008080), TColor($800080) ,
                 TColor($80ff00),  TColor($0080ff), TColor($ff0080),
                 TColor($8000ff),  TColor($ff8000), TColor($00ff80),
                 TColor($800000),  TColor($008000), TColor($000080)  );
var
  Form1: TForm1;
  commustatus:integer;      //通讯状态   0未通讯 1 通讯正常 2 通讯错误
  parabyteorword:integer;//读写字/字节   0为字 1 为字节
  paraautosave:integer   ;//参数自动保存
  pareswap:boolean;//高低字节交换
  paraautotry:boolean;
  paraautotrycount:integer;//自动重试 次数
  paraautofilter:integer;//自动过滤错误数据
 //通讯地址设置
  comm_addr:integer;
  comm_segment:integer;
  comm_slot:integer;
  comm_rock:integer;

  load_status:integer;//
  ErrMess:array[0..255] of char;  //
  mixdata:array[0..21]of  MixDataInfo  ;  //混合读取 命令区
  mixdatacount:integer;
  mixreturndata:array[0..255] of byte; //混合读取缓冲区
  mixdatatype:array[0..255] of char;//混合读取类型区
  mixdatasave:array[0..25]of integer;  //混合读取数据数组
  databasenamelog:string;//记录用数据库名称
 databaselogok:boolean;//记录用数据库名称创建成功
 databaselogconnectok:boolean;//记录用数据库连接成功
  databasenameview:string;//浏览用数据库名称
  datalogstatus:integer;   //记录数据库时通讯状态
  datalogname:string;
  datalogdata:string;
  datalogcommand:string;
  databasetable:string;     //数据库表项名称
databasetype:string;//数据库类型表项


adr_table: adr_table_type  ;    //通讯地址表
linkname:array[0..255] of char;    //连接名

serrisnum:integer;//图表显示的数量
databasetablearay:array [0..22]of string;  //记录数据库表项名称数组
sercount:  integer;
serpage:integer;
drawdatatime: array[0..25] of array[0..1023] of double;

implementation

uses para, Unit3, strct, Unit5, Unit6, Unit4, drawdisp_time, report;

{$R *.dfm}

procedure TForm1.N3Click(Sender: TObject);
begin
   form2:=tform2.Create(self);
   form2.ShowModal();
   form2.free ;
end;

procedure TForm1.N2Click(Sender: TObject);
begin
 WinExec('S7EPATSX.EXE', SW_SHOWNORMAL);
end;

procedure TForm1.N3DrawItem(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; Selected: Boolean);
begin
     StatusBar1.Panels[1].Text:=n3.Hint;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 I,j: Integer;
 filename:string;
 myinifile:TInifile;
begin
  sercount:=0;
   serpage:=0;
//初始化内存数组
for I := 0 to 25 do    // Iterate
begin


for j := 0 to 1023 do    // Iterate
begin

drawdatatime[i][j]:=1000;

end;    // for

end;    // for



   form1.Constraints.MaxHeight:=80;
   form1.Constraints.MaxWidth:=Screen.Width ;
   form1.Constraints.MinHeight:=72;
    form1.Constraints.MinWidth:=500;

 Application.OnHint := DisplayHint;
  filename:=ExtractFilePath(paramstr(0))+'myini.ini';
  myinifile:=TInifile.Create(filename);
  parabyteorword:= myinifile.readinteger('程序参数设置','   读写字/字节',0);
    paraautosave:= myinifile.readinteger('程序参数设置','  参数自动保存',0);
        pareswap:= myinifile.readbool('程序参数设置','  高低字节交换',false);
paraautotrycount:= myinifile.readinteger('程序参数设置','  自动重试次数',0);
  paraautofilter:= myinifile.readinteger('程序参数设置','  自动过滤错误数据',0);
     paraautotry:= myinifile.readbool('程序参数设置','  自动重试',false);

    comm_addr:=  myinifile.readinteger('通讯参数设置','  地址',2);
 comm_segment:=  myinifile.readinteger('通讯参数设置','  段号',0);
    comm_slot:=  myinifile.readinteger('通讯参数设置','  插槽号',2);
    comm_rock:=  myinifile.readinteger('通讯参数设置','  机架号',0);

     MainMenu1.Items[2].Enabled:=false;
   //  MainMenu1.Items[3].Enabled:=false;
   
end;

procedure TForm1.DisplayHint(Sender: TObject);
begin
StatusBar1.Panels[1].Text:= Application.Hint;
end;

procedure TForm1.N5Click(Sender: TObject);
begin
    form5.ShowModal();
end;

procedure TForm1.N4Click(Sender: TObject);
begin

 form3.ShowModal();
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
 filename:string;
 myinifile:TInifile;
begin
  filename:=ExtractFilePath(paramstr(0))+'myini.ini';
  myinifile:=TInifile.Create(filename);
  myinifile.writeinteger('程序参数设置','  读写字/字节     ', parabyteorword);
  myinifile.writeinteger('程序参数设置','  参数自动保存    ',  paraautosave);
  myinifile.writebool('程序参数设置','  高低字节交换    ', pareswap);
  myinifile.writeinteger('程序参数设置','  自动重试次数    ',paraautotrycount);
  myinifile.writebool('程序参数设置','  自动重试        ',paraautotry);
  myinifile.writeinteger('程序参数设置','  自动过滤错误数据', paraautofilter);


  myinifile.writeinteger('通讯参数设置','  地址   ',comm_addr);
  myinifile.writeinteger('通讯参数设置','  段号   ',comm_segment);
  myinifile.writeinteger('通讯参数设置','  插槽号 ',comm_slot);
  myinifile.writeinteger('通讯参数设置','  机架号 ' ,comm_rock);

end;

procedure TForm1.N12Click(Sender: TObject);
begin

  statusbar1.Panels[2].Text:='请稍等待';
 adr_table.adr := comm_addr; {address}
 adr_table.segmentid := comm_segment; {segment id}
 adr_table.slotno := comm_slot; {slot no}
 adr_table.rackno := comm_rock; {rack no}
 adr_table.end0:=0;

strcopy(linkname,'S7ONLINE');
load_status := Load_tool(1,addr(linkname),addr(adr_table));
  if (load_status=0)
  then begin
    commustatus:=1;     //通讯正常
    statusbar1.Panels[0].Text:='已连接';
    statusbar1.Panels[2].Text:='';
  end
  else
  begin
  
        if(Prodave.Error_Message(load_status, ErrMess)=0)then
        begin
               statusbar1.Panels[2].Text:=errmess;
        end
        else
         statusbar1.Panels[2].Text:='ERROR.DAT 文件错误';

  end;
    





end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  StatusBar1.Panels[0].width:=60;
  StatusBar1.Panels[2].width:=150;
  StatusBar1.Panels[1].width:=form1.Width-60-150;
end;



procedure TForm1.FormResize(Sender: TObject);
begin
if (form1.Width<=220) then form1.Width:=230;
 StatusBar1.Panels[0].width:=60;
  StatusBar1.Panels[2].width:=150;
  StatusBar1.Panels[1].width:=form1.Width-60-150;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if  ( commustatus=1 )  then
begin
     MainMenu1.Items[2].Enabled:=true;
     MainMenu1.Items[3].Enabled:=true;
end   else
   begin
     MainMenu1.Items[2].Enabled:=false;
  //   MainMenu1.Items[3].Enabled:=false;
   end;


end;

procedure TForm1.N13Click(Sender: TObject);
begin
statusbar1.Panels[2].Text:='请稍等待';
load_status := Unload_Tool;

if (load_status=0) then
begin
    commustatus:=0;
    statusbar1.Panels[2].Text:='';
end
else
begin
    if(Prodave.Error_Message(load_status, ErrMess)=0)then
        begin
               statusbar1.Panels[2].Text:=errmess;
        end
        else
         statusbar1.Panels[2].Text:='ERROR.DAT 文件错误';
end;



end;

procedure TForm1.ddddd1Click(Sender: TObject);
begin
  form9.ShowModal();
end;

procedure TForm1.N10Click(Sender: TObject);
begin
   form6:=tform6.Create(self);
   form6.ShowModal();
   form6.free ;
end;

procedure TForm1.N6Click(Sender: TObject);
begin
   form4:=tform4.Create(self);
   form4.ShowModal();
   form4.free;
end;

procedure TForm1.N7Click(Sender: TObject);
begin
winexec('notepad xx.txt',SW_RESTORE	);
end;

end.

⌨️ 快捷键说明

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