• 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

  • 相关阅读:
    Flutter环境配置(window10环境)最完善版本
    ElementUI el-date-picker 限制选中日期前后30天,大于当天不可选
    fastreport添加每页的小计
    c# 类似sql中的isnull()语法
    HttPost HttpGet
    LaTeX幻灯片主题和颜色预览
    记录
    交易思想之顺大势逆小势
    Python读写json文件
    Python实现QQ PC端给好友发送消息
  • 原文地址:https://www.cnblogs.com/wangxiaoyang/p/3577796.html
Copyright © 2020-2023  润新知