Imports System Imports System.IO.Ports Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load '获取计算机有效串口 Dim ports As String() = SerialPort.GetPortNames() '必须用命名空间,用SerialPort,获取计算机的有效串口 Dim port As String For Each port In ports portnameBox.Items.Add(port) '向comboBox中添加项 Next port '初始化界面 baudrateBox.Selectedindex() = 2 portnameBox.Selectedindex() = 0 Serial_Port1() '初始化串口 Label3.Text = SerialPort1.IsOpen statuslabel.Text = "串口未连接" statuslabel.ForeColor = Color.Red sendBox.Text = "123" ' baudrateBox.Text = baudrateBox.Items(0) 注释和不注释的地方可以替换 'portnameBox.Text = portnameBox.Items(0) End Sub Private Sub Serial_Port1() '设置串口参数 SerialPort1.Baudrate = Val(baudrateBox.Text) '波特率 SerialPort1.PortName = portnameBox.Text '串口名称 SerialPort1.DataBits = 8 '数据位 SerialPort1.StopBits = IO.Ports.StopBits.One '停止位 SerialPort1.Parity = IO.Ports.Parity.None '校验位 End Sub '关闭串口连接 Private Sub closebtn_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles closebtn.Click Try SerialPort1.Close() '关闭串口 Label3.Text = SerialPort1.IsOpen If SerialPort1.IsOpen = False Then statuslabel.Text = "串口未连接" statuslabel.ForeColor = Color.Red receiveBox.Text = "" receivebytes.Text = "" End If Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub '打开串口连接 Private Sub openbtn_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles openbtn.Click Try SerialPort1.open() '打开串口 Label3.Text = SerialPort1.IsOpen If SerialPort1.IsOpen = True Then statuslabel.Text = "串口已连接" statuslabel.ForeColor = Color.Green End If Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub '发送数据 Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click Try SerialPort1.Write(sendBox.Text) Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub '触发接收事件 Public Sub Sp_DataReceived(ByVal sender As Object,ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived Me.Invoke(New EventHandler(AddressOf Sp_Receiving)) '调用接收数据函数 End Sub '接收数据 Private Sub Sp_Receiving(ByVal sender As Object,ByVal e As EventArgs) Dim strIncoming As String Try receivebytes.Text = Str(Val(receivebytes.Text) + SerialPort1.BytesToRead) If SerialPort1.BytesToRead > 0 Then Threading.Thread.Sleep(100) '添加的延时 strIncoming = SerialPort1.ReadExisting.ToString '读取缓冲区中的数据 SerialPort1.discardInBuffer() receiveBox.Text = strIncoming End If Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub End Class