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

2021-10-21 11:57:21 字數 2738 閱讀 5190

一、串列埠通訊簡介

序列介面(串列埠)是一種可以將接受來自cpu的並行資料字元轉換為連續的序列資料流傳送出去,同時可將接受的序列資料流轉換為並行的資料字元供給cpu的器件。一般完成這種功能的電路,我們稱為序列介面電路。

串列埠通訊(serial communications)的概念非常簡單,串列埠按位(bit)傳送和接收位元組。儘管比按位元組(byte)的並行通訊慢,但是串列埠可以在使用一根線傳送資料的同時用另一根線接收資料。串列埠通訊最重要的引數是波特率、資料位、停止位和奇偶校驗。對於兩個進行通訊的埠,這些引數必須匹配。
波特率:這是乙個衡量符號傳輸速率的引數。指的是訊號被調製以後在單位時間內的變化,即單位時間內載波引數變化的次數,如每秒鐘傳送960個字元,而每個字元格式包含10位(1個起始位,1個停止位,8個資料位),這時的波特率為960bd,位元率為10位*960個/秒=9600bps。

資料位:這是衡量通訊中實際資料位的引數。當計算機傳送乙個資訊包,實際的資料往往不會是8位的,標準的值是6、7和8位。標準的ascii碼是0~127(7位),擴充套件的ascii碼是0~255(8位)。

停止位:用於表示單個包的最後幾位。典型的值為1,1.5和2位。由於資料是在傳輸線上定時的,並且每乙個設c#教程備有其自己的時鐘,很可能在通訊中兩台裝置間出現了小小的不同步。因此停止位不僅僅是表示傳輸的結束,並且提供計算機校正時鐘同步的機會。

校驗位:在串列埠通訊中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當然沒有校驗位也是可以的。

二、c#串列埠程式設計類

從.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 物件的資料接收事件的方法

三、c#開發串列埠例項

前台頁面:

後台**:

using system;

using system.io.ports;

using system.text;

using system.windows.forms;

namespace serialport

private void form1_load(

object sender, eventargs e)

private void button1_click(

object sender, eventargs e)

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)

}else

catch (exception)

button1.text =

"開啟串列埠"

;//按鈕顯示開啟

}} protected override void wndproc(ref message m)

else

}else

}else

if(m.wparam.toint32()==

0x8000

)else}}

base.wndproc(ref m);}

private void serialport1_datareceived(

object sender, serialdatareceivedeventargs e)))

);} private void button2_click(

object sender, eventargs e)

private void button3_click(

object sender, eventargs e)

} catch (exception)

} private void button4_click(

object sender, eventargs e)

}}

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

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

串列埠通訊實現

前段時間編寫了串列埠通訊的 用的是rs 232資料線 include 標準輸入輸出定義 include 標準函式庫定義 include unix 標準函式定義 include include include include include include define dev dev ttys1 d...

串列埠通訊實驗

晶振12mhz,波特率1200,程式啟動後微控制器主動發出hello server,pc使用串列埠助手應答微控制器,當微控制器收到pc發來的資料aah後,將30h 3fh的16個位元組傳送給pc,當51收到e0h時就發40h 5fh的32個位元組資料,若微控制器收到其他資料後,則不做任何修改返回pc...