zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Map 循环出key 和 value
    Jquery Validate
    Cookie/Session机制详解
    Java根据sessionId获取Session对象
    在线用户统计二
    页面在线访问人数统计&&在线登录人数统计一
    在线会话管理
    oneworld元数据配置
    java map遍历
    黑马程序员——C语言位运算符
  • 原文地址:https://www.cnblogs.com/wangxiaoyang/p/3577796.html
Copyright © 2011-2022 走看看