c#串口通信數據讀取

一、基礎概念

串口通信是指通過串口進行數據交換的過程。串口是指COM口,COM口是計算機硬體設備之一,其可進行非同步數據傳輸,因此能方便地進行數據收發,被廣泛應用於各種領域中。

串口通信實現的基本步驟為:

①打開串口

②配置串口實例的屬性(如數據位、波特率等)

③設置串口接收處理事件

④開始數據傳輸

二、使用SerialPort類控制串口通信

c#中使用System.IO.Ports命名空間下的SerialPort類來實現串口數據收發。

1、打開串口

創建一個SerialPort對象來操作串口。調用SerialPort的Open方法,打開串口。


SerialPort sp = new SerialPort();
sp.PortName = "COM1";
sp.Open();

2、配置串口實例屬性

配置串口屬性,包括波特率、數據位、奇偶校驗等等。可以使用BaudRate、DataBits、Parity等屬性來設置串口的一些參數。


sp.BaudRate = 9600;
sp.DataBits = 8;
sp.Parity = Parity.None;
sp.StopBits = StopBits.One;

3、設置串口接收處理事件

在串口通信過程中,每當串口緩存區中有數據時,就會觸發DataReceived事件。在事件處理函數中,可以將數據讀取出來,並進行相應的數據處理。


sp.DataReceived += new SerialDataReceivedEventHandler(SerialPort_DataReceived);

private static void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    SerialPort sp = (SerialPort)sender;
    string data = sp.ReadLine();   // 一次讀取一行數據
    Console.WriteLine(data);
}

4、開始數據傳輸

串口配置好後,需要向串口寫入數據或從串口讀取數據。使用SerialPort.Write和SerialPort.Read方法進行數據的寫入和讀取。


byte[] sendData = { 0x01, 0x02, 0x03 };
sp.Write(sendData, 0, sendData.Length);

byte[] receiveData = new byte[64];
sp.Read(receiveData, 0, receiveData.Length);

三、使用示例

下面是一個簡單的c#串口通信數據讀取示常式序。該程序打開串口COM1,讀取從串口發送過來的數據並輸出到控制台。


using System;
using System.IO.Ports;

namespace ConsoleSerialPort
{
    class Program
    {
        static SerialPort sp = new SerialPort();
        static void Main(string[] args)
        {
            sp.PortName = "COM1";
            sp.BaudRate = 9600;
            sp.DataBits = 8;
            sp.Parity = Parity.None;
            sp.StopBits = StopBits.One;

            sp.DataReceived += new SerialDataReceivedEventHandler(SerialPort_DataReceived);

            try
            {
                sp.Open();
                Console.WriteLine("SerialPort Opened");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            Console.ReadLine();
        }

        private static void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            SerialPort sp = (SerialPort)sender;
            string data = sp.ReadLine();
            Console.WriteLine(data);
        }
    }
}

四、注意事項

在使用SerialPort類進行串口通信時,需要注意以下幾點:

①由於SerialPort類是非託管資源,因此在使用完後一定要調用Dispose方法進行釋放

②採用非同步的方式進行讀取數據時,在事件處理函數中需要使用BeginInvoke方法,確保線程安全

③圖形界面程序中需要採用「線程跨越」方式,讓主程序正常運行,而串口數據接收在單獨的線程中進行。

原創文章,作者:BHNIL,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/372158.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BHNIL的頭像BHNIL
上一篇 2025-04-24 06:40
下一篇 2025-04-24 06:40

相關推薦

  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python數據標準差標準化

    本文將為大家詳細講述Python中的數據標準差標準化,以及涉及到的相關知識。 一、什麼是數據標準差標準化 數據標準差標準化是數據處理中的一種方法,通過對數據進行標準差標準化可以將不…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29
  • Python根據表格數據生成折線圖

    本文將介紹如何使用Python根據表格數據生成折線圖。折線圖是一種常見的數據可視化圖表形式,可以用來展示數據的趨勢和變化。Python是一種流行的編程語言,其強大的數據分析和可視化…

    編程 2025-04-29
  • Python如何打亂數據集

    本文將從多個方面詳細闡述Python打亂數據集的方法。 一、shuffle函數原理 shuffle函數是Python中的一個內置函數,主要作用是將一個可迭代對象的元素隨機排序。 在…

    編程 2025-04-29

發表回復

登錄後才能評論