C 串列埠程式設計一 簡介

2021-06-11 17:24:09 字數 3013 閱讀 5715

在.net平台下使用c#建立串列埠通訊程式

其命名空間是system.io.ports 下的serialport 類(.net2.0)

a.建立serialport 物件

serialport serialport1 = new serialport();
b.設定引數

serialport1.portname = this.cbox_com.text;

serialport1.baudrate = convert.toint32(this.cbox_baudrate.text);

switch (this.cbox_jiaoy.text)

serialport1.databits = convert.toint32(this.cbox_data.text);

switch (this.cbox_stopbit.text)

c.開啟串列埠

serialport1.open()
d.傳送資料

serialport1.write(this.txtdata.text.trim());
採用十六進製制傳送資料

// 十六進製制形式傳送

private void sendaction(serialport serialport1, string data)

}

d.接收資料

readline只可用於同步讀取資料,在沒有資料的時候,此函式將阻塞

採用datareceived事件

// 接受埠資料

private void m_serialport_datareceived(object sender, serialdatareceivedeventargs e)

}else

this.begininvoke(new setreceivedcontrol(setreceivedcontrol), strreceived);

}catch(exception err)

}

// ui上顯示資料

private delegate void setreceivedcontrol(string text);

private void setreceivedcontrol(string text)

f.清空快取

// 清空接收快取

if (serialport1.isopen)

// 清空接收快取

if (serialport1.isopen)

g.關閉串列埠

serialport1.close()
串列埠是計算機上一種常用的裝置通訊的協議。大多數計算機都包含兩個基於rs232的串列埠(我的只有乙個

串列埠通訊是:串列埠按位(bit)傳送和接收位元組。儘管比按位元組(byte)的並行通訊慢,但是串列埠可以在使用一根線傳送資料的同時用另一根線接收資料。它很簡單並且能夠實現遠距離通訊。比如ieee488定義並行通行狀態時,規定裝置線總長不得超過20公尺,並且任意兩個裝置間的長度不得超過2公尺;而對於串列埠而言,長度可達1200公尺。

對於兩個正在進行通訊的埠,幾個重要的引數是得設定的:

波特率、

資料位、停止位和

奇偶校驗: a,

波特率:這是乙個衡量通訊速度的引數。它表示每秒鐘傳送的bit的個數。例如300波特表示每秒鐘傳送300個bit。當我們提到

時鐘週期

時,我們就是指

波特率例如如果協議需要4800波特率,那麼時鐘是4800hz。這意味著

串列埠通訊

在資料線上的取樣率為4800hz。通常**線的

波特率為14400,28800和36600。

波特率可以遠遠大於這些值,但是波特率和距離成反比。高

波特率常常用於放置的很近的儀器間的通訊,典型的例子就是gpib裝置的通訊。常用的有:9600,19200,57600,115200等 b,

資料位:這是衡量通訊中實際資料位的引數。當計算機傳送乙個資訊包,實際的資料不會是8位的,標準的值是5、7和8位。如何設定取決於你想傳送的資訊。比如,標準的ascii碼是0~127(7位)。擴充套件的ascii碼是0~255(8位)。如果資料使用簡單的文字(標準ascii碼),那麼每個

資料報使用7位資料。每個包是指乙個位元組,包括開始/停止位,

資料位和

奇偶校驗位

。由於實際

資料位取決於通訊協議的選取,術語「包」指任何通訊的情況。

c,停止位:用於表示單個包的最後一位。典型的值為1,1.5和2位。由於資料是在傳輸線上定時的,並且每乙個裝置有其自己的時鐘,很可能在通訊中兩台

裝置間出現了小小的不同步。因此停止位不僅僅是表示傳輸的結束,並且提供計算機校正

時鐘同步

的機會。適用於停止位的位數越多,不同

時鐘同步

的容忍程度越大,但是資料傳輸率同時也越慢。

d,奇偶校驗位

:在串列埠通訊

中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當然沒有校驗位也是可以的。對於偶和

奇校驗的情況,串列埠會設定校驗位(

資料位後面的一位),用乙個值確保傳輸的資料有偶個或者奇個邏輯高位。例如,如果資料是011,那麼對於

偶校驗,校驗位為0,保證邏輯高的位數是偶數個。如果是

奇校驗,校驗位為1,這樣就有3個邏輯高位。高位和低位不真正的檢查資料,簡單置位邏輯高或者邏輯低校驗。這樣使得接收裝置能夠知道乙個位的狀態,有機會判斷是否有雜訊干擾了通訊或者是否傳輸和接收資料是否不同步。

預設引數是:串列埠com1, 波特率9600, 資料位8, 停止位1, 奇偶校驗位none

當兩個串列埠名稱(portname)設定一樣就可以進行通訊,而想讓接收的資料準確的話,引數是必須得設定一致的。

C 串列埠程式設計

cserialport 類,標頭檔案 serialport.h 這裡要注意 indows.h ifndef serial h define serial h include include include include include 定義串列埠型別 ifdef unicode typedef c...

C 串列埠程式設計

基本傳遞方法 rs232傳輸要有1位起始位,8位資料位 1位校驗位 1位停止位,也就是說傳乙個位元組要用時11位的時間.舉例 6個位元組要6 11 66位時間。每位1 9600秒,共用66 9600 0.006875秒。虛擬串列埠軟體 監聽串列埠程式 直接上 在控制台程式中新增如下原始碼就可以直接執...

C 中串列埠通訊程式設計

在 visual studio 6.0 中編寫串列埠通訊程式,一般都使用 microsoft communication control 簡稱mscomm 的通訊控制項,只要通 過對此控制項的屬性和事件進行相應程式設計操作,就可以輕鬆地實現串列埠通訊。但在 microsoft.net 技術廣泛應用的...