休眠 關閉串列埠輸出 C 開發串列埠通訊例項及串列埠基礎

2021-10-14 18:10:58 字數 3050 閱讀 6483

序列介面(串列埠)是一種可以將接受來自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. 校驗位:在串列埠通訊中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當然沒有校驗位也是可以的。

從.net framework 2.0開始,c#提供了serialport類用於實現串列埠控制。命名空間:system.io.ports。其中詳細成員介紹參看msdn文件。下面介紹其常用的字段、方法和事件。

名稱說明

portname

獲取或設定通訊埠

baudrate

獲取或設定序列波特率

databits

獲取或設定每個位元組的標準資料位長度

parity

獲取或設定奇偶校驗檢查協議

stopbits

獲取或設定每個位元組的標準停止位數

名稱說明

close

關閉埠連線,將 isopen 屬性設定為false,並釋放內部 stream 物件

getportnames

獲取當前計算機的串列埠名稱陣列

open

開啟乙個新的串列埠連線

read

serialport輸入緩衝區中讀取

write

將資料寫入串列埠輸出緩衝區

名稱說明

datareceived

表示將處理serialport物件的資料接收事件的方法

前台頁面:

後台**:

using system;

using system.io.ports;

using system.text;

using system.windows.forms;

namespace serialport

public partial class serialport : form

string serialportname;

public serialport()

initializecomponent();

private void form1_load(object sender, eventargs e)

string ports = system.io.ports.serialport.getportnames();//獲取電腦上可用串口號

combobox1.items.addrange(ports);//給combobox1新增資料

combobox1.selectedindex = combobox1.items.count > 0 ? 0 : -1;//如果裡面有資料,顯示第0個

combobox2.text = "115200";/*預設波特率:115200*/

combobox3.text = "1";/*預設停止位:1*/

combobox4.text = "8";/*預設資料位:8*/

combobox5.text = "無";/*預設奇偶校驗位:無*/

private void button1_click(object sender, eventargs e)

if (button1.text == "開啟串列埠")

else if (combobox3.text == "1.5")

else if (combobox3.text == "2")

/*設定奇偶校驗*/

if (combobox5.text == "無")

else if (combobox5.text == "奇校驗")

else if (combobox5.text == "偶校驗")

serialport1.open();//開啟串列埠

button1.text = "關閉串列埠";//按鈕顯示關閉串列埠

catch (exception err)

messagebox.show("開啟失敗"+ err.tostring(), "提示!");//對話方塊顯示開啟失敗

else

button1.text = "開啟串列埠";//按鈕顯示開啟

protected override void wndproc(ref message m)

if (m.msg == 0x0219)

private void button4_click(object sender, eventargs e)

textbox2.clear();//清除傳送文字框裡面的內容

出處:

休眠 關閉串列埠輸出 串列埠通訊基本知識

rs 232,rs 422和 rs 485 串列埠通訊介面的快速比較 問題 rs 232,rs 422以及rs 485串列埠的基本區別是什麼?解答 下面的 比較了 工作方式,驅動器和接收器的總數,電纜的最大長度及最大傳輸速率。rs 232 是大多數計算機通用的介面,比如com1 和 com2。注意,...

休眠 關閉串列埠輸出 串列埠助手軟體

comng 是一款具有現代化 ui 設計並且功能強大的串列埠助手軟體。github 上也有 comng 的 repo,但是 github 的訪問和上傳速度太慢 comng 的編譯軟體比較大,60m 左右 所以後期的更新 維護和發布會以 gitee 為主。由於軟體比較大,且沒有自動化編譯環境,所以只有...

C 開發串列埠通訊例項及串列埠基礎

一 串列埠通訊簡介 序列介面 串列埠 是一種可以將接受來自cpu的並行資料字元轉換為連續的序列資料流傳送出去,同時可將接受的序列資料流轉換為並行的資料字元供給cpu的器件。一般完成這種功能的電路,我們稱為序列介面電路。串列埠通訊 serial communications 的概念非常簡單,串列埠按位...