亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main.pas.~116~

?? 給出一個工業(yè)PLC聯(lián)網(wǎng)監(jiān)控的例子
?? ~116~
?? 第 1 頁 / 共 2 頁
字號:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtCtrls, SPComm, ComCtrls, ToolWin, ImgList, StdCtrls,
	RzPanel, RzButton, Buttons,  cmdHeader,DBCtrls, Mask, Registry,DB, ADODB, Grids, DBGrids,
  RzGrids, RzBorder, RzLabel, RzEdit, RzDTP;
type
	TUnitDevice=Record
		PWSUint:integer;
		PWSName:string[25];
		Addr:integer;
		Name:string[25];
		Value,
		Max,
		Min:word;
		CommErr:string[25];
		Enabled:boolean;
	end;
	TProjectInfo=record
		prjName,  //SaveDataTime, ComPort, BaundRate
		cPort,
		Baud:string;
    sTime, // 保存時間長度間隔多少分鐘  最短5分鐘
		defWin:integer;
    SavDataTime:TDateTime;//保存數(shù)據(jù)的時間坐標(biāo)
	end;
	TSynComm=record  				//設(shè)備采樣同步標(biāo)志體
		CommErrCount:integer; //設(shè)備通訊失敗計數(shù)器
		CurrentAddr,					//當(dāng)前通訊地址
		CurrentUnit:integer;  //當(dāng)前PWS單元號
		NextAddr:Boolean;			//是否允許采集下個地址信息
		U_ID:integer;				  //巡檢計數(shù)器標(biāo)志
	end;
	TfrmMain = class(TForm)
    Comm1: TComm;
    Timer1: TTimer;
    meuMain: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    N19: TMenuItem;
    N20: TMenuItem;
    SB1: TStatusBar;
    imgList: TImageList;
    RzToolbar1: TRzToolbar;
    btnToolLogin: TRzToolButton;
    RzSpacer1: TRzSpacer;
    btnStart: TRzToolButton;
    btnStop: TRzToolButton;
    RzSpacer2: TRzSpacer;
    RzSpacer3: TRzSpacer;
    btnClose: TRzToolButton;
    Panel1: TPanel;
    BitBtn1: TBitBtn;
    DataSource1: TDataSource;
    adoDBSrc: TADODataSet;
    DBGrid2: TDBGrid;
    Bevel2: TBevel;
    Bevel1: TBevel;
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    lblConfig: TLabel;
    N9: TMenuItem;
    meuStart: TMenuItem;
    N25: TMenuItem;
    meuStop: TMenuItem;
    RzSpacer4: TRzSpacer;
    Panel3: TPanel;
    PB1: TProgressBar;
    lblRecived: TEdit;
    Panel2: TPanel;
    Bevel3: TBevel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    lblFirstRun: TLabel;
    edtPwd: TEdit;
    cbxUser: TComboBox;
    btnLogin: TButton;
    btnLogCancel: TButton;
    Panel4: TPanel;
    GroupBox1: TGroupBox;
    Label9: TLabel;
    Label10: TLabel;
    RzLabel1: TRzLabel;
    RzLEDDisplay1: TRzLEDDisplay;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    trvAllDev: TTreeView;
    Label6: TLabel;
    Label7: TLabel;
    edtDecStatus: TEdit;
    Bevel4: TBevel;
    Bevel5: TBevel;
    TrayIcon1: TTrayIcon;
    meoRunEvent: TRzMemo;
    txtUnitNo: TStaticText;
    txtDevName: TStaticText;
    txtDevAddrName: TStaticText;
    N6: TMenuItem;
    meuSereach: TMenuItem;
    RzURLLabel1: TRzURLLabel;
    Timer2: TTimer;
    procedure Timer2Timer(Sender: TObject);
    procedure meuSereachClick(Sender: TObject);
    procedure btnToolLoginClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnLogCancelClick(Sender: TObject);
    procedure lblRecivedChange(Sender: TObject);
    procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
      BufferLength: Word);
    procedure Timer1Timer(Sender: TObject);
    procedure meuStopClick(Sender: TObject);
    procedure meuStartClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure btnLoginClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
	private
    procedure savDataFromTreeNode;
		procedure prcmenu(meuInfo,DBSql:string);
		function  CheckUser:boolean;
		procedure SetCommPort(cPort,Baud:string);//配置通訊端口
		procedure DrawTreeNode;
    procedure DrawTreeNodeValue;
    procedure UpdateMenu(Fun_ID:integer);
    procedure RunOnOff(runon:boolean);
		{ Private declarations }
	public
		{ Public declarations }
  end;

var
  frmMain: TfrmMain;
	PwsU:array of TUnitDevice;//地址信息  動態(tài)數(shù)組使用時采用 SetLength 初始化
	VAdd:array of integer;//有效地址數(shù)組
	AddrCount:integer;
	RegisterAddrCount:integer=0;//有效地址總數(shù)

	prjInfo:TProjectInfo;//工程信息
	mSynComm:TSynComm;   //設(shè)備采樣同步標(biāo)志體
  CanOP:boolean=False;
  Manger:Boolean=False;

implementation

{$R *.dfm}

procedure TfrmMain.BitBtn1Click(Sender: TObject);
begin
	Panel1.Visible:=False;
	if adoDBSrc.Active then
	begin
		adoDBSrc.Refresh;
		adoDBSrc.Close;
	end;
	Panel4.Align:=alClient;
	Panel4.Visible:=True;
end;

procedure TfrmMain.btnLogCancelClick(Sender: TObject);
begin
 	Panel2.Visible:=False;
  Panel2.SendToBack;
  CanOP:=False;
	SB1.Panels[9].Text:='還未登錄......'; 
end;

procedure TfrmMain.btnLoginClick(Sender: TObject);
begin
	if CheckUser then
	begin
		Panel2.Visible:=False;
    Panel2.SendToBack;
		Panel4.Align:=alClient;
		Panel4.Visible:=True;
    CanOP:=True;
		SetCommPort(prjInfo.cPort,prjInfo.Baud);//配置通訊端口
		SB1.Panels[9].Text:='系統(tǒng)待機中......';
    RunOnOff(False); //未開始監(jiān)控
	end;
end;

procedure TfrmMain.btnToolLoginClick(Sender: TObject);
begin //
 Panel2.BringToFront;
  Panel2.Visible:=True;
end;

function TfrmMain.CheckUser: boolean;
var
	userType:string;
  ILevel:integer;
begin
		Result:=False;
		if adoDBSrc.Active then	adoDBSrc.Close;
		adoDBSrc.CommandText:='select * from user where UserName='+''''+cbxUser.Text +'''';
		adoDBSrc.Active:=true;
		if adoDBSrc.RecordCount=0 then
		begin
			showmessage(#13+#13+'------您的用戶名輸入有錯!------'+#13+#13);
			adoDBSrc.Active:=False;
			exit;
		end;
		if edtPwd.Text<>adoDBSrc.FieldByName('UserPass').AsString then
		begin
			showmessage('密碼輸入錯誤!');
			adoDBSrc.Active:=False;
			exit;
		end	else begin
      ILevel:=adoDBSrc.FieldByName('userType').AsInteger;
      UpdateMenu(ILevel);
			if adoDBSrc.FieldByName('userType').AsInteger=0 then
      begin
				userType:='操作員';
        Manger:=False;
      end;
			if adoDBSrc.FieldByName('userType').AsInteger>0 then
      begin
				userType:='管理員';
        Manger:=True;
      end;
			SB1.Panels[3].Text:=userType;
			SB1.Panels[1].Text:=adoDBSrc.FieldByName('UserName').AsString;
			Result:=True;
			if adoDBSrc.Active then	adoDBSrc.Close;
		end;
end;

procedure TfrmMain.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
	BufferLength: Word);
var
	i:integer; // viewstring,
	reStr:string;
	rbuf:array[0..64] of byte;
begin
	reStr:='';
	move(buffer^,rbuf,bufferlength);
	for i:=1 to bufferlength do
		reStr:=reStr+chr(rbuf[i-1]);
	reStr:=reStr;
	lblRecived.Text:=reStr;
end;


procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 if MessageDlg('您確認(rèn)要退出本監(jiān)控系統(tǒng)嗎?',
		mtConfirmation, [mbYes, mbNo], 0, mbYes) = mrYes then
	begin
		CanClose:=True;
	end else
		CanClose:=False;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  UpdateMenu(-1);
end;

procedure TfrmMain.DrawTreeNode;
var
	i,ii:integer;
	Node1, Node2: TTreeNode;
	nodeFg:boolean;
	snode:string;
begin
  with trvAllDev.Items do
	begin
		Clear; { remove any existing nodes }
		for I := 0 to AddrCount - 1 do //設(shè)定值遍歷
		begin
			if PwsU[i].Enabled then
			begin
				if trvAllDev.Items.Count<1 then //還沒有根接點
				begin
					snode:='PWS'+inttostr(PwsU[i].PWSUint)+'-'+PwsU[i].PWSName;
					Node1 := Add(nil,snode ); { Add a root node }
					Node1.ImageIndex:=7;
					snode:=PWSU[i].Name+'['+Format('%4x',[PWSU[i].Value])+']';
					Node2:= AddChild(Node1,snode);
					Node2.ImageIndex:=25;
					//cbxSereachUnit.Items.Add(inttostr(PwsU[i].PWSUint));
				end else
				begin  //已經(jīng)有根節(jié)點了
					nodeFg:=False;
					Node1 := trvAllDev.Items[0];
					for Ii := 0 to trvAllDev.Items.Count - 1 do
					begin
						Node1 := trvAllDev.Items[ii];
						snode:='PWS'+inttostr(PwsU[i].PWSUint)+'-'+PwsU[i].PWSName;
						if Node1.Text=snode  then
						begin
							nodeFg:=True;//找到節(jié)點
							break;
						end;// //找到節(jié)點
					end;//遍歷結(jié)束
					if not nodeFg then //遍歷后未找到節(jié)點
					begin            //新建節(jié)點
						snode:='PWS'+inttostr(PwsU[i].PWSUint)+'-'+PwsU[i].PWSName;
						Node1 := Add(nil, snode); { Add a root node }
						Node1.ImageIndex:=7;
						Node1.Expanded:=True;
						//cbxSereachUnit.Items.Add(inttostr(PwsU[i].PWSUint));
					end;////遍歷后未找到節(jié)點
          ///
					snode:=PWSU[i].Name+'['+Format('%4x',[PWSU[i].Value])+']';
					Node2:= AddChild(Node1,snode);
					Node2.ImageIndex:=25;
				end;
			end;//此地址有效
		end;//設(shè)定值遍歷
	end;//with trvAllDev.Items do
  trvAllDev.FullExpand;//展開所有節(jié)點
end;
procedure TfrmMain.DrawTreeNodeValue;
var
	i,ii:integer;
	Node1: TTreeNode;
	nodeFg:boolean;
	snode:string;
begin
  with trvAllDev.Items do
	begin
		for I := 0 to AddrCount - 1 do //設(shè)定值遍歷
		begin
			if PwsU[i].Enabled and (trvAllDev.Items.Count>1) then
			begin
				snode:='PWS'+inttostr(PwsU[i].PWSUint)+'-'+PwsU[i].PWSName;
        nodeFg:=False;
				for ii := 0 to trvAllDev.Items.Count - 1 do
				begin
					Node1 := trvAllDev.Items[ii];
					snode:='PWS'+inttostr(PwsU[i].PWSUint)+'-'+PwsU[i].PWSName;
				  if Node1.Text=snode  then
				  begin
				  	nodeFg:=True;//找到節(jié)點
          end;// //找到主節(jié)點
          if nodeFg and (Pos(PwsU[i].Name,Node1.Text)>0) then //再找子節(jié)點
          begin //
              if PWSU[i].CommErr='' then
                Node1.Text:=PWSU[i].Name+'['+Format('%4x',[PWSU[i].Value])+']'
              else begin
                Node1.Text:=PWSU[i].Name+'['+PWSU[i].CommErr+']';
                PWSU[i].CommErr:='';
              end;
          end;
				end;//遍歷結(jié)束
			end;
    end;
  end;
  
end;

function DBOK:boolean;
var
	reg : TRegistry;
	ts : TStrings;
	i : integer;
begin
	Result:=False;
	reg := TRegistry.Create;
	reg.RootKey := HKEY_CURRENT_USER;
	reg.OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',false);
	ts := TStringList.Create;
	reg.GetValueNames(ts);

	for i := 0 to ts.Count -1 do
	begin
		if ts[i]='PWS AccessDB' then Result:=True;
	end;
	ts.Free;
  reg.CloseKey;
	reg.free;
  if not Result then
  begin
     Showmessage('請您先安裝ODBC數(shù)據(jù)庫'+#13
		+'名稱:PWS AccessDB'+#13+'類型:Microsoft Access Driver (*.mdb)'+#13
		+'數(shù)據(jù)庫名稱:DcsPT.mdb');
    frmMain.Close;
  end;
end;

procedure TfrmMain.FormShow(Sender: TObject);
var
	i:integer;
begin//完成用戶初始化
  DBOK;
	if adoDBSrc.Active then	adoDBSrc.Close;  //檢測用戶以便登錄
	adoDBSrc.CommandText:='select * from user';
	adoDBSrc.Open;
	if adoDBSrc.RecordCount=0 then
		lblFirstRun.Visible:=True
	else
	begin //

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩美女天天操| 成人性生交大片免费| 欧美日韩一区在线| 亚洲一区日韩精品中文字幕| 欧美在线看片a免费观看| 亚洲一线二线三线久久久| 在线视频综合导航| 婷婷国产在线综合| 精品区一区二区| 国产东北露脸精品视频| 中文天堂在线一区| 在线观看不卡视频| 麻豆精品精品国产自在97香蕉| 26uuu久久天堂性欧美| 国产白丝精品91爽爽久久| 国产精品沙发午睡系列990531| 91浏览器入口在线观看| 香蕉久久一区二区不卡无毒影院 | 日av在线不卡| 久久精品视频在线看| voyeur盗摄精品| 丝袜亚洲另类丝袜在线| 国产偷国产偷亚洲高清人白洁| 91免费在线视频观看| 日本三级韩国三级欧美三级| 国产清纯白嫩初高生在线观看91 | 久久久777精品电影网影网 | 在线中文字幕不卡| 久久99久久久久久久久久久| 日本一区二区三区免费乱视频| 91久久一区二区| 久草中文综合在线| 一区二区三区在线视频观看| 91精品国产91综合久久蜜臀| 国产69精品久久777的优势| 一区二区三区在线观看国产| 日韩一区和二区| 99久久精品国产麻豆演员表| 蜜臀久久99精品久久久久久9 | 欧美一区二区三区在线电影| 国产精品一区免费视频| 亚洲成国产人片在线观看| 欧美国产欧美综合| 日韩欧美中文字幕公布| 成人福利视频网站| 激情欧美一区二区三区在线观看| 亚洲激情五月婷婷| 国产欧美日韩在线视频| 91精品国产aⅴ一区二区| 色综合久久久久久久久| 国产成人免费视频精品含羞草妖精| 亚洲图片自拍偷拍| 亚洲三级免费观看| 国产欧美精品区一区二区三区| 555www色欧美视频| 91福利社在线观看| 成人av在线影院| 国产激情一区二区三区四区| 日韩精品1区2区3区| 亚洲一区二区成人在线观看| 中文字幕在线不卡视频| 26uuu久久综合| 精品久久久久一区二区国产| 91精品国产一区二区三区| 欧美午夜宅男影院| 在线中文字幕一区| 欧美性视频一区二区三区| 91美女精品福利| 色综合久久久久综合体| thepron国产精品| av成人动漫在线观看| av一区二区三区| 懂色av一区二区三区免费观看| 激情久久五月天| 国模大尺度一区二区三区| 久久不见久久见中文字幕免费| 天天操天天色综合| 日韩黄色片在线观看| 天天综合色天天| 美女网站色91| 国产呦萝稀缺另类资源| 精品午夜久久福利影院| 久久不见久久见中文字幕免费| 极品尤物av久久免费看| 国产剧情在线观看一区二区 | 成人一区在线看| 国产91精品在线观看| 成人免费看片app下载| jizz一区二区| 在线观看日韩电影| 日韩一区二区电影| 久久久久久**毛片大全| 国产精品久久久久久久久久久免费看| 中文无字幕一区二区三区 | 一区二区在线观看免费视频播放| 中文字幕一区二区视频| 亚洲精品v日韩精品| 亚洲成av人片在线观看| 日韩av中文字幕一区二区| 精品一区精品二区高清| 高清日韩电视剧大全免费| www..com久久爱| 欧美群妇大交群中文字幕| 日韩视频一区二区三区| 国产精品热久久久久夜色精品三区 | 奇米777欧美一区二区| 狠狠狠色丁香婷婷综合激情 | 国产精品一区二区视频| www.成人网.com| 欧美精品丝袜久久久中文字幕| 日韩午夜在线播放| 国产精品免费av| 亚洲二区视频在线| 国产suv精品一区二区883| 色综合久久综合中文综合网| 日韩一级高清毛片| 一区免费观看视频| 蜜桃av一区二区三区| 波多野结衣在线一区| 91精品国产一区二区三区蜜臀| 久久人人爽人人爽| 亚洲v日本v欧美v久久精品| 国产成人啪午夜精品网站男同| 欧美亚洲一区三区| 欧美国产精品中文字幕| 日韩中文欧美在线| 99re这里只有精品首页| 日韩午夜在线影院| 亚洲国产视频在线| 成人永久aaa| 精品久久免费看| 午夜伊人狠狠久久| eeuss鲁片一区二区三区在线看| 这里只有精品视频在线观看| 国产精品久久精品日日| 久久99精品久久久久久久久久久久| 色综合中文字幕国产 | 欧美国产精品专区| 日本视频免费一区| 一本大道av一区二区在线播放| 久久人人97超碰com| 日韩电影在线观看网站| 色94色欧美sute亚洲13| 国产日韩欧美精品一区| 日韩不卡一区二区| 欧美日韩在线不卡| 亚洲天堂精品在线观看| 国产一区 二区 三区一级| 日韩免费高清视频| 日韩综合小视频| 欧美日韩国产综合一区二区 | 国产亚洲一区字幕| 美女视频一区二区三区| 777a∨成人精品桃花网| 亚洲中国最大av网站| 成人一区二区三区中文字幕| 久久久久久亚洲综合影院红桃| 另类欧美日韩国产在线| 欧美亚洲综合色| 一区二区三区四区在线| 99re8在线精品视频免费播放| 国产欧美日韩精品在线| 国产成人免费网站| 国产精品欧美久久久久无广告 | 成人黄色小视频在线观看| 久久久久久免费网| 国产精品一级在线| 国产亚洲一区二区三区在线观看 | 在线播放国产精品二区一二区四区| 亚洲欧洲成人自拍| 色婷婷久久久综合中文字幕| 日韩一区欧美一区| 91黄视频在线观看| 夜夜爽夜夜爽精品视频| 欧美丝袜丝交足nylons| 亚洲成人动漫一区| 91精品国产欧美日韩| 久久 天天综合| 欧美国产乱子伦| 色综合天天狠狠| 亚洲大片一区二区三区| 欧美一级淫片007| 国产乱人伦偷精品视频不卡| 久久久高清一区二区三区| av中文字幕不卡| 亚洲第一精品在线| 欧美xxxxx裸体时装秀| 国产精品资源站在线| 中文字幕一区在线观看视频| 91在线高清观看| 日本成人在线看| 国产欧美日韩另类一区| 一本大道av伊人久久综合| 日韩激情av在线| 久久精子c满五个校花| 色综合天天综合网天天狠天天| 亚洲在线视频一区| 精品国产在天天线2019| 不卡av在线免费观看| 三级成人在线视频|