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

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

?? main.pas.~123~

?? 給出一個工業(yè)PLC聯(lián)網(wǎng)監(jiān)控的例子
?? ~123~
?? 第 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);
  prjInfo.SavDataTime:=Now;
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('%d',[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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人自拍一区| 成人黄色在线视频| 99久久精品国产导航| 欧美日韩国产电影| 国产精品三级av在线播放| 日韩精品一卡二卡三卡四卡无卡| 粉嫩一区二区三区性色av| 欧美日韩国产高清一区| 日韩理论片网站| 国产麻豆91精品| 91精品国产品国语在线不卡| 樱花草国产18久久久久| 成人自拍视频在线| 精品国产自在久精品国产| 亚洲一区二区欧美| 91视频你懂的| 一区免费观看视频| 成人午夜在线免费| 中文字幕不卡在线观看| 激情五月播播久久久精品| 在线成人午夜影院| 亚洲成a人片在线观看中文| 色婷婷国产精品| 中文字幕欧美日本乱码一线二线| 国产精品996| 国产天堂亚洲国产碰碰| 国产福利精品一区二区| 久久综合久久鬼色中文字| 免费在线欧美视频| 欧美一区二区黄| 日韩av成人高清| 91精品国模一区二区三区| 日韩高清不卡在线| 欧美一区二区三区白人| 老鸭窝一区二区久久精品| 欧美成人国产一区二区| 激情国产一区二区| 久久久久久久久久看片| 盗摄精品av一区二区三区| 日本一区二区成人| 99久久免费精品高清特色大片| 日韩美女精品在线| 欧美亚洲一区二区三区四区| 亚洲一区二区欧美日韩| 欧美一卡在线观看| 国产综合色在线| 国产精品污www在线观看| 成人精品在线视频观看| 亚洲人成亚洲人成在线观看图片 | 欧美午夜免费电影| 亚洲成人免费视频| 日韩午夜中文字幕| 国产成人在线视频播放| 亚洲欧美一区二区在线观看| 在线欧美日韩精品| 肉丝袜脚交视频一区二区| 日韩欧美中文一区| 国产成人精品免费网站| 亚洲丝袜精品丝袜在线| 6080午夜不卡| 国产超碰在线一区| 亚洲免费色视频| 在线播放91灌醉迷j高跟美女| 麻豆91精品视频| 中文成人av在线| 欧美日韩高清一区二区| 国产乱国产乱300精品| 亚洲欧洲日韩av| 欧美一区二区在线看| 成人手机在线视频| 午夜精品免费在线观看| 久久久不卡网国产精品二区| 99re热这里只有精品免费视频| 日韩和欧美一区二区三区| 欧美激情一区二区| 69p69国产精品| 成人av免费在线观看| 日韩电影一区二区三区四区| 国产喷白浆一区二区三区| 欧美日韩国产另类不卡| av在线不卡免费看| 国产乱码精品一品二品| 日韩中文字幕区一区有砖一区 | 91麻豆精品国产91久久久久| 国产成人在线网站| 美国毛片一区二区| 亚洲电影中文字幕在线观看| 欧美激情一区在线观看| 日韩精品一区二区三区四区视频| 91免费小视频| 床上的激情91.| 精品中文字幕一区二区 | 日韩理论片中文av| 国产欧美日韩不卡| 精品久久久网站| 欧美精品少妇一区二区三区| 91麻豆精品视频| 粉嫩欧美一区二区三区高清影视| 日本在线不卡视频| 亚洲123区在线观看| 亚洲资源中文字幕| 亚洲欧美日韩一区| 中文字幕在线视频一区| 久久免费午夜影院| 精品蜜桃在线看| 日韩女同互慰一区二区| 欧美精品丝袜中出| 欧美精品日韩综合在线| 欧美日免费三级在线| 色综合视频在线观看| av日韩在线网站| 99久久精品国产毛片| 95精品视频在线| 色综合久久久久久久久久久| 9色porny自拍视频一区二区| 成人国产亚洲欧美成人综合网 | 成人免费在线播放视频| 国产女人18毛片水真多成人如厕| 久久毛片高清国产| 中文字幕免费在线观看视频一区| 欧美高清在线一区| 亚洲色图一区二区| 亚洲精品一二三| 午夜精品成人在线| 毛片不卡一区二区| 国产一区二区免费视频| 粉嫩久久99精品久久久久久夜| 成人h版在线观看| 欧洲一区在线电影| 欧美一卡二卡三卡| www久久精品| 欧美国产成人在线| 亚洲愉拍自拍另类高清精品| 亚洲一本大道在线| 精品一区二区免费在线观看| 国产一区二三区好的| av成人动漫在线观看| 欧美偷拍一区二区| 精品精品国产高清一毛片一天堂| 国产亚洲一本大道中文在线| 中文字幕制服丝袜一区二区三区| 亚洲乱码国产乱码精品精98午夜| 日韩一区精品字幕| 不卡的av中国片| 欧美三级视频在线观看| 欧美变态tickle挠乳网站| 欧美国产一区视频在线观看| 一级特黄大欧美久久久| 日本不卡中文字幕| 成人自拍视频在线| 在线观看91av| 中文一区一区三区高中清不卡| 亚洲伦在线观看| 九九精品视频在线看| 色综合天天综合网天天狠天天| 欧美一区二区成人6969| 中文字幕在线一区二区三区| 日本成人在线电影网| 91偷拍与自偷拍精品| 日韩精品一区二区三区swag| 一区在线观看视频| 91蝌蚪porny九色| 精品国产不卡一区二区三区| 亚洲女爱视频在线| 国产精品99久久久久久有的能看 | 亚洲成va人在线观看| 国产成人午夜高潮毛片| 欧美人妇做爰xxxⅹ性高电影| 国产欧美视频一区二区| 日韩不卡手机在线v区| 色老汉一区二区三区| 国产日韩精品一区二区浪潮av | 91精品欧美久久久久久动漫| 亚洲日本在线天堂| 丁香婷婷综合激情五月色| 欧美一区二区三区男人的天堂| 亚洲乱码国产乱码精品精98午夜| 国产一区二区三区四区五区入口| 欧美老女人在线| 亚洲一区自拍偷拍| 99久久精品一区二区| 国产婷婷色一区二区三区四区| 奇米影视7777精品一区二区| 在线视频国产一区| 亚洲人成伊人成综合网小说| 国产成人自拍在线| 久久久久88色偷偷免费| 精品亚洲国产成人av制服丝袜| 欧美女孩性生活视频| 樱桃视频在线观看一区| 色综合天天综合网天天狠天天| 中文字幕 久热精品 视频在线| 国产一区二区三区精品欧美日韩一区二区三区| 在线观看av一区| 亚洲国产欧美另类丝袜| 91成人国产精品| 亚洲国产成人tv| 欧美另类变人与禽xxxxx| 日韩主播视频在线| 日韩三级电影网址|