1、我們通常調車的時候都會遇到要使用串列埠還是網口來進行偵錯的問題,那麼什麼是「串列埠」什麼是「網口」呢?
• 2、串列埠和COM口、USB口、UART口又有什麼區別呢?
• 3、偵錯當中我們常說的「RS-232」和「RS-422」、「RS-485」又是指代的什麼東西呢?
• 4、網口通訊和串列埠通訊都是怎麼實現的呢?
• 5、介紹串列埠通訊問題。
串列埠以及串列埠通訊
• 串列埠:串列埠是一個泛稱,UART、TTL、RS232、RS485都遵循類似的通訊時序協定,因此都被通稱為串列埠。
• 串列埠通訊(Serial Communications)的概念非常簡單,串列埠按位元(bit)傳送和接收位元組。儘管比按位元組(byte)的並行通訊慢,但是串列埠可以在使用一根線傳送資料的同時用另一根線接收資料。它很簡單並且能夠實現遠距離通訊。對於串列埠而言,長度可達1200米。一般情況下,串列埠用於ASCII碼字元的傳輸。
• 通訊使用3根線完成,分別是地線、傳送、接收。由於串列埠通訊是非同步的,埠能夠在一根線上傳送資料同時在另一根線上接收資料。其他線用於握手,但不是必須的。串列埠通訊最重要的引數是波特率、資料位、停止位和奇偶校驗。對於兩個進行通訊的埠,這些引數必須匹配。
• 串列埠通訊使用到的幾個引數:
• a,波特率:這是一個衡量符號傳輸速率的引數。指的是訊號被調變以後在單位時間內的變化,即單位時間內載波引數變化的次數,如每秒鐘傳送240個字元,而每個字元格式包含10位(1個起始位,1個停止位,8個資料位),這時的波特率為240Bd,位元率為10位*240個/秒=2400bps。一般調變速率大於波特率,比如曼徹斯特編碼)。
• b,資料位:這是衡量通訊中實際資料位的引數。當計算機傳送一個資訊包,實際的資料往往不會是8位元的,標準的值是6、7和8位元。如何設定取決於你想傳送的資訊。比如,標準的ASCII碼是0~127(7位)。擴充套件的ASCII碼是0~255(8位元)。如果資料使用簡單的文字(標準 ASCII碼),那麼每個封包使用7位資料。每個包是指一個位元組,包括開始/停止位,資料位和奇偶校驗位。由於實際資料位取決於通訊協定的選取,術語「包」指任何通訊的情況。
• c,停止位:用於表示單個包的最後一位。典型的值為1,1.5和2位。由於資料是在傳輸線上定時的,並且每一個裝置有其自己的時鐘,很可能在通訊中兩臺裝置間出現了小小的不同步。因此停止位不僅僅是表示傳輸的結束,並且提供計算機校正時鐘同步的機會。適用於停止位的位數越多,不同時鐘同步的容忍程度越大,但是資料傳輸率同時也越慢。
• d,奇偶校驗位:在串列埠通訊中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當然沒有校驗位也是可以的。對於偶和奇校驗的情況,串列埠會設定校驗位(資料位後面的一位),用一個值確保傳輸的資料有偶個或者奇個邏輯高位。例如,如果資料是011,那麼對於偶校驗,校驗位為0,保證邏輯高的位數是偶數個。如果是奇校驗,校驗位為1,這樣就有3個邏輯高位。高位和低位不真正的檢查資料,簡單置位邏輯高或者邏輯低校驗。這樣使得接收裝置能夠知道一個位的狀態,有機會判斷是否有噪聲干擾了通訊或者是否傳輸和接收資料是否不同步。
• 網口:網線接入口
• 網口通訊(Socket Communications),就是通過所謂的「通訊端(Socket)」來進行通訊的一種通訊方式。
• 解釋:兩個程序如需要進行通訊最基本的一個前提能能夠唯一的標示一個程序,在本地程序通訊中我們可以使用PID來唯一標示一個程序,但PID只在本地唯一,網路中的兩個程序PID衝突機率很大,這時候我們需要另闢它徑了,我們知道IP層的ip地址可以唯一標示主機,而TCP層協定和埠號可以唯一標示主機的一個程序,這樣我們可以利用ip地址+協定+埠號唯一標示網路中的一個程序。能夠唯一標示網路中的程序後,它們就可以利用socket進行通訊了,socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層複雜的操作抽象為幾個簡單的介面供應用層呼叫已實現程序在網路中通訊。
• RS232和RS422。那麼我們就需要首先明確在車上是用的串列埠接頭是RS232還是RS422,RS232串列埠有9針串列埠(DB9)和25針串列埠(DB25)。在RS232的接線當中最為簡單且常用的是三線制接法,即地、接收資料和傳送資料三腳相連。
• 下面介紹RS232串列埠接線圖 :
• (右下圖示為DB9和DB25的常用訊號腳說明字串7)
串列埠傳輸資料只要有接收資料針腳和傳送針腳就能實現:同一個串列埠的接收腳和傳送腳直接用線相連,兩個串列埠相連或一個串列埠和多個串列埠相連 同一個串列埠的接收腳和傳送腳直接用線相連 對9針串列埠和25針串列埠,均是2與3直接相連(如下圖所示)
串列埠偵錯中要注意的幾點: 不同編碼機制不能混接,如RS232C不能直接與RS422介面相連,市面上專門的各種轉換器賣,必須通過轉換器才能連線;線路焊接要牢固,不然程式沒問題,卻因為接線問題誤事;串列埠偵錯時,準備一個好用的偵錯工具,如串列埠偵錯助手、串列埠精靈等,有事半功倍之效果;強烈建議不要帶電插撥串列埠,插撥時至少有一端是斷電的,否則串列埠易損壞。
注意232的介面通訊母頭和公頭是有區別的:
.RS-232端(DB9母頭/孔型)引腳定義
引腳序號 2 3 5 1、4、6 7、8
訊號定義 TXD RXD GND 內部相連 內部相連
注:該口可直接插入計算機的COM口
.RS-232端(DB9公頭/針型)引腳定義
引腳序號 2 3 5 1、4、6 7、8
訊號定義 RXD TXD GND 內部相連 內部相連
注:該口可接與計算機通訊的裝置