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

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

?? main.pas.~121~

?? 給出一個工業PLC聯網監控的例子
?? ~121~
?? 第 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('%d',[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一区二区三区免费野_久草精品视频
亚洲蜜臀av乱码久久精品蜜桃| 亚洲一二三四区不卡| 色av综合在线| 国产一区二区在线观看免费 | 欧美一区二区三区爱爱| 国产成人日日夜夜| 免费国产亚洲视频| 亚洲精品国产精华液| 久久久www成人免费毛片麻豆| 欧美另类z0zxhd电影| 91蜜桃婷婷狠狠久久综合9色| 激情六月婷婷综合| 麻豆精品久久精品色综合| 亚洲最新视频在线观看| 国产精品久久三| 久久久影院官网| 精品国产一区二区亚洲人成毛片| 欧美日韩成人综合| 欧美性感一区二区三区| 色综合久久久久综合体| 成人黄动漫网站免费app| 激情综合五月婷婷| 免费av成人在线| 免费成人av在线| 日本欧美大码aⅴ在线播放| 亚洲成人激情社区| 亚洲午夜久久久| 亚洲在线视频免费观看| 一区二区三区四区在线播放 | 亚洲一级片在线观看| 最新国产成人在线观看| 国产精品久久久久久户外露出| 国产女主播视频一区二区| 久久精品在线免费观看| 久久精品亚洲麻豆av一区二区 | 亚洲国产日韩a在线播放性色| 亚洲日韩欧美一区二区在线| 专区另类欧美日韩| 成人免费视频在线观看| 亚洲欧美日韩在线| 亚洲影视在线播放| 偷偷要91色婷婷| 日韩福利电影在线观看| 蜜臀av一区二区三区| 蜜臀a∨国产成人精品| 狠狠色综合日日| 国产成人在线网站| 成年人国产精品| 91官网在线观看| 欧美日本在线播放| 日韩一区二区三| 久久精品欧美一区二区三区不卡| 国产欧美日韩另类一区| 中文字幕一区二区三区在线观看| 亚洲天堂网中文字| 一区二区三区不卡视频| 男人的j进女人的j一区| 国产一区二区精品久久99| 国产传媒一区在线| 色婷婷久久99综合精品jk白丝| 精品视频1区2区3区| 日韩精品在线一区| 国产欧美综合在线观看第十页| 国产精品久久久爽爽爽麻豆色哟哟 | 久久91精品久久久久久秒播| 国产综合色视频| 狠狠色丁香久久婷婷综合_中| 国产麻豆精品在线| 一本久久精品一区二区| 91麻豆精品国产自产在线观看一区| 精品日韩在线一区| 亚洲免费视频成人| 琪琪一区二区三区| 99久精品国产| 日韩欧美国产电影| 亚洲人成人一区二区在线观看| 五月天精品一区二区三区| 国产精品66部| 欧美午夜不卡视频| 国产午夜三级一区二区三| 亚洲精品视频一区二区| 麻豆91在线播放| 91免费看片在线观看| 日韩视频免费直播| 亚洲乱码国产乱码精品精小说 | 日韩—二三区免费观看av| 懂色av噜噜一区二区三区av| 欧美日韩高清一区| 中文字幕一区二区在线播放 | 欧美色爱综合网| 久久精品夜色噜噜亚洲aⅴ| 亚洲chinese男男1069| 成人综合在线网站| 日韩欧美中文字幕制服| 亚洲欧美日韩综合aⅴ视频| 国内精品嫩模私拍在线| 欧美日韩午夜影院| 综合色天天鬼久久鬼色| 国产精品亚洲午夜一区二区三区 | 色综合久久九月婷婷色综合| 日韩欧美精品在线| 亚洲精品视频自拍| 成人性视频免费网站| 欧美大片拔萝卜| 亚洲一区二区欧美| 91片在线免费观看| 国产农村妇女毛片精品久久麻豆| 日韩成人伦理电影在线观看| 色狠狠桃花综合| 国产精品初高中害羞小美女文| 激情五月激情综合网| 欧美麻豆精品久久久久久| 亚洲免费观看高清| gogo大胆日本视频一区| 中文字幕乱码久久午夜不卡| 麻豆视频观看网址久久| 337p亚洲精品色噜噜噜| 亚洲一区二区三区四区不卡| 91免费国产在线| 亚洲欧洲一区二区在线播放| 高清成人在线观看| 国产欧美一区二区精品性| 国产一区日韩二区欧美三区| 日韩三级免费观看| 欧美a一区二区| 欧美电影一区二区三区| 亚洲 欧美综合在线网络| 欧美在线视频全部完| 亚洲欧美日韩成人高清在线一区| 成人污视频在线观看| 久久九九久久九九| 国产91在线观看丝袜| 国产亚洲精品精华液| 国产激情偷乱视频一区二区三区| 国产亚洲一二三区| 成人激情午夜影院| 自拍偷拍国产精品| 欧美综合欧美视频| 亚洲一二三四区不卡| 欧美美女黄视频| 久久99热99| 久久久www成人免费无遮挡大片| 国产高清成人在线| 亚洲欧洲精品天堂一级| 色综合一区二区| 亚洲动漫第一页| 欧美成人一区二区三区片免费| 狠狠色伊人亚洲综合成人| 国产天堂亚洲国产碰碰| 成人精品小蝌蚪| 亚洲黄色av一区| 欧美一区二区三区的| 国产主播一区二区| 国产精品少妇自拍| 在线观看www91| 秋霞电影网一区二区| 26uuuu精品一区二区| 成人av免费观看| 亚洲成人av中文| 精品免费国产一区二区三区四区| 国产传媒久久文化传媒| 亚洲美女免费视频| 91精品国产色综合久久ai换脸| 国产一区二区女| 亚洲精品第一国产综合野| 8x8x8国产精品| 成人一区在线看| 午夜精品影院在线观看| 久久亚洲私人国产精品va媚药| www.久久久久久久久| 亚洲午夜在线视频| 久久久一区二区| 欧美在线免费视屏| 国产一区二区视频在线| 亚洲欧洲av色图| 日韩欧美一级二级三级| 97久久精品人人做人人爽| 日本特黄久久久高潮| 国产精品二三区| 日韩精品中文字幕一区二区三区 | 久久婷婷成人综合色| 日本福利一区二区| 国内精品不卡在线| 亚洲高清不卡在线观看| 中文字幕av一区 二区| 欧美巨大另类极品videosbest | 欧美日韩国产片| 高清av一区二区| 日韩av一区二区三区四区| 中文在线一区二区| 日韩一级在线观看| 91成人网在线| 丁香婷婷综合色啪| 久久精品国产99久久6| 亚洲国产成人va在线观看天堂| 久久久久国产一区二区三区四区 | 洋洋成人永久网站入口| 国产欧美日韩视频在线观看| 欧美一区二区不卡视频| 欧美日韩精品系列|