我是编程的新手,所以我希望你能帮助我。不知道如何制定正确的问题,所以我没有找到任何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
由于
答案 0 :(得分: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
的值并停止。