VB.NET 串口編程、串口控件的使用和說明


本篇內容來自https://www.eefocus.com/caihong0217/blog/10-11/198159_a36a3.html

 

上位機軟件,尤其是串口監聽軟件是我們常用到的工具。這里我講解一下使用VB.NET時,串口控件的使用和串口的配置。

一、認識串口控件,名稱SerialPort,調用方式如下圖所示。

二、串口常用參數說明:

 

  名稱 說明
  BaseStream 獲取 SerialPort 對象的基礎 Stream 對象。
  BaudRate 獲取或設置串行波特率。
  BreakState 獲取或設置中斷信號狀態。
  BytesToRead 獲取接收緩沖區中數據的字節數。
  BytesToWrite 獲取發送緩沖區中數據的字節數。
  CDHolding 獲取端口的載波檢測行的狀態。
  Container  獲取 IContainer,它包含 Component。 (從 Component 繼承。)
  CtsHolding 獲取“可以發送”行的狀態。
  DataBits 獲取或設置每個字節的標准數據位長度。
  DiscardNull 獲取或設置一個值,該值指示 Null 字節在端口和接收緩沖區之間傳輸時是否被忽略。
  DsrHolding 獲取數據設置就緒 (DSR) 信號的狀態。
  DtrEnable 獲取或設置一個值,該值在串行通信過程中啟用數據終端就緒 (DTR) 信號。
  Encoding 獲取或設置傳輸前后文本轉換的字節編碼。
  Handshake 獲取或設置串行端口數據傳輸的握手協議。
  IsOpen 獲取一個值,該值指示 SerialPort 對象的打開或關閉狀態。
  NewLine 獲取或設置用於解釋 ReadLine 和 WriteLine 方法調用結束的值。
  Parity 獲取或設置奇偶校驗檢查協議。
  ParityReplace 獲取或設置一個字節,該字節在發生奇偶校驗錯誤時替換數據流中的無效字節。
  PortName 獲取或設置通信端口,包括但不限於所有可用的 COM 端口。
  ReadBufferSize 獲取或設置 SerialPort 輸入緩沖區的大小。
  ReadTimeout 獲取或設置讀取操作未完成時發生超時之前的毫秒數。
  ReceivedBytesThreshold 獲取或設置 DataReceived 事件發生前內部輸入緩沖區中的字節數。
  RtsEnable 獲取或設置一個值,該值指示在串行通信中是否啟用請求發送 (RTS) 信號。
  Site  獲取或設置 Component 的 ISite。 (從 Component 繼承。)
  StopBits 獲取或設置每個字節的標准停止位數。
  WriteBufferSize 獲取或設置串行端口輸出緩沖區的大小。
  WriteTimeout 獲取或設置寫入操作未完成時發生超時之前的毫秒數

 

三、代碼例程

 1、串口配置代碼

Sub PortStart()
        'SerialPort1.PortName = COMX'計算機串口設置 X,是串口號。可以使用下列列表框選擇。
        SerialPort1.BaudRate = 9600  ‘波特率設置
        SerialPort1.DataBits = 8            '數據位設置
        SerialPort1.StopBits = StopBits.One    '停止位設置

        SerialPort1.Encoding = Encoding.UTF8

        SerialPort1.DtrEnable = True
        SerialPort1.ReadTimeout = 500   '超時時間
        SerialPort1.NewLine = vbCrLf       '行結束符合

    End Sub

 2、計算機串口讀取

Sub GetSerialPortNames()
        '計算機串口讀取
        For Each sp As String In My.Computer.Ports.SerialPortNames
            CompList.Items.Add(sp)           ‘CompList是一個下列框控件,這里修改為你的下列框名稱
        Next
        CompList.Text = CompList.Items(0)
    End Sub

3、串口打開

 Sub PortOpen()
 
            Try
                SerialPort1.Open()
                Call PortStart()
            Catch ex As UnauthorizedAccessException
                MsgBox("串口被占用或串口錯誤!", MsgBoxStyle.Information, "提示!")
            End Try

 End Sub

4、串口關閉

Sub PortOpen()
            Try
            SerialPort1.Close()
            Catch ex As Exception
            MsgBox("串口未打開或串口異常!", MsgBoxStyle.Information, "提示!")
            End Try
End Sub

5、串口讀取數據

Sub ComRec()
       Dim Rxstr As String

        Try
            Rxstr = SerialPort1.ReadLine       ’讀取一個新行
            Application.DoEvents()
            ComTxT.AppendText(Rxstr)           ‘讀取到的數據添加到文本框中顯示
        Catch e As TimeoutException            ’當超時以后,讀取串口所有的數據

            Rxstr = SerialPort1.ReadExisting
           ComTxT.AppendText(Rxstr)
            Application.DoEvents()

        End Try

    End Sub

6、發送數據

SerialPort.Write,將數據寫入串行端口輸出緩沖區。

 

名稱 說明
SerialPort.Write (String) 將參數字符串寫入輸出。

由 .NET Compact Framework 支持。

SerialPort.Write (Byte[], Int32, Int32) 將指定數量的字節寫入輸出緩沖區中的指定偏移量處。

由 .NET Compact Framework 支持。

SerialPort.Write (Char[], Int32, Int32) 將指定數量的字符寫入輸出緩沖區中的指定偏移量處。

由 .NET Compact Framework 支持。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM