vb读串口数据,需要多线程吗?要不然,在等数据的时候,程序其他部分都不能响应

Function ReceiveSerialData() As String
' Receive strings from a serial port.
Dim returnStr As String = ""

Using com1 As IO.Ports.SerialPort = _
My.Computer.Ports.OpenSerialPort("COM1")
Dim a As Boolean = com1.IsOpen

Do
Dim Incoming As String = com1.ReadLine

If Incoming Is Nothing Then
Exit Do
Else
returnStr &= Incoming & vbCrLf
Exit Do
End If
Loop
com1.Close()
End Using

Return returnStr
End Function
这是微软提供的读数据的函数。
例如,我点击button1后,不停地循环着运行这个函数,在等数据的时候,其他button都不能点击。那我怎么实现点另外一个button来停止上面的那个函数?

在循环体中加入 DoEvents语句,循环时即可响应其它事件。 关于退出的问题,可以定义一个全局布尔变量如blnBreak,在循环体中检测该变量的值,如果为True则退出该函数,为False则继续循环。这样点击其它按钮改变该变量的值即可实现函数退出功能。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-07-02
使用委托读取。
参考:http://www.vbgood.com/thread-81845-1-1.html该链接的串口工程。
相似回答