1

我是编程新手,所以我希望你能帮助我。不知道如何制定正确的问题,所以我没有找到任何 StackOverflow 答案。

当我逐步执行此代码并来到 OpcServObj.Connect OpcServerStrg 时,它没有连接。我没有收到任何错误,似乎没有任何事情发生。光标跳到左边距,什么也不做。只有当我继续单步执行例程时,它才会重新启动该功能。它应该继续并退出我计划再次测试连接状态的 for 循环。

参考库:OPC DA Automation Wrapper 2.02

Sub Main()
ConnectOPC
End Sub

Private Function ConnectOPC() As Boolean

Dim OpcServObj As OPCAutomation.OPCServer            
Dim OpcGroupObj As OPCAutomation.OPCGroup            

Dim OPCServerlist As Variant
Dim OpcServerStrg As String

Set OpcServObj = New OPCAutomation.OPCServer          
OPCServerlist = OpcServObj.GetOPCServers

If OpcServObj.ServerState <> True Then

    For i = 1 To UBound(OPCServerlist) 

       OpcServerStrg = OPCServerlist(i)

         If OpcServerStrg = "ICONICS.IconicsOPCUAServer.V5" Then

            OpcServObj.Connect OpcServerStrg

            Exit For

         End If

    Next i

End If

End Function

谢谢

4

1 回答 1

0

在线:

If OpcServerStrg = "ICONICS.IconicsOPCUAServer.V5" Then

如果变量中的值OpcServerStrg等于"ICONICS.IconicsOPCUAServer.V5"则代码将再次循环到循环顶部For并再次执行OpcServerStrg = OPCServerlist(i)。将Exit For不会被看到。

当您说您step through this code...是否有可能在行上设置了断点:OpcServerStrg = OPCServerlist(i),并且您单击运行(直到断点)而不是单击单步执行代码?

尝试在该行设置断点:

If OpcServerStrg = "ICONICS.IconicsOPCUAServer.V5" Then

然后检查OpcServerStrg程序何时到达断点并停止的值。

于 2013-05-02T16:53:50.843 回答