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

📄 datalog.pas

📁 西门子与计算机通讯程序包括源代码 程序说明 控件 及控件使用手册 使用西门子prodave 控件 这是第一版
💻 PAS
字号:
unit datalog;

interface

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

type
  TForm2 = class(TForm)
    Button4: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Label5: TLabel;
    Button7: TButton;
    Button8: TButton;
    Edit2: TEdit;
    Edit3: TEdit;
    Timer1: TTimer;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N1000ms1: TMenuItem;
    N500ms1: TMenuItem;
    N300ms1: TMenuItem;
    Timer2: TTimer;
    Label4: TLabel;
    N2000ms1: TMenuItem;
    shu1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    procedure Button7Click(Sender: TObject);
    procedure N1000ms1Click(Sender: TObject);
    procedure N500ms1Click(Sender: TObject);
    procedure N300ms1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Timer1Timer(Sender: TObject);
    procedure N2000ms1Click(Sender: TObject);


  private
    { Private declarations }

  public
    { Public declarations }
  //  res2: longint;
  //  ErrMess2:array[0..255] of char;
 //   db_num,db_startoread,db_numtoread:Integer;
   // data2:array[0..255] of SmallInt;
    tt: SmallInt;
  end;

var
  Form2: TForm2;
  res2: longint;
  ErrMess2: array[0..255] of char;
  db_num, db_startoread, db_numtoread: Integer;
  data2: array[0..255] of word;

implementation

uses Unit4, scom;

{$R *.dfm}




procedure TForm2.Button7Click(Sender: TObject);

begin
//Form4.ADODataSet1.CommandText:=' select * from  db';
//Form4.ADODataSet1.Active:=True;
  db_num := StrToInt(Edit1.Text);
  db_startoread := StrToInt(Edit2.Text);
  db_numtoread := StrToInt(Edit3.Text);

  res2 := db_Read(db_num, db_startoread, db_numtoread, data2);
  ErrMess2[254] := #0;
  if res2 <> 0 then
  begin
    Prodave.Error_Message(res2, ErrMess2);
    MessageBox(Handle, (ErrMess2),
      '通讯错误', MB_OK + MB_ICONINFORMATION + MB_TOPMOST);
    Exit;
  end;
  Timer1.Enabled := True;
end;

procedure TForm2.N1000ms1Click(Sender: TObject);
begin
   N2000ms1.Checked := False;
  N1000ms1.Checked := True;
  N500ms1.Checked := False;
  N300ms1.Checked := False;
  if Timer1.Enabled = True then Timer1.Enabled := False;
  Timer1.Interval := 1000;

end;

procedure TForm2.N500ms1Click(Sender: TObject);
begin
 N2000ms1.Checked := False;
  N1000ms1.Checked := False;
  N500ms1.Checked := True;
  N300ms1.Checked := False;
  if Timer1.Enabled = True then Timer1.Enabled := False;
  Timer1.Interval := 500;

end;

procedure TForm2.N300ms1Click(Sender: TObject);
begin
 N2000ms1.Checked := False;
  N1000ms1.Checked := False;
  N500ms1.Checked := False;
  N300ms1.Checked := True;
  if Timer1.Enabled = True then Timer1.Enabled := False;
  Timer1.Interval := 300;

end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  N2000ms1.Checked := False;
  N1000ms1.Checked := False;
  N500ms1.Checked := True;
  N300ms1.Checked := False;
  Timer1.Enabled := False;
  Timer1.Interval := 500;
  Timer2.Interval := 3000;

end;

procedure TForm2.Timer2Timer(Sender: TObject);
begin
 // Form4.DBGrid1.Refresh;
 // Form4.DBChart1.Repaint;
end;

procedure TForm2.Button8Click(Sender: TObject);
begin
  Timer1.Enabled := False;
  Timer2.Enabled := False;
end;

procedure TForm2.Button4Click(Sender: TObject);
begin

  Form4.ShowModal;
form4.DBChart1.AutoRefresh:=False;
form4.DBGrid1.Enabled:=True;
form4.DBChart1.Enabled:=true;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Form1.Visible := True;
end;

procedure TForm2.Timer1Timer(Sender: TObject);

begin


  res2 := 255;
  res2 := db_Read(db_num, db_startoread, db_numtoread, data2);
  ErrMess2[254] := #0;
//with Form4.ADOQuery1 do
//begin
//str3:='';
//Close;
//SQL.Clear;
//str3:=  'Insert into db  (状态,日期';
//str3:=str3+')   ';
//
//str3:=str3+ 'values ('+inttostr(res2)+' ,'+ DateToStr(Date);//+', '+timetostr(Time) ;
////for i :=1 to 10 do
////begin
////smi:=(psmallint(@data2[-1+i*2]))^ ;
////str3:=str3+ ','+inttoStr(smi);
////end;
//
//str3:=str3+') ';
//SQL.Add(str3);
//ExecSQL;
//Close;


  with Form4.ADODataSet1 do
  begin
    Append;
    fieldbyname('状态').AsInteger := res2;
    fieldbyname('日期').Value := Now;
//fieldbyname('时间').Value:=Time;
    tt := tt + 1;
    if tt > 500 then tt := 0;
    fieldbyname('数据1').Value := Swap(data2[0]);
    fieldbyname('数据2').Value := Swap(data2[1]);
    fieldbyname('数据3').Value := Swap(data2[2]);
    fieldbyname('数据4').Value := Swap(data2[3]);
    fieldbyname('数据5').Value := Swap(data2[4]);
    fieldbyname('数据6').Value := Swap(data2[5]);
    fieldbyname('数据7').Value := Swap(data2[6]);
    fieldbyname('数据8').Value := Swap(data2[7]);
    fieldbyname('数据9').Value := Swap(data2[8]);
    fieldbyname('数据10').Value := Swap(data2[9]);
//fieldbyname('数据1').Value:=     (psmallint(@data2[1]))^; //  (pinteger(@data1[sss*2]))^
//fieldbyname('数据2').AsInteger:= (psmallint(@data2[3]))^;
//fieldbyname('数据3').AsInteger:= (psmallint(@data2[5]))^;
//fieldbyname('数据4').AsInteger:= (psmallint(@data2[7]))^;
//fieldbyname('数据5').AsInteger:= (psmallint(@data2[9]))^;
//fieldbyname('数据6').AsInteger:= (psmallint(@data2[11]))^;
//fieldbyname('数据7').AsInteger:= (psmallint(@data2[13]))^;
//fieldbyname('数据8').AsInteger:= (psmallint(@data2[15]))^;
//fieldbyname('数据9').AsInteger:= (psmallint(@data2[17]))^;
//fieldbyname('数据10').AsInteger:= (psmallint(@data2[19]))^;
    Post;
  end;

end;









procedure TForm2.N2000ms1Click(Sender: TObject);
begin
 N2000ms1.Checked :=True;
  N1000ms1.Checked := False;
  N500ms1.Checked := False;
  N300ms1.Checked := False;
  if Timer1.Enabled = True then Timer1.Enabled := False;
  Timer1.Interval := 2000;
end;

end.

⌨️ 快捷键说明

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