Dim tagName As String   ‘保存单个工位号
    
    Dim tagPoint As Long    ‘保存单个点源
    
    Dim apiState As Long    ‘保存返回状态
    
    Dim loginState As Long ‘保存登录状态
    Private Sub cmdAutoGet_Click()
    
    If Me.cmdAutoGet.Caption = “自动采集” Then
    
    Me.TimerGet.Enabled = True
    
    Me.cmdAutoGet.Caption = “停止采集”
    ElseIf Me.cmdAutoGet.Caption = “停止采集” Then
    
    Me.TimerGet.Enabled = False
    
    Me.cmdAutoGet.Caption = “自动采集”
    
    End If
    
    End Sub
    Private Sub cmdConnect_Click()
    
    On Error GoTo errHandle
    
    ‘连接服务器
    
    If Me.cmdConnect.Caption = “Connect” Then
    
    Connect Trim(Me.txtPIServer.Text) ‘用封装的Connect函数连接数据库,实际本质是调用函数piut_setservernode(servername)
Dim quanXian As Long ‘保存返回的权限信息
loginState = piut_login(“piadmin”, “”, quanXian) ‘登录数据库
    If loginState <> 0 Then     ‘返回0则登录成功,否则登录失败
    
    MsgBox “function piut_login() has errors!”
    
    End If
    
    Me.lblConnState.Caption = “Connected…”
    
    Me.cmdConnect.Caption = “Disconnect”
    
    ElseIf Me.cmdConnect.Caption = “Disconnect” Then
    
    Dim connState As Long
    
    connState = piut_disconnect()       ‘断开数据库连接
    
    Me.txtGetValue.Text = connState
    
    Me.lblConnState.Caption = “Disconnected!”
    
    Me.cmdConnect.Caption = “Connect”
    
    End If
    
    Exit Sub
    
    errHandle:
    
    Me.lblConnState.Caption = “Disconnected!”
    
    End Sub
    Private Sub cmdFindPoint_Click()
    
    If loginState <> 0 Then Exit Sub
    
    tagName = Me.txtGWH.Text        ‘输入工位号
apiState = pipt_findpoint(tagName, tagPoint) ‘根据工位号查找点源
    If apiState = -5 Then       ‘返回-5表示没找到点源
    
    MsgBox “Tag is not found!”
    
    ElseIf apiState = 0 Then    ‘返回0表示找到点源
    
    MsgBox “Tag is found!”
    
    End If
    
    End Sub
    ‘读取单个点源
    
    Private Sub cmdGet_Click()
    
    If apiState <> 0 Then Exit Sub
    
    Dim getState As Long    ‘保存返回状态
    
    Dim tagValue As Single ‘保存读取的点源对应的值
    
    Dim tagValueState, tagValueTime As Long     ‘保存返回的数据状态,数据存储时间
    
    getState = pisn_getsnapshot(tagPoint, tagValue, tagValueState, tagValueTime)    ‘读取单个点源的数据
    
    If getState = 0 Then    ‘0表示读取成功
    
    Me.txtGetValue.Text = Me.txtGetValue.Text & tagValue & “,”
    
    Else
    
    MsgBox “Can’t get value!”
    
    End If
    
    End Sub
    ‘批量写入数据
    
    Private Sub Command1_Click()
    
    If apiState <> 0 Then Exit Sub
Dim tagName(3) As String ‘保存工位号的数组
    ‘pt-点源;iStat-数据状态,初始化为0即可;timedate-设置时间,为0则自动为当前时间
    
    ‘piapierror-写入时返回的错误信息;iCount-写入数据的个数
    ‘特别注意,不能这样定义: dim pt(3),iStat(3),timedate(3),piapierror(3) as Long
    
    ‘这样定义只会将最后一个认为是Long类型,前面的都为Variant类型
    
    ‘或者可以分别单个定义
    
    Dim pt(3) As Long, iStat(3) As Long, timedate(3) As Long, piapierror(3) As Long, iCount As Long
    
    ‘Dim iStat(3) As Long
    
    Dim rval(3) As Single
    ‘给工位号数组赋值
    
    tagName(0) = “TI1602A”
    
    tagName(1) = “TI1602B”
    
    tagName(2) = “TI1602C”
    
    tagName(3) = “TI1602D”
    ‘初始化数据
    
    Dim i As Integer
    
    For i = 0 To 3
    
    pt(i) = 0
    
    rval(i) = Rnd()     ‘需保存的值
    
    iStat(i) = 0
    
    timedate(i) = 0
    
    piapierror(i) = 0
    
    Next i
    
    iCount = 4
    Me.Text2.Text = “”
    
    For i = 0 To 3
    
    apiState = pipt_findpoint(tagName(i), pt(i))    ‘循环查找点源,不能批量查找
    
    Me.Text2.Text = Me.Text2.Text & rval(i) & vbCrLf
    
    Next i
    Dim setState As Long    ‘保存函数返回值
    
    setState = pisn_putsnapshots(pt(0), rval(0), iStat(0), timedate(0), piapierror(0), iCount) ‘批量上传数据,参数为数组,由于是传址,故参数为数组第一个元素的地址
    
    ‘pisn_putsnapshotsx(ByVal count&, PtNum&, drVal#, iVal&, bVal As Any, bSize&, istat&, FLAGS%, time0 As Any, errors&) As Long
    
    ‘setState = pisn_putsnapshotsx(Count, pt(0), rval(0), iVal(0), bVal(0), bSize, iStat(0), FLAGS(0), timedate(0), piapierror(0))
    If setState = 0 Then
    
    MsgBox “set sucess!”
    
    Else
    
    MsgBox “error is: ” & setState
    
    End If
    
    End Sub
    ‘定时读取单个数据
    
    Private Sub TimerGet_Timer()
    
    If apiState <> 0 Then Exit Sub
    
    Dim getState As Long
    
    Dim tagValue As Single
    
    Dim tagValueState, tagValueTime As Long
    
    getState = pisn_getsnapshot(tagPoint, tagValue, tagValueState, tagValueTime)
    
    Dim tagValueXlTime As Date
    
    tagValueXlTime = CDate(pitime2xl(tagValueTime))
    
    If getState = 0 Then
    
    Me.txtGetValue.Text = Me.txtGetValue.Text & tagValue & “,” & tagValueState & “,” & tagValueXlTime & vbCrLf
    
    End If
    
    End Sub
   
 
