Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Try
UART_PORT.ReceivedBytesThreshold = 1 '设置 DataReceived 事件发生前内部输入缓冲区中的字节数。
Catch ex As Exception
Application.Exit()
End Try
End Sub
Private Sub DataReceived(ByVal sender As Object, ByVal e As System.EventArgs)
Try
If UART_PORT.IsOpen Then
If UART_PORT.BytesToRead > 0 Then
Dim mbyte(UART_PORT.BytesToRead - 1) As Byte
Dim RtmpCount As Integer = UART_PORT.Read(mbyte, 0, UART_PORT.BytesToRead)
'add your code here
Dim ReadString As String = System.Text.Encoding.Default.GetString(ReadByte)
Me.TextBox1.AppendText(ReadString)
End If
End If
Catch ex As Exception
ErrorEvent(ex)
End Try
End Sub
Private Sub UART_PORT_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles UART_PORT.DataReceived
Threading.Thread.Sleep(50) '延时等待缓冲。
Me.BeginInvoke(New EventHandler(AddressOf DataReceived))
End Sub
我用串口助手发送,VB这边接收,只有第一次发送可以接收到
Delegate Sub SetTextCallback(ByVal InputString As String)
Private Sub ShowString(ByVal comData As String)
TextBox1.Text += comData '将收到的数据入接收文字框中
TextBox1.SelectionStart = TextBox1.Text.Length
TextBox1.ScrollToCaret()
End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim inData As String = SerialPort1.ReadExisting
Dim d As New SetTextCallback(AddressOf ShowString)
BeginInvoke(d, inData)
End Sub