VB.net 利用SerialPort进行读取串口操作
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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。