Private Sub Group_Density_DataChange(ByVal TransactionID As Long, ByVal NumItems_Density As Long, ClientHandles_Density() As Long, ItemValues_Density() As Variant, Qualities() As Long, TimeStamps() As Date)
   On Error GoTo ErrorsInformation
   For I = 1 To NumItems_Density
       C_Density(ClientHandles_Density(I) - 350) = ItemValues_Density(I)
   Next I
GoTo SkipError
ErrorsInformation:
Call Error_Information(7, Err.Description)
SkipError:
End Sub尤其是DataChange、(ByVal TransactionID As Long, ByVal NumItems_Density As Long, ClientHandles_Density() As Long, ItemValues_Density() As Variant, Qualities() As Long, TimeStamps() As Date)这些参数的意思和用法。谢谢!

解决方案 »

  1.   

    Private Sub (ByVal TransactionID As Long, ByVal NumItems_Density As Long, ClientHandles_Density() As Long, ItemValues_Density() As Variant, Qualities() As Long, TimeStamps() As Date) 
    Private Sub说明这是一个模块级的子过程;
    Group_Density_DataChange---子过程的名称;
    ByVal TransactionID As Long---子过程的第一个参数,ByVal说明是按值传递,TransactionID是第一个参数名,As Long说明参数的数据类型是长整型,
    ByVal NumItems_Density As Long是第二个参数,传递方法与数据类型与第一个相同.
    ClientHandles_Density() As Long第三个参数是个数组,按地址传递;参数的数据类型为长整型;
    ItemValues_Density() As Variant,,参数为数组,数据类型为变体型,
    Qualities() As Long与第三个参数相同
    TimeStamps() As Date,日期型的数组参数
    On Error GoTo ErrorsInformation 若出错,从行标签ErrorsInformation处执行
     For I = 1 To NumItems_Density 
          C_Density(ClientHandles_Density(I) - 350) = ItemValues_Density(I) 
      Next I 
    一个For循环;
    GoTo SkipError 跳到行标签SkipError处执行ErrorsInformation: 行标签Call Error_Information(7, Err.Description),调用Error_Information(7, Err.Description)
     
    SkipError:  行标签End Sub 子过程结束
      

  2.   

    你想要的是啥答案?DataChange这个是啥,在你的帖子中我只找到Group_Density_DataChange。参数的意思?我又不是作者,我怎么知道这些参数代表什么意思?就像如果参数写成a1,你知道a1代表什么意思?楼上的写得很详细了。
      

  3.   

    这是用VB访问OPC服务器中的一段,从网上我找到一些解释:
    对OPC标签的读可以通过Group_Density组的DataChange事件来读取。该事件有多个参数:其中NumItems是指标签改变值的个数,ClientHandles是改变值的标签索引,ItemValues为改变值的数据,具体的意思是ClientHandles(1)的值是其对应的标签数组的索引,其所指的OPC标签的值在ItemValues(1)中。一般来说,刚连接上时,该事件会把全部所要求访问的OPC标签值全部读取过来(顺序不一,要通过ClientHandles索引),此后只有数据发生变化时才会触发该事件。也只会传输发生了变化的数据,没有变化的数据不会出现在本事件的ItemValues中。
    但是Qualities():OPC Item的品质值;TimeStamps():时间戳 这两个我还不是很明白