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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.pas.~119~

?? 給出一個工業PLC聯網監控的例子
?? ~119~
?? 第 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;//保存數據的時間坐標
	end;
	TSynComm=record  				//設備采樣同步標志體
		CommErrCount:integer; //設備通訊失敗計數器
		CurrentAddr,					//當前通訊地址
		CurrentUnit:integer;  //當前PWS單元號
		NextAddr:Boolean;			//是否允許采集下個地址信息
		U_ID:integer;				  //巡檢計數器標志
	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;//地址信息  動態數組使用時采用 SetLength 初始化
	VAdd:array of integer;//有效地址數組
	AddrCount:integer;
	RegisterAddrCount:integer=0;//有效地址總數

	prjInfo:TProjectInfo;//工程信息
	mSynComm:TSynComm;   //設備采樣同步標志體
  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:='系統待機中......';
    RunOnOff(False); //未開始監控
	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('您確認要退出本監控系統嗎?',
		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 //設定值遍歷
		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  //已經有根節點了
					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;//找到節點
							break;
						end;// //找到節點
					end;//遍歷結束
					if not nodeFg then //遍歷后未找到節點
					begin            //新建節點
						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;////遍歷后未找到節點
          ///
					snode:=PWSU[i].Name+'['+Format('%4x',[PWSU[i].Value])+']';
					Node2:= AddChild(Node1,snode);
					Node2.ImageIndex:=25;
				end;
			end;//此地址有效
		end;//設定值遍歷
	end;//with trvAllDev.Items do
  trvAllDev.FullExpand;//展開所有節點
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 //設定值遍歷
		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;//找到節點
          end;// //找到主節點
          if nodeFg and (Pos(PwsU[i].Name,Node1.Text)>0) then //再找子節點
          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;//遍歷結束
			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數據庫'+#13
		+'名稱:PWS AccessDB'+#13+'類型:Microsoft Access Driver (*.mdb)'+#13
		+'數據庫名稱: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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区欧美二区| 欧美喷潮久久久xxxxx| 久久久久久久久蜜桃| 日韩高清中文字幕一区| 欧美日韩一区国产| 亚洲国产裸拍裸体视频在线观看乱了 | 久久久另类综合| 国内精品视频一区二区三区八戒| 日韩精品在线一区二区| 美女视频黄免费的久久 | 亚洲精选一二三| 97久久精品人人做人人爽50路| 国产精品拍天天在线| 成人午夜av电影| 中文字幕视频一区| 色婷婷激情久久| 亚洲高清视频的网址| 在线免费一区三区| 亚洲香肠在线观看| 欧美日韩国产精品自在自线| 日韩电影在线观看网站| 欧美一区二区黄| 另类小说一区二区三区| 久久免费电影网| 国产激情精品久久久第一区二区| 欧美激情一二三区| 91丨porny丨中文| 亚洲精品美腿丝袜| 欧美日韩国产首页在线观看| 天堂va蜜桃一区二区三区| 日韩一级大片在线| 狠狠色狠狠色合久久伊人| 久久精品无码一区二区三区| 国产超碰在线一区| 自拍偷拍国产亚洲| 欧美色大人视频| 麻豆极品一区二区三区| 久久久久国产精品麻豆ai换脸| 国产成人精品一区二区三区四区 | 欧美成人高清电影在线| 国产成人精品网址| 一区二区三区四区视频精品免费| 欧美日韩中字一区| 精品一区二区三区影院在线午夜| 国产亚洲综合色| 91丨九色丨蝌蚪富婆spa| 午夜精品久久久久久久久| 日韩色视频在线观看| 国产91对白在线观看九色| 亚洲老司机在线| 日韩午夜激情免费电影| 国产美女在线观看一区| 亚洲欧美日韩人成在线播放| 欧美猛男超大videosgay| 国产在线视频不卡二| 国产精品超碰97尤物18| 777奇米成人网| 国产成人精品免费看| 亚洲影院在线观看| 精品成人一区二区三区四区| av影院午夜一区| 视频一区视频二区中文字幕| 久久久久综合网| 欧美丝袜自拍制服另类| 激情小说亚洲一区| 亚洲精品国产视频| 日韩一区二区三免费高清| 不卡视频一二三| 三级欧美在线一区| 国产精品三级视频| 6080日韩午夜伦伦午夜伦| 成人免费福利片| 日韩精品一二三四| 国产精品久久久久毛片软件| 欧美电影在哪看比较好| 成人污污视频在线观看| 日本成人中文字幕| 亚洲视频免费看| 精品久久久久一区二区国产| 在线观看网站黄不卡| 国产一区二区三区综合| 亚洲成在线观看| 国产精品国产三级国产| 日韩免费在线观看| 欧美午夜精品久久久久久超碰| 国产乱子伦视频一区二区三区 | 五月天激情综合网| 亚洲欧美中日韩| 久久无码av三级| 欧美精品色综合| 91在线观看免费视频| 国产精品综合在线视频| 日韩精品欧美精品| 亚洲精品欧美二区三区中文字幕| 国产午夜精品久久| 欧美一区二区三区视频免费 | 国产欧美1区2区3区| 日韩午夜电影av| 亚洲国产精品成人综合色在线婷婷| 欧美久久婷婷综合色| 日本韩国一区二区三区| 国产电影一区在线| 精品一区二区在线观看| 亚洲国产欧美在线人成| 亚洲同性gay激情无套| 久久久蜜臀国产一区二区| 日韩午夜电影在线观看| 欧美日韩国产在线观看| 91亚洲精品乱码久久久久久蜜桃 | 日韩国产一二三区| 一区二区三区 在线观看视频| 中文字幕一区日韩精品欧美| 欧美经典一区二区三区| 精品欧美乱码久久久久久1区2区| 欧美精选在线播放| 欧美人成免费网站| 欧美日韩综合在线| 欧美在线免费观看亚洲| 色综合欧美在线视频区| 不卡av在线网| 成人sese在线| 成人av在线看| 成人app网站| 成人免费毛片高清视频| 懂色av一区二区夜夜嗨| 国产美女在线精品| 国产精品综合网| 国产成人亚洲综合a∨婷婷图片| 黄色精品一二区| 国产麻豆欧美日韩一区| 国产一区二区三区精品视频| 精品一区二区三区不卡| 国内精品写真在线观看| 激情成人综合网| 国产高清亚洲一区| 岛国精品在线观看| av不卡在线观看| 91在线观看美女| 欧洲中文字幕精品| 欧美亚洲尤物久久| 欧美精品久久一区二区三区| 91精品婷婷国产综合久久竹菊| 欧美人与z0zoxxxx视频| 欧美日韩国产大片| 日韩手机在线导航| 欧美电影免费提供在线观看| 精品国产免费人成在线观看| 久久精品一区二区三区四区| 国产人久久人人人人爽| 国产精品免费视频观看| 亚洲人成网站在线| 亚洲综合在线五月| 午夜亚洲国产au精品一区二区| 奇米色777欧美一区二区| 国产伦精品一区二区三区免费迷| 国产伦精品一区二区三区免费迷 | av电影在线观看完整版一区二区| 97久久精品人人爽人人爽蜜臀| 欧美偷拍一区二区| 日韩欧美中文字幕一区| 久久久久久电影| 亚洲欧美福利一区二区| 午夜影视日本亚洲欧洲精品| 裸体在线国模精品偷拍| 国产成人啪免费观看软件| 色哦色哦哦色天天综合| 欧美日韩午夜在线| 久久奇米777| 日韩理论片在线| 天天做天天摸天天爽国产一区| 久久黄色级2电影| 国产成人三级在线观看| 日本国产一区二区| 日韩欧美成人一区| 欧美国产视频在线| 久久久久9999亚洲精品| 久久综合丝袜日本网| 国产精品乱人伦中文| 国产精品萝li| 一区二区成人在线| 日韩激情av在线| 狠狠久久亚洲欧美| 成人网男人的天堂| 欧美日本在线看| 久久综合色婷婷| 亚洲日本一区二区三区| 免费成人结看片| 高清久久久久久| 91成人免费在线视频| 久久久久久久久蜜桃| 中文字幕亚洲区| 亚洲大片一区二区三区| 粉嫩一区二区三区性色av| 色屁屁一区二区| 日韩欧美成人激情| 国产精品毛片久久久久久久| 日本最新不卡在线| 成人性视频免费网站| 欧美挠脚心视频网站| 国产一区二区三区综合|