一、串口通信簡介
串行接口(串口)是一種可以將接受來自CPU的並行數據字符轉換為連續的串行數據流發送出去,同時可將接受的串行數據流轉換為並行的數據字符供給CPU的器件。一般完成這種功能的電路,我們稱為串行接口電路。
串口通信(Serial Communications)的概念非常簡單,串口按位(bit)發送和接收字節。盡管比按字節(byte)的並行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。串口通信最重要的參數是波特率、數據位、停止位和奇偶校驗。對於兩個進行通信的端口,這些參數必須匹配。
1. 波特率:這是一個衡量符號傳輸速率的參數。指的是信號被調制以后在單位時間內的變化,即單位時間內載波參數變化的次數,如每秒鍾傳送960個字符,而每個字符格式包含10位(1個起始位,1個停止位,8個數據位),這時的波特率為960Bd,比特率為10位*960個/秒=9600bps。
2. 數據位:這是衡量通信中實際數據位的參數。當計算機發送一個信息包,實際的數據往往不會是8位的,標准的值是6、7和8位。標准的ASCII碼是0~127(7位),擴展的ASCII碼是0~255(8位)。
3. 停止位:用於表示單個包的最后幾位。典型的值為1,1.5和2位。由於數據是在傳輸線上定時的,並且每一個設備有其自己的時鍾,很可能在通信中兩台設備間出現了小小的不同步。因此停止位不僅僅是表示傳輸的結束,並且提供計算機校正時鍾同步的機會。
4. 校驗位:在串口通信中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當然沒有校驗位也是可以的。
二、C#串口編程類
從.NET Framework 2.0開始,C#提供了SerialPort類用於實現串口控制。命名空間:System.IO.Ports。其中詳細成員介紹參看MSDN文檔。下面介紹其常用的字段、方法和事件。
1. 常用字段:
| 名稱 | 說明 |
| PortName | 獲取或設置通信端口 |
| BaudRate | 獲取或設置串行波特率 |
| DataBits | 獲取或設置每個字節的標准數據位長度 |
| Parity | 獲取或設置奇偶校驗檢查協議 |
| StopBits | 獲取或設置每個字節的標准停止位數 |
2. 常用方法:
| 名稱 | 說明 |
| Close | 關閉端口連接,將 IsOpen 屬性設置為 false,並釋放內部 Stream 對象 |
| GetPortNames | 獲取當前計算機的串行端口名稱數組 |
| Open | 打開一個新的串行端口連接 |
| Read | 從 SerialPort 輸入緩沖區中讀取 |
| Write | 將數據寫入串行端口輸出緩沖區 |
3. 常用事件:
| 名稱 | 說明 |
| DataReceived | 表示將處理 SerialPort 對象的數據接收事件的方法 |
三、實現方法,本地計算機使用虛擬串口軟件
1、下載virtual serial port driver 虛擬軟件,添加一對串口

添加以后設備管理就會生成串口設備

2、下載串口調試助手2.2,他會自動讀取剛才生成的串口

我這里使用com2串口發送數據,com1接收數據
3、c#代碼,設置窗口名稱,這個是固定的
serialPort1.PortName = comName;
serialPort1.Open();
4、獲取com2發送過來的數據,com1接收發送過來的數據

以上就實現了串口通信
