串列埠通訊基礎

2021-04-20 17:44:08 字數 3548 閱讀 3119

串列埠是計算機和儀器儀表的一種通訊協議,大多數計算機包含兩個基於rs232的串列埠。串列埠通訊協議可以用於獲取遠端採集裝置的資料。

1.串列埠按位bit傳送和接收資料(比按位元組byte的並行通訊慢);

2.串列埠可以使用一根線同時傳送和接收資料(並行不能),是非同步通訊;

3.串列埠通訊的距離長度可達1200m(並行裝置任意兩個裝置長度不能夠超過2m;

串列埠通訊使用3根線:地線、傳送線、接收線

串列埠通訊最重要的引數是波特率、資料位、停止位、奇偶校驗位。

1.波特率:可稱為時鐘週期n hz,衡量通訊速度的引數,表示每秒鐘傳送的bit的個數。波特率和距離成反比,高波特率放在近距離的儀器

間通訊(如gpib)

2.資料位(5、7、8):衡量通訊中實際資料位的引數,標準的ascii碼是0~127(7位),擴充套件的ascii碼是0~255(8位)對應標準的ascii

碼,每個資料報使用7位資料,是指乙個位元組。包括開始/停止為,資料位,奇偶校驗位。

3.停止位:單個包的最後一位。典型的值為1、1.5、2,不僅僅表示傳輸的結束,並且提供計算機校正時鐘同步的機會。停止位越多,不同

時鐘同步的容忍程度越大。

4.奇偶校驗位(偶、奇、高、低):串列埠通訊中的一種簡單的檢錯方式。通訊中可以沒有校驗位。對於奇偶校驗,串列埠設定校驗位(資料

位後面的一位),用乙個值確保傳輸的資料有偶個或奇個邏輯高位。如011,對於偶校驗,校驗位為0,保證邏輯高位數為偶數個。如果是奇校

驗,則校驗位為1,這樣有三個邏輯高位。

rs-232是ibm-pc及其相容機上的序列連線標準。可連線滑鼠、印表機或modem。rs-232只限於pc串列埠和裝置間點對點的通訊。最遠距離是50

英呎。db-9針連線頭

-------------

/ 1 2 3 4 5 / 

/ 6 7 8 9 / 

---------

從計算機連出的線的截面。

rs-232針腳的功能:

資料: 

txd(pin 3):串列埠資料輸出

rxd(pin 2):串列埠資料輸入

地線gnd(pin5):地線

握手:rts(pin 7):傳送資料請求

cts(pin 8):清除傳送

dsr(pin 6):資料傳送就緒

dcd(pin 1):資料載波檢測

dtr(pin 4):資料終端就緒

其他:ri(pin9):鈴聲指示

rs-232通訊方式允許簡單連線三根線:tx、rx和地線。但是,對於資料傳輸,雙方必須對資料定時使用相同的波特率。

握手:rs-232通訊方式允許簡單連線三線:tx、rx和地線。但是對於資料傳輸,雙方必須對資料定時採用使用相同的波特率。儘管這種方法對於大多

數應用已經足夠,但是對於接收方過載的情況這種使用受到限制。這時需要串列埠的握手功能。在這一部分,我們討論三種最常用的rs-232握手

形式:軟體握手、硬體握手和xmodem。

a,軟體握手:我們討論的第一種握手是軟體握手。通常用在實際資料是控制字元的情況,類似於gpib使用命令字串的方式。必須的線仍然是

三根:tx,rx和地線,因為控制字元在傳輸線上和普通字元沒有區別,函式setxmodem允許使用者使能或者禁止使用者使用兩個控制字元xon和oxff

。這些字元在通訊中由接收方傳送,使傳送方暫停。

例如:假設傳送方以高波特率傳送資料。在傳輸中,接收方發現由於cpu忙於其他工作,輸入buffer已經滿了。為了暫時停止傳輸,接收方傳送

xoff,典型的值是十進位制19,即十六進製制13,直到輸入buffer空了。一旦接收方準備好接收,它傳送xon,典型的值是十進位制17,即十六進製制11

,繼續通訊。輸入buffer半滿時,labwindows傳送xoff。此外,如果xoff傳輸被打斷,labwindows會在buffer達到75%和90%時傳送xoff。顯

然,傳送方必須遵循此守則以保證傳輸繼續。

b,硬體握手:第二種是使用硬體線握手。和tx和rx線一樣,rts/cts和dtr/dsr一起工作,乙個作為輸出,另乙個作為輸入。第一組線是rts

(request to send)和cts(clear to send)。當接收方準備好接收資料,它置高rts線表示它準備好了,如果傳送方也就緒,它置高cts,表

示它即將傳送資料。另一組線是dtr(data terminal ready)和dsr(data set ready)。這些現主要用於modem通訊。使得串列埠和modem通訊他

們的狀態。例如:當modem已經準備好接收來自pc的資料,它置高dtr線,表示和**線的連線已經建立。讀取dsr線置高,pc機開始傳送資料。

乙個簡單的規則是dtr/dsr用於表示系統通訊就緒,而rts/cts用於單個資料報的傳輸。

在labwindows,函式setctsmode使能或者禁止使用硬體握手。如果cts模式使能,labwindows使用如下規則:

當pc傳送資料:

rs-232庫必須檢測cts線高後才能傳送資料。

當pc接收資料:

如果埠開啟,且輸入佇列有空接收資料,庫函式置高rts和dtr。

如果輸入佇列90%滿,庫函式置低rts,但使dtr維持高電平。

如果埠佇列近乎空了,哭喊數置高rts,但使drt維持高電平。

如果埠關閉,庫函式置低rts和dtr。

c,xmodem握手:最後討論的握手叫做xmodem檔案傳輸協議。這個協議在modem通訊中非常通用。儘管它通常使用在modem通訊中,xmodem協議能

夠直接在其他遵循這個協議的裝置通訊中使用。在labwindows中,實際的xmodem應用對使用者隱藏了。只要pc和其他裝置使用xmodem協議,在文

件傳輸中就使用labwindows的xmodem函式。函式是xmodemconfig,xmodemsend和xmodemreceive。

xmodem使用介於如下引數的協議:start_of_data、end_of_data、neg_ack、wait_delay、start_delay、max_tries、packet_size。這些引數

需要通訊雙方認定,標準的xmodem有乙個標準的定義:然而,可以通過xmodemconfig函式修改,以滿足具體需要。這些引數的使用方法由接收

方傳送的字元neg_ack確定。這通知傳送方其準備接收資料。它開始嘗試傳送,有乙個超時引數start_delay;當超時的嘗試超過max_ties次數

,或者收到接收方傳送的start_of_data,傳送方停止嘗試。如果從傳送方收到start_of_data,接收方將讀取後繼資訊資料報。包中含有包的

數目、包數目的補碼作為錯誤校驗、packet_size位元組大小的實際資料報,和進一步錯誤檢查的求和校驗值。在讀取資料後,接收方會呼叫

wait_delay,然後想傳送方傳送響應。如果傳送方沒有收到響應,它會重新傳送資料報,直到收到響應或者超過重發次數的最大值max_tries。

如果一直沒有收到響應,傳送方通知使用者傳輸資料失敗。

由於資料必須以pack_size個位元組按包傳送,當最後乙個資料報傳送時,如果資料不夠放滿乙個資料報,後面會填充ascii碼null(0)位元組。這

導致接收的資料比原資料多。在xmodem情況下一定不要使用xon/xoff,因為xmodem傳送方發出包的數目很可能增加到xon/off控制字元的值,從

而導致通訊故障。

LABVIEW串列埠通訊基礎

寫這一篇串列埠通訊基礎的契機是最近剛剛完成乙個溫箱的儀器控制程式,labview通過串列埠與溫箱微控制器通訊,我打算將過程中遇到的一些問題和收穫列在這裡方便有需求的比對 尋找答案。學labview時間並不久,這個儀器控制程式也比較簡單,行文中若有錯誤還望指出。labview串列埠通訊基礎 利用lab...

串列埠通訊 串列埠通訊原理

1 rs232介面 rs232 c介面聯結器一般使用型號為db 9的9芯插頭座,只需3條介面線,即 傳送資料 接收資料 和 訊號地 即可傳輸資料,其9個引腳的定義如圖11 3所示。圖11 3 rs232 c介面聯結器定義 在rs232的規範中,電壓值在 3v 15v 一般使用 6v 稱為 0 或 o...

VC 串列埠通訊基礎知識

在win32下,可以使用兩種程式設計方式實現串列埠通訊,其一是使用activex控制項 activex是microsoft對於一系列策略性物件導向程式技術和工具的稱呼,其中主要的技術是元件物件模型 com 這種方法程式簡單,但欠靈活。其二是呼叫windows的api函式,這種方法可以清楚地掌握串列埠...