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

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

?? opcgroupclass.cls

?? vb開發(fā)的一個opcclient源代碼
?? CLS
?? 第 1 頁 / 共 3 頁
字號:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "OPCGroupClass"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
' The OPCGroupClass object houses all of the functionallity used
' to interact with OPC groups.  The OPCGroupClass is used primarily
' by the OPCServerClass.  When AddOPCGroup is called on an instance of
' the OPCServerClass object, it creates an instance of a OPCGroupClass
' object.  In general you normally won't directly create a OPCGroupClass
' object.  You gain access to them as you add groups to your OPCServerClass
' object.  Each group you add to the server is given a unique group key
' name.  Using this key name and the GetOPCServerGroupCollection function
' of the OPCServerClass you can access specific instances of the
' OPCGroupClass.  The OPCGroupClass object wraps the Automation
' interface OPCGroup object and OPCItems (Collection). This diagram shows the relationships
' between the various components of the Automation interface wrapper.
'
'    OPCServer
'           |
'           +-OPC Groups (Collection)
'                      |
' >                    +-OPC Group                           <
' >                              |                           <
' >                              +-OPC Items (Collection)    <
'                                           |
'                                           +-OPC Items
'
' The OPCGroupClass object handles functions found in the second two
' branches of this diagram, the OPCGroup object and OPCItems collection.
' I have not implemented all of the methods and properties found in these
' objects.  Adding access to any methods or properties not currently in
' this module is easy.
'
' While you won't normally directly create an OPCGroupClass object you
' will utilize the functions found in this object.


Option Explicit
Option Base 1

' The OPCGroupName contains the actual string name that you provided
' when adding the group.  If you left the group name blank when adding
' the group this name will contain the group name assigned by the OPC
' server.  This is a convient feature of the OPC server interface.
' Your program doesn't need to supply a group name you can allow the
' server to provide one.  There is a catch however, some servers may not
' have implemented this properly.  In some cases you may be able to
' add the first group without a name but the second time you add a group
' it may fail because the server thinks the second group name is the
' same as the first blank group you added.  This problem is rare.
' Our KEPServer and KEPServerEX will allow you to add as many groups
' as you like.
Dim OPCGroupName As String

' This is a string key used to reference this OPCGroupClass object.  The
' OPCGroupKey can be used by the VB application anyway the user
' sees fit.  In some cases this is used as a key in controls such as
' a treeview of a listview.  Using this key and the GetOPCServerGroupCollection
' of the OPCServerClass object you can get direct access to a specific
' instance of the OPCGroupClass.  This key is generated by the AddOPCGroup
' function of the OPCServerClass object.
Dim OPCGroupKey As String

' The OPCGroupObj is the actual group object of the Automation Interface
Dim WithEvents OPCGroupObj As OPCGroup
Attribute OPCGroupObj.VB_VarHelpID = -1

' As items are added to this group they will be placed into this collection
Dim OPCGroupItems As New Collection

' This value holds the numeric value of the OPCGroupKey string above.
Dim GroupIndex As Integer

' This routine initializes the OPCGroupClass object.
'
Sub SetOPCGroup(ByVal OPCGroupObject As OPCGroup, ByVal GroupName As String, ByVal GroupKey As String, ByVal GroupIndx As Integer)
    ' Assign the group object for this instance of the class
    Dim StoreName As String
    Dim StoreKey As String
    
    Set OPCGroupObj = OPCGroupObject
    StoreName = GroupName
    OPCGroupName = StoreName
    
    StoreKey = GroupKey
    OPCGroupKey = StoreKey
    
    GroupIndex = GroupIndx
    ' ****************************************************************
    ' Mark this group to receive asynchronous updates via the DataChange event.
    ' This setting is IMPORTANT. Without setting '.IsSubcribed' to True your
    ' VB application will not receive DataChange notifications.  This will
    ' make it appear that you have not properly connected to the server.
    
    OPCGroupObj.IsSubscribed = True
   
End Sub

' This sub simply returns the group name set when the class instance was created'
'
Function GetGroupName()
    GetGroupName = OPCGroupName
End Function

' This sub simply returns the group key set when the class instance was created
'
Function GetGroupKey()
    GetGroupKey = OPCGroupKey
End Function

' This sub simply returns the group index set when the class instance was created
'
Function GetGroupIndex()
    GetGroupIndex = GroupIndex
End Function

' This sub simply returns the Item Collection that is part of this class.
'
Function GetOPCGroupItemsCollection()
    Set GetOPCGroupItemsCollection = OPCGroupItems
End Function

' This function allows the group's active state to be changed on the fly.  The
' OPCGroup object provides a number of properties that can be used to control
' a group's operation.  The '.IsActive' property allows you to turn all of the
' OPC items in the group On(active) and Off(inactive).  To see the effect that
' the group's '.InActive' property has on an OPC Server run this demo and connect
' with KEPServerEX, add a group, add a few items.  Once you see changing data
' right click on the group to access the group properties then toggle
' the active state.  If you watch the KEPServerEX OPC Server you will see
' it's active tag count change from 'No Active Items' when the group is made
' inactive to the count of item in the group when the group is made active.
' Changing the actvie state of a group can be useful in controlling how your
' application makes use of an OPC Server's communication bandwidth.  If you don't
' need any of the data in a given group simply set it inactive, this will allow an
' OPC Server to gather only the data current required by your application.
'
Function SetGroupActiveState(ByVal ActiveState As Integer)
    'Set error handling for OPC Function
    On Error GoTo ShowOPCGroupActiveError
    OPCGroupObj.IsActive = ActiveState
    SetGroupActiveState = True
    GoTo SkipGroupActiveError
ShowOPCGroupActiveError:
    Call DisplayOPC_COM_ErrorValue("Group Active State", Err.Number)
    SetGroupActiveState = False
SkipGroupActiveError:
    
End Function

' This function get the current value of the group's active state
'
Function GetGroupActiveState(ByRef ActiveState As Boolean)
    'Set error handling for OPC Function
    On Error GoTo ShowOPCGetGroupActiveError
    ActiveState = OPCGroupObj.IsActive
    GetGroupActiveState = True
    GoTo SkipGetGroupActiveError
ShowOPCGetGroupActiveError:
    Call DisplayOPC_COM_ErrorValue("Get Group Active State", Err.Number)
    GetGroupActiveState = False
SkipGetGroupActiveError:
    
End Function


' This function allows the group's deadband to be changed on the fly.  Like the
' '.IsActive' property, the '.DeadBand' property can be changed at any time.
' The Deadband property allows you to control how much change must occur in
' an OPC item in this group before the value will be reported in the 'DataChange'
' event.  The value entered for '.DeadBand' is 0 to 100 as a percentage of full
' scale for each OPC item data type within this group.  If your OPC item is a
' Short(VT_I2) then your full scale is -32768 to 32767 or 65535.  If you
' enter a Deadband value of 1% then all OPC Items in this goup would need
' to change by a value of 655 before the change would be returned in the
' 'DataChange' event.  The '.DeadBand' property is a floating point number
' allowing very small ranges of change to be filtered.
'
Function SetGroupDeadBand(ByVal DeadBand As Single)
    'Set error handling for OPC Function
    On Error GoTo ShowOPCSetGroupDeadBandError
    
    OPCGroupObj.DeadBand = DeadBand
    SetGroupDeadBand = True
    GoTo SkipSetGroupDeadBandError

ShowOPCSetGroupDeadBandError:
    Call DisplayOPC_COM_ErrorValue("Set Group Dead Band", Err.Number)
    SetGroupDeadBand = False
SkipSetGroupDeadBandError:
End Function

' This function get the current value of the group's Dead Band
'
Function GetGroupDeadBand(ByRef DeadBand As Single)
    'Set error handling for OPC Function
    On Error GoTo ShowOPCGetGroupDeadBandError
    
    DeadBand = OPCGroupObj.DeadBand
    GetGroupDeadBand = True
    GoTo SkipGetGroupDeadBandError

ShowOPCGetGroupDeadBandError:
    Call DisplayOPC_COM_ErrorValue("Get Group Dead Band", Err.Number)
    GetGroupDeadBand = False
SkipGetGroupDeadBandError:
End Function

' This function allows the group's update rate to be changed on the fly.  The
' '.UpdateRate' property allows you to control how often data from this
' group will be returned to your application in the 'DataChange' event.
' The '.UpdateRate' property can be used to control and improve the overall
' performance of you application.  In this example you can see that the update
' rate is set for a fast update speed.  In a demo that's OK.  In your real
' world application, forcing the OPC Server to gather all of the OPC items in
' a group at their fastest rate may not be ideal.  In applications where you
' have data that needs to be acquired at different rates you can create
' multiple groups each with its own update rate.  Using multiple groups would
' allow you to gather time critical data in GroupA with an update rate
' of 200 millliseconds, and gather low priority data from GroupB with an
' update rate of 7000 milliseconds.  The lowest value for the '.UpdateRate'
' is 0 which tells the OPC Server go as fast as possible.  The maximium is
' 2147483647 milliseconds which is about 596 hours.
'
Function SetGroupUpdateRate(ByVal UpdateRate As Long)
    'Set error handling for OPC Function
    On Error GoTo ShowOPCSetGroupUdateRateError
    
    OPCGroupObj.UpdateRate = UpdateRate
    SetGroupUpdateRate = True
    GoTo SkipSetGroupUdateRateError

ShowOPCSetGroupUdateRateError:
    Call DisplayOPC_COM_ErrorValue("Set Group Update Rate", Err.Number)
    SetGroupUpdateRate = False
SkipSetGroupUdateRateError:
End Function

' This function gets the current value of the group's Update Rate
'
Function GetGroupUpdateRate(ByRef UpdateRate As Long)
    'Set error handling for OPC Function

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女视频黄免费的久久| 国产精品影视天天线| 成人毛片在线观看| 91免费小视频| 午夜伊人狠狠久久| 国产乱色国产精品免费视频| 久久嫩草精品久久久久| 日本韩国视频一区二区| 久久国产人妖系列| 国产精品日日摸夜夜摸av| 欧美自拍丝袜亚洲| 国产一区二三区好的| 亚洲1区2区3区视频| 综合电影一区二区三区| 欧美精品一区二区三区很污很色的| 在线精品视频免费播放| 99在线视频精品| 国产精品一区二区无线| 奇米影视7777精品一区二区| 一区二区三区中文字幕精品精品| 国产亚洲综合av| 日韩视频免费观看高清完整版在线观看 | 国产精品女上位| 日韩亚洲欧美一区二区三区| 一本久久a久久精品亚洲| 成人免费看的视频| 国产精品一二三区| 狠狠狠色丁香婷婷综合激情| 天天亚洲美女在线视频| 亚洲精品国产成人久久av盗摄| 国产亚洲一本大道中文在线| 日韩久久精品一区| 日韩欧美一二三四区| 日韩欧美综合在线| 日韩精彩视频在线观看| 精品成人佐山爱一区二区| 成人少妇影院yyyy| 成人免费一区二区三区在线观看| 欧美日韩激情一区二区三区| 国产成人亚洲综合a∨婷婷图片| 国产欧美精品一区二区三区四区| 国产成人精品亚洲777人妖| 中文字幕一区二区三| 日韩午夜精品视频| 欧美一二三四区在线| 午夜天堂影视香蕉久久| 亚洲精品一二三四区| 亚洲一二三四在线观看| 亚洲一区二区偷拍精品| 亚洲国产一二三| 日韩电影免费一区| 九九在线精品视频| 国产丶欧美丶日本不卡视频| 国产成人一区在线| 国产麻豆精品一区二区| www.久久久久久久久| 色综合中文综合网| 在线免费亚洲电影| 在线观看成人免费视频| 欧美疯狂做受xxxx富婆| 欧美成人bangbros| 欧美经典三级视频一区二区三区| 国产精品久久久久久福利一牛影视| 中文字幕精品在线不卡| 一区二区三区高清| 调教+趴+乳夹+国产+精品| 日本免费新一区视频| 国产精品夜夜爽| 91久久免费观看| 欧美一区二区三区思思人| 国产校园另类小说区| 亚洲欧美日韩中文字幕一区二区三区| 亚洲综合丁香婷婷六月香| 麻豆精品一二三| 9人人澡人人爽人人精品| 欧美日韩小视频| 精品久久久久久久久久久院品网| 国产精品毛片大码女人| 偷拍与自拍一区| 国产精品亚洲一区二区三区妖精| 色婷婷综合视频在线观看| 欧美一区二区视频在线观看2020| 久久久精品中文字幕麻豆发布| 日韩理论片网站| 老司机精品视频导航| 成人av动漫网站| 日韩一区二区精品在线观看| 日韩中文字幕91| 韩国av一区二区三区在线观看| 不卡的av网站| 91精品国产综合久久久久久漫画| 国产欧美一区二区精品性| 午夜在线成人av| 成人av电影在线观看| 日韩欧美一区在线观看| 亚洲免费观看在线视频| 精品一二三四区| 在线观看91精品国产入口| 国产欧美日韩综合| 蜜臀久久久久久久| 欧美综合视频在线观看| 国产精品丝袜91| 免费美女久久99| 欧美三区免费完整视频在线观看| 国产日韩欧美高清在线| 久久国内精品自在自线400部| 91首页免费视频| 久久精品一区二区三区不卡牛牛| 亚欧色一区w666天堂| 99麻豆久久久国产精品免费优播| 精品动漫一区二区三区在线观看| 香蕉成人啪国产精品视频综合网| caoporn国产一区二区| 久久青草国产手机看片福利盒子 | 国产精品毛片久久久久久久| 精品一区二区三区在线视频| 欧美三级资源在线| 成人免费在线视频观看| 国产+成+人+亚洲欧洲自线| 久久亚洲精品小早川怜子| 日韩精品成人一区二区在线| 欧美午夜寂寞影院| 亚洲视频免费看| 高清beeg欧美| 久久久91精品国产一区二区三区| 久久精品国产久精国产| 91精品黄色片免费大全| 日韩高清在线观看| 在线不卡的av| 首页国产欧美久久| 91麻豆精品国产91久久久| 五月天网站亚洲| 欧美电影在线免费观看| 亚洲国产aⅴ成人精品无吗| 欧美极品少妇xxxxⅹ高跟鞋 | 国产日韩欧美高清在线| 国产精品一区二区在线观看不卡| 亚洲精品一区在线观看| 韩国成人福利片在线播放| 337p粉嫩大胆噜噜噜噜噜91av | 日韩伦理免费电影| 色哟哟一区二区在线观看| 亚洲激情图片一区| 91福利视频久久久久| 亚洲小说春色综合另类电影| 欧美亚洲一区三区| 日韩国产高清在线| 精品日韩一区二区| 国产成人综合网| 中文字幕一区二| 在线观看免费亚洲| 天天做天天摸天天爽国产一区 | 亚洲一区二区三区在线播放| 欧美精品亚洲一区二区在线播放| 日韩电影在线观看网站| 精品剧情v国产在线观看在线| 久久99蜜桃精品| 久久欧美一区二区| 97se狠狠狠综合亚洲狠狠| 一区二区高清免费观看影视大全 | 久久久久久99精品| 99在线精品观看| 亚洲一区二区三区四区的| 欧美一区二区三区四区高清| 国产一区二区三区美女| 亚洲色图19p| 欧美久久久久免费| 国产一区二区精品久久| 亚洲欧美激情在线| 日韩欧美中文字幕制服| 丰满白嫩尤物一区二区| 亚洲一区中文在线| 久久综合狠狠综合| 一本色道亚洲精品aⅴ| 日韩成人午夜电影| 国产精品萝li| 欧美一区二区三区视频在线观看| 国产精品一区二区三区99| 一区二区久久久久久| 精品福利在线导航| 在线一区二区三区做爰视频网站| 蜜桃视频一区二区三区| 亚洲视频在线一区二区| 欧美一区二区三区在线观看视频 | 欧美一区二区三区喷汁尤物| 欧美军同video69gay| 成人晚上爱看视频| 图片区小说区国产精品视频| 国产精品丝袜在线| 欧美一区二区三区不卡| 99精品欧美一区二区蜜桃免费| 青青草视频一区| 亚洲精品自拍动漫在线| 久久婷婷综合激情| 欧美日本在线播放| 成人精品免费视频| 精品在线免费视频| 亚洲一二三四区| 亚洲欧美综合另类在线卡通| 精品国产一区二区三区久久久蜜月 |