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

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

?? opcbrowserclass.cls

?? 很好的Kepware的VB的OPC Client例子.
?? CLS
?? 第 1 頁 / 共 2 頁
字號:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "OPCBrowserClass"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
' The OPCBrowserClass object houses all of the functionallity used
' to interact with an OPC server's tag browser.  This OPCBrowserClass
' is used here largely to wrap the functions supplied by the Automation
' interface with error handlers.  Unlike the OPCServerClass,
' OPCGroupClass, and OPCItemClass, the OPCBrowserClass simply provides
' consistancy in the of the error handling and rounds out the classes
' supplied by this example.  As is the case with any object based
' design using this class module will allow you to modify the browser
' interface if needed.  I have not wrapped all of the function supplied
' by the OPCBrowser object but adding others if needed is easy.
'
' In this example the frmAddItem form contains all of the real meat
' for actually browsing the tag space of an OPC Server.  The main code
' is housed there due largely to the fact that most of what needs to be
' be done when browsing is the management of the Treeview and Listview
' controls used to display the tags.

Option Explicit
Option Base 1

' This is the actuial Automation Interface browser object this is
' wrapped by this class.
'
Dim OPCBrowserObject As OPCBrowser


' This function simply sets the OPCBrowse object that will be used by
' this instance of the OPCBrowserClass object.  This is normally done
' by using the OPCServerClass function GetServerBrowseObject that
' should be used to nromally get this object class.  You can however
' create an OPCBrowserClass object yourself if you have an OPCServer
' object upon which you can use the .CreateBrowser method and pass the.
' resulting OPCBrower object to this function.
'
Function SetBrowserObject(ByVal OPCBrowseObj As OPCBrowser)
    Set OPCBrowserObject = OPCBrowseObj
End Function

' This function allows you to determine the format of the browse space
' available from the connected OPC Server.  There are two possible
' types of browse space your application may encounter.  There
' is Flat(OPCFlat = 2) and Hierarchial(OPCHierarchical = 1}. Most
' OPC Servers you will emcounter by default support a Hierarchial
' browse space.  Hierarchial means that the tags or items available
' in the server will be organized into a tree like structure with
' branches and leafs.  This organiztion is the same as what you
' see in your Window's Explorer where you have directories and files.
' In Hierarchial mode the your code must be able to move up and down
' the branches of the tree inorder to access the various tags found at
' each level in the tree.
'
' In a Flat browse space the server returns all of the items/tags
' at a single level.  Just because the server returns all of the items
' at a single level doesn't mean the the item IDs for all of item will
' be simple references.  The item IDs may still contain complex grouping
' information that your application may find useful.
'
' In this example the frmAddItem form contains all of the actual
' code that does the real work of moving around in the browse space
' of of the OPC Server.
'
Function GetBrowserOrganization(ByRef Organization As Long)
'Set error handling for OPC Function
    On Error GoTo ShowOPCGetBrowserOrganizationError
    
    Organization = OPCBrowserObject.Organization
    GetBrowserOrganization = True
    GoTo SkipOPCGetBrowserOrganizationError
    
ShowOPCGetBrowserOrganizationError:
    Call DisplayOPC_COM_ErrorValue("GetBrowserOrganization", Err.Number)
    GetBrowserOrganization = False
SkipOPCGetBrowserOrganizationError:
    
End Function

' The next two functions are used to move around in the browser space
' of the OPC Server.  When browsing an OPC server you must tell the
' server where to go on it's browse tree.  This is down using the
' following functions.  By default you start at the root of the
' OPC Server's browse space.  You then use the function ShowBranches
' and GetItemCount to determine if there are any other branches
' available from this point in the tree.  If there are more branches
' available you can use the MoveDown function and specify a branch
' to move down to.  Once you move down a level you will need to call the
' ShowBranches function again to see if there are branches at this new
' level of the OPC server browse space.  These steps are repeated until
' you reach the end of a paticular brance.  Additionally as you move to
' each branch including the root you will also be calling ShowLeafs
' to determine of there are any tags available at a given branch.
'
' In this exmaple I use only the MoveToRoot and MoveDown functions
' to browse the server.  In the frmAddItem form you will see that
' I keep track of the branch structure as you navigate the browse
' space.  This allows me to simply move to root and then do a series
' of MoveDown operations to get to the desired branch.  The OPCBrowser
' object also supports a MoveUp and MoveTo operation.  I don't use
' either in this example.

' The MoveToRoot function will return the OPC Server's browse position
' to the root of the browse space.  This makes staying in sync with the
' the OPC Server's position in the browse space easy. See the
' frmAddItem form for more on the use of this function.
'
Function MoveToRoot()
'Set error handling for OPC Function
    On Error GoTo ShowOPCMoveToRootError
    
    OPCBrowserObject.MoveToRoot
    MoveToRoot = True
    GoTo SkipOPCMoveToRootError
    
ShowOPCMoveToRootError:
    Call DisplayOPC_COM_ErrorValue("MoveToRoot", Err.Number)
    MoveToRoot = False
SkipOPCMoveToRootError:

End Function

' The MoveDown function moves the OPC Server's browse position down
' to the branch specified by the string "Branch".  When passing a
' branch name to this function you should try to use the branch name
' exactly as it was given to you by the ShwoBranches function.  This
' will insure that you don't give the server an improper name and get
' the OPC Server's browse space out of sync with you own.  See the
' frmAddItem form for more on the use of this function.
'
Function MoveDown(ByVal Branch As String)
'Set error handling for OPC Function
    On Error GoTo ShowOPCMoveDownError
    
    OPCBrowserObject.MoveDown (Branch)
    MoveDown = True
    GoTo SkipOPCMoveDownError
    
ShowOPCMoveDownError:
    Call DisplayOPC_COM_ErrorValue("MoveDown", Err.Number)
    MoveDown = False
SkipOPCMoveDownError:

End Function

' The MoveUp function move the OPC Server's browse position up
' one level from the current position.  While you can use this
' function in conjunction with the MoveDown to navigate the
' browse space of teh OPC server.  I suggest that you only use
' the MoveDown and MoveToRoot functions to traverse the browse
' space.  You will see more in the frmAddItem form code.
'
Function MoveUp()
'Set error handling for OPC Function
    On Error GoTo ShowOPCMoveUpError
    
    OPCBrowserObject.MoveUp
    MoveUp = True
    GoTo SkipOPCMoveUpError
    
ShowOPCMoveUpError:
    Call DisplayOPC_COM_ErrorValue("MoveUp", Err.Number)
    MoveUp = False
SkipOPCMoveUpError:

End Function

' The GetItemCount function servers two purposes depending the
' function calls that proceed it.  If the ShowBranches function
' is called prior to GetItemCount, the value returned here will
' be the number of branches available under the current browse
' position of the OPC server.
' If the ShowLeafs function is called prior to GetItemCount,
' the value returned here will be the number of leafs(Items/Tags)
' available at the current browse position of the OPC server.
'
Function GetItemCount()
'Set error handling for OPC Function
    On Error GoTo ShowOPCGetItemCountError
    
    GetItemCount = OPCBrowserObject.Count
    GoTo SkipOPCGetItemCountError
    
ShowOPCGetItemCountError:
    Call DisplayOPC_COM_ErrorValue("GetItemCount", Err.Number)
    GetItemCount = 0
SkipOPCGetItemCountError:

End Function

' The ShowBranches function will cause the OPC server to load the
' the OPCBrowse object's item collection with any branches available

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久99久久精品免费观看| 337p亚洲精品色噜噜噜| 日产精品久久久久久久性色| 亚洲国产成人一区二区三区| 4438x亚洲最大成人网| 不卡视频在线看| 免费人成黄页网站在线一区二区| 国产精品不卡在线观看| 久久久久久免费网| 在线成人av影院| 日本高清不卡在线观看| 成人一区二区三区| 黑人精品欧美一区二区蜜桃| 亚洲丝袜精品丝袜在线| 久久久久国产精品厨房| 日韩欧美一区二区免费| 欧美精品久久天天躁| 色猫猫国产区一区二在线视频| 国产成人啪免费观看软件| 久久99热狠狠色一区二区| 亚洲成人av电影在线| 亚洲精品中文字幕乱码三区 | 欧美伊人久久大香线蕉综合69| 国产寡妇亲子伦一区二区| 久久电影国产免费久久电影| 日韩不卡免费视频| 午夜久久久影院| 舔着乳尖日韩一区| 亚洲高清免费在线| 午夜欧美一区二区三区在线播放| 亚洲激情自拍视频| 亚洲精品视频自拍| 一片黄亚洲嫩模| 一区二区三区在线看| 亚洲黄色小视频| 亚洲精品国产精品乱码不99 | 亚洲资源中文字幕| 一区二区免费视频| 亚洲一区二区三区在线| 亚洲国产日韩a在线播放| 亚洲午夜久久久久中文字幕久| 亚洲影视资源网| 丝袜美腿亚洲一区二区图片| 日韩精品国产精品| 久久99九九99精品| 国产伦精一区二区三区| 成人午夜av电影| 99久久综合精品| 色婷婷综合五月| 欧美电影一区二区| 久久影院午夜片一区| 中文字幕免费在线观看视频一区| ㊣最新国产の精品bt伙计久久| 亚洲免费观看在线视频| 亚洲国产日产av| 麻豆精品久久精品色综合| 国产麻豆精品一区二区| proumb性欧美在线观看| 欧美色大人视频| 日韩一区二区免费电影| 久久久天堂av| 亚洲日本青草视频在线怡红院| 一区二区三区欧美在线观看| 石原莉奈在线亚洲二区| 韩国成人福利片在线播放| 粉嫩高潮美女一区二区三区| 在线视频国内自拍亚洲视频| 日韩欧美在线123| 亚洲国产精品99久久久久久久久| 一区二区三区成人| 精品一区二区三区在线播放 | 欧美性一二三区| 欧美成人激情免费网| 国产精品乱人伦一区二区| 亚洲午夜久久久久久久久电影网| 精品在线一区二区三区| 99国产精品视频免费观看| 欧美一区二区三区人| 久久久精品黄色| 亚洲韩国一区二区三区| 国产一区二区视频在线播放| 99久久精品免费观看| 51午夜精品国产| 国产精品福利影院| 日本怡春院一区二区| youjizz久久| 日韩免费高清av| 一区二区在线观看不卡| 国产一区久久久| 欧美日韩色一区| 欧美国产一区在线| 秋霞午夜鲁丝一区二区老狼| 99久久99久久久精品齐齐| 欧美va天堂va视频va在线| 亚洲欧美激情一区二区| 国产福利一区在线| 日韩午夜av电影| 亚洲国产成人av| 国产亚洲一区字幕| 国产精品色呦呦| 琪琪久久久久日韩精品| 色偷偷成人一区二区三区91| 视频一区二区国产| 色综合一区二区| 亚洲欧洲av色图| 国产精品911| 久久免费精品国产久精品久久久久| 国产精品不卡一区二区三区| 一本一道久久a久久精品综合蜜臀| 日本va欧美va瓶| 色视频欧美一区二区三区| 国产欧美一二三区| 美女视频一区二区| 91麻豆精品国产91久久久| 亚洲永久精品大片| 日本韩国一区二区三区| 国产精品国产三级国产普通话三级 | 中文字幕av在线一区二区三区| 天堂蜜桃91精品| 精品视频在线看| 亚洲精品v日韩精品| 99精品一区二区| 亚洲国产精品二十页| 国产成人免费视频网站| 久久精品人人做人人爽97| 经典一区二区三区| 精品奇米国产一区二区三区| 欧美a级一区二区| 91麻豆精品久久久久蜜臀| 日韩国产精品久久久久久亚洲| 欧美三区免费完整视频在线观看| 一区二区三区高清| 欧美性猛片aaaaaaa做受| 一区二区欧美视频| 欧美日韩在线三级| 性欧美大战久久久久久久久| 欧美午夜精品免费| 日韩精品电影在线观看| 91精品国产丝袜白色高跟鞋| 另类调教123区| 26uuu精品一区二区在线观看| 国产一区免费电影| 亚洲国产高清在线观看视频| 波多野结衣91| 亚洲综合小说图片| 欧美老年两性高潮| 美女精品自拍一二三四| 久久免费国产精品| 成人福利在线看| 一区二区三区精品在线观看| 欧美裸体bbwbbwbbw| 麻豆久久久久久久| 国产欧美日韩综合精品一区二区| bt欧美亚洲午夜电影天堂| 亚洲精品免费电影| 91精品国产高清一区二区三区蜜臀| 免费美女久久99| 欧美国产日韩a欧美在线观看| 色综合久久久久综合99| 亚洲国产成人av| 久久免费视频一区| 一本一道久久a久久精品| 日韩成人午夜精品| 国产色91在线| 91成人看片片| 久久爱另类一区二区小说| 国产精品区一区二区三区| 欧美在线小视频| 久久99久久99小草精品免视看| 国产欧美视频一区二区三区| 欧美羞羞免费网站| 国产乱码精品一区二区三区忘忧草| 一区在线中文字幕| 日韩午夜激情视频| 91影院在线观看| 久久99久久久久久久久久久| 国产精品福利影院| 日韩欧美一区在线观看| 91原创在线视频| 国产真实乱对白精彩久久| 亚洲最色的网站| 国产色婷婷亚洲99精品小说| 欧美男女性生活在线直播观看| 国产一区二区三区黄视频| 亚洲综合激情网| 国产午夜精品一区二区三区视频| 欧美日韩一级二级| 成人国产精品免费| 久久精品999| 亚洲综合一区二区三区| 久久精品一区蜜桃臀影院| 欧美日韩国产一级| 成人黄色777网| 久久精品99国产国产精| 国产凹凸在线观看一区二区| 日本中文字幕不卡| 亚洲精品成a人| 国产精品久久久久久久久晋中 | 色综合婷婷久久| 国产成人免费在线观看|