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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。