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

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

?? main.pas.~118~

?? 給出一個(gè)工業(yè)PLC聯(lián)網(wǎng)監(jiān)控的例子
?? ~118~
?? 第 1 頁 / 共 2 頁
字號(hào):
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, // 保存時(shí)間長度間隔多少分鐘  最短5分鐘
		defWin:integer;
    SavDataTime:TDateTime;//保存數(shù)據(jù)的時(shí)間坐標(biāo)
	end;
	TSynComm=record  				//設(shè)備采樣同步標(biāo)志體
		CommErrCount:integer; //設(shè)備通訊失敗計(jì)數(shù)器
		CurrentAddr,					//當(dāng)前通訊地址
		CurrentUnit:integer;  //當(dāng)前PWS單元號(hào)
		NextAddr:Boolean;			//是否允許采集下個(gè)地址信息
		U_ID:integer;				  //巡檢計(jì)數(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;//地址信息  動(dòng)態(tài)數(shù)組使用時(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)待機(jī)中......';
    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+'------您的用戶名輸入有錯(cuò)!------'+#13+#13);
			adoDBSrc.Active:=False;
			exit;
		end;
		if edtPwd.Text<>adoDBSrc.FieldByName('UserPass').AsString then
		begin
			showmessage('密碼輸入錯(cuò)誤!');
			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 //還沒有根接點(diǎn)
				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é)點(diǎn)了
					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é)點(diǎn)
							break;
						end;// //找到節(jié)點(diǎn)
					end;//遍歷結(jié)束
					if not nodeFg then //遍歷后未找到節(jié)點(diǎn)
					begin            //新建節(jié)點(diǎn)
						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é)點(diǎn)
          ///
					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é)點(diǎn)
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é)點(diǎn)
          end;// //找到主節(jié)點(diǎn)
          if nodeFg and (Pos(PwsU[i].Name,Node1.Text)>0) then //再找子節(jié)點(diǎn)
          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 //
		cbxUser.Items.Clear;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷久久一区二区三区麻豆| 天天av天天翘天天综合网| 欧美一区二区三区免费大片| 日本黄色一区二区| 色乱码一区二区三区88| 色成年激情久久综合| 色婷婷综合久久久中文字幕| 91精品办公室少妇高潮对白| 色综合视频一区二区三区高清| jlzzjlzz亚洲女人18| gogogo免费视频观看亚洲一| 91免费视频观看| 91国偷自产一区二区开放时间| 91传媒视频在线播放| 欧美日韩aaaaaa| 日韩欧美第一区| 亚洲国产精品ⅴa在线观看| 中文字幕乱码一区二区免费| 亚洲激情图片小说视频| 日韩不卡一二三区| 国产成人免费网站| 91麻豆国产在线观看| 欧美日韩aaaaaa| 久久精品亚洲麻豆av一区二区| 国产精品网站在线| 亚洲国产人成综合网站| 久久99深爱久久99精品| jizzjizzjizz欧美| 欧美一区二区三区免费视频| 国产欧美精品一区二区色综合| 亚洲免费观看高清完整版在线观看| 亚洲成人综合网站| 国产91精品精华液一区二区三区| 色成人在线视频| 国产三级三级三级精品8ⅰ区| 亚洲图片另类小说| 国产一区二区三区综合| 欧美中文字幕一区二区三区亚洲| 日韩精品一区二区三区蜜臀| 亚洲免费观看高清完整版在线| 日韩成人一区二区三区在线观看| 国产91高潮流白浆在线麻豆| 91精品国产综合久久香蕉的特点| 国产女同互慰高潮91漫画| 天天av天天翘天天综合网| 成人av集中营| 久久久精品影视| 日韩中文字幕区一区有砖一区| aaa亚洲精品| 日本一区二区三级电影在线观看 | 欧美日韩亚洲综合在线| 日本一区二区三区四区| 久久电影网站中文字幕| 欧美亚日韩国产aⅴ精品中极品| 久久精品夜色噜噜亚洲a∨| 美女精品自拍一二三四| 91久久精品国产91性色tv | 欧美日韩成人综合| 成人免费一区二区三区视频 | 国产91丝袜在线观看| 精品三级在线观看| 日韩国产一二三区| 欧美视频精品在线| 亚洲精品高清在线观看| 99精品在线观看视频| 欧美韩日一区二区三区四区| 激情文学综合插| 精品99999| 国产综合久久久久久久久久久久| 欧美精品久久一区| 午夜激情综合网| 欧美日韩性生活| 日日嗨av一区二区三区四区| 欧美日韩亚洲丝袜制服| 日本va欧美va瓶| 日韩精品一区二区三区视频| 免费高清不卡av| 久久亚洲私人国产精品va媚药| 久久成人免费日本黄色| 久久无码av三级| 国产成都精品91一区二区三| 中文幕一区二区三区久久蜜桃| 国产一区二区三区日韩 | 一级精品视频在线观看宜春院 | 人人狠狠综合久久亚洲| 日韩欧美国产综合一区| 国产一区视频网站| 亚洲欧洲www| 色噜噜久久综合| 日韩成人午夜精品| 2020国产精品自拍| 不卡在线视频中文字幕| 亚洲欧美乱综合| 欧美一区二区高清| 国产真实乱子伦精品视频| 国产欧美中文在线| 在线日韩av片| 蜜桃一区二区三区四区| 欧美激情在线免费观看| 欧美在线看片a免费观看| 肉色丝袜一区二区| 国产日韩视频一区二区三区| 99免费精品在线观看| 日一区二区三区| 中文一区一区三区高中清不卡| 91麻豆国产香蕉久久精品| 日本欧美一区二区三区乱码| 久久精品亚洲一区二区三区浴池| 91在线精品秘密一区二区| 麻豆精品精品国产自在97香蕉 | 欧美电影免费观看高清完整版在 | 亚洲h精品动漫在线观看| 国产亚洲成av人在线观看导航| 成人午夜大片免费观看| 日韩精品一级中文字幕精品视频免费观看| 日韩一级高清毛片| 色女孩综合影院| 国产成人欧美日韩在线电影| 婷婷亚洲久悠悠色悠在线播放| 国产人久久人人人人爽| 欧美一区二区三区在线观看视频| 国产精品一区二区不卡| 日韩精品一卡二卡三卡四卡无卡| 国产精品久久久久精k8| 欧美va亚洲va在线观看蝴蝶网| 欧亚洲嫩模精品一区三区| 国产aⅴ精品一区二区三区色成熟| 亚洲综合视频在线观看| 国产精品久久99| 久久久精品2019中文字幕之3| 精品视频一区二区不卡| 91网站在线播放| 波多野结衣一区二区三区| 韩国av一区二区三区四区| 爽好多水快深点欧美视频| 亚洲免费色视频| 中文字幕制服丝袜一区二区三区 | 国产超碰在线一区| 久久国产生活片100| 日韩激情av在线| 亚洲成av人片在www色猫咪| 亚洲日本免费电影| 国产精品麻豆99久久久久久| 国产夜色精品一区二区av| 日韩欧美卡一卡二| 91精品国产日韩91久久久久久| 91成人在线观看喷潮| 欧美午夜免费电影| 精品视频1区2区| 91精品国产欧美一区二区成人 | 欧洲生活片亚洲生活在线观看| www.久久久久久久久| 97精品久久久午夜一区二区三区| 高清视频一区二区| 成人午夜电影网站| 99视频在线精品| 91久久精品午夜一区二区| 欧美日韩在线播放三区四区| 欧美在线不卡一区| 欧美女孩性生活视频| 欧美成人伊人久久综合网| 欧美草草影院在线视频| 久久久影视传媒| 中文字幕在线不卡国产视频| 国产精品久久久久影院亚瑟| 亚洲精品伦理在线| 亚洲成av人**亚洲成av**| 日本午夜精品视频在线观看| 国产自产v一区二区三区c| 99麻豆久久久国产精品免费优播| 91视频在线观看免费| 欧美日韩中字一区| 精品成人私密视频| 亚洲精选一二三| 琪琪一区二区三区| 国产精品亚洲а∨天堂免在线| av高清不卡在线| 51精品久久久久久久蜜臀| www欧美成人18+| 亚洲另类春色校园小说| 人妖欧美一区二区| hitomi一区二区三区精品| 欧美精品 日韩| 国产欧美一区二区精品婷婷| 一区二区三区鲁丝不卡| 国产综合色视频| 欧美在线观看视频在线| 国产网红主播福利一区二区| 夜夜嗨av一区二区三区 | 久久中文字幕电影| 国产日本亚洲高清| 石原莉奈在线亚洲三区| 成人黄色在线视频| 3751色影院一区二区三区| 欧美国产在线观看| 久久国产精品露脸对白| 欧美三级韩国三级日本一级| 国产日韩精品一区二区浪潮av| 午夜免费久久看| 91在线无精精品入口|