Tcp 按钮事件不是';t在第二次单击之前显示值(vb6)
我在vb6中创建了一个tcp连接,以便在按下按钮后从磅秤上抓取重量并显示该重量。问题在于,直到第二次(第二次)单击按钮,而不是第一次,重量才会显示。我已经在不同的点上设置了一个断点,在第一次点击按钮时,它会将我带到该断点,因此我知道事件正在按它应该的方式触发,但在第二次点击之前不会显示任何内容。我做了很多研究,但似乎找不到任何人有确切的问题(或解决方案)Tcp 按钮事件不是';t在第二次单击之前显示值(vb6),tcp,vb6,winsock,commandbutton,Tcp,Vb6,Winsock,Commandbutton,我在vb6中创建了一个tcp连接,以便在按下按钮后从磅秤上抓取重量并显示该重量。问题在于,直到第二次(第二次)单击按钮,而不是第一次,重量才会显示。我已经在不同的点上设置了一个断点,在第一次点击按钮时,它会将我带到该断点,因此我知道事件正在按它应该的方式触发,但在第二次点击之前不会显示任何内容。我做了很多研究,但似乎找不到任何人有确切的问题(或解决方案) 我假设您的代码在表单中,您只是声明了一个Winsock类型的新对象。我的代码使用关键字WithEvents声明Winsock变量,以访问Win
我假设您的代码在表单中,您只是声明了一个Winsock类型的新对象。我的代码使用关键字WithEvents声明Winsock变量,以访问Winsock对象引发的事件。您感兴趣的特定事件是DataArrival。当接收到数据时,Winsock控件将触发它。我移动了设置此事件的文本。此外,您不能使用WithEvents和“As New”(您确实不想使用As New),因此我在设置CFixPicture_Initialize()方法中的属性之前创建了对象。最后,我添加了在关闭对象后将其设置为“无”
Option Explicit
Private WithEvents tcpC As Winsock
Private Sub CFixPicture_Close()
tcpC.Close
Set tcpP = Nothing
End Sub
Private Sub CFixPicture_Initialize()
Set tcpC = New Winsock
tcpC.LocalPort = 0
tcpC.Connect "192.168.0.1", 8000
End Sub
Private Sub CommandButton1_click()
On Error GoTo errHandler
Dim strData As String
tcpC.SendData "S" & vbCrLf
'there is no data here yet - moved to the DataArrival event
'tcpC.GetData strData
'Text1.Caption = "Weight: " & strData
Exit Sub
errHandler:
MsgBox "error:" & Err.Description
End Sub
Private Sub tcpC_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
tcpC.GetData strData
Text1.Caption = "Weight: " & strData
End Sub
您的GetData调用可能在有数据可获取之前执行。查看DataArrival事件。我将sub的名称更改为DataArrival事件,但仍然没有LuckCreat!谢谢你的帮助@jac。按钮开始注册第一次单击。我唯一想提及的是,我删除了tcpc.close命令,因为它向我抛出了错误91。由于某种原因,tcp连接已经自动关闭,因此它不希望我再次关闭它。谢谢
Option Explicit
Private WithEvents tcpC As Winsock
Private Sub CFixPicture_Close()
tcpC.Close
Set tcpP = Nothing
End Sub
Private Sub CFixPicture_Initialize()
Set tcpC = New Winsock
tcpC.LocalPort = 0
tcpC.Connect "192.168.0.1", 8000
End Sub
Private Sub CommandButton1_click()
On Error GoTo errHandler
Dim strData As String
tcpC.SendData "S" & vbCrLf
'there is no data here yet - moved to the DataArrival event
'tcpC.GetData strData
'Text1.Caption = "Weight: " & strData
Exit Sub
errHandler:
MsgBox "error:" & Err.Description
End Sub
Private Sub tcpC_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
tcpC.GetData strData
Text1.Caption = "Weight: " & strData
End Sub