以下是一个使用 Visual Basic .NET 编写的串口异步接收数据的示例代码:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    SerialPort1.PortName = "COM1" ' 设置串口号
    SerialPort1.BaudRate = 9600 ' 设置波特率
    SerialPort1.Parity = Parity.None ' 设置校验位
    SerialPort1.DataBits = 8 ' 设置数据位
    SerialPort1.StopBits = StopBits.One ' 设置停止位
    SerialPort1.Handshake = Handshake.None ' 设置握手协议
    SerialPort1.Open() ' 打开串口
End Sub

Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
    Dim bytesToRead As Integer = SerialPort1.BytesToRead ' 获取可用字节数
    Dim buffer(bytesToRead - 1) As Byte ' 定义字节数组
    SerialPort1.Read(buffer, 0, bytesToRead) ' 读取数据到字节数组
    Dim receivedData As String = System.Text.Encoding.ASCII.GetString(buffer) ' 将字节数组转换为字符串
    TextBox1.Invoke(Sub() TextBox1.AppendText(receivedData)) ' 将接收到的数据显示在文本框中
End Sub

Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
    SerialPort1.Close() ' 关闭串口
End Sub

在这个示例中,我们首先在窗体的 Load 事件中设置了串口的各项属性,并打开了串口。然后在 SerialPort 的 DataReceived 事件中,我们获取可用字节数,定义一个字节数组,从串口读取数据到字节数组中,并将字节数组转换为字符串,最后将接收到的数据显示在文本框中。最后,在窗体的 FormClosing 事件中关闭了串口。注意,我们使用了 Invoke 方法来在主线程中更新 UI 控件,因为 DataReceived 事件并不在主线程中运行。

VB.NET 串口异步接收数据示例代码

原文地址: https://www.cveoy.top/t/topic/oSvu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录