本篇內容來自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 支持。 |