准备篇--串口通信概述
生活随笔
收集整理的這篇文章主要介紹了
准备篇--串口通信概述
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言 最近家里有些事情所以這個系列的文章一直耽擱了,現在開始進行編寫希望各位看官見諒,這個系列是我對之前一段時間工作的總結也是我自己的復習和重構,本著互相學習的目的,如果我在其中有理解錯誤和方向不對的地方還請大家指正。 1.1 什么是串口 什么是串口其實應該首先說什么是通信,不過“通信”二字對于我們Coder來說不是什么難理解的概念,也就無需多述了。 串行接口簡稱串口,也稱串行通信接口(通常指COM接口),是采用串行通信方式的擴展接口。其通信的特點就是數據是一位一位的進行傳輸,在.NET下我們使用的數據格式就是byte. 通信線路也很簡單就是一根串口線,不過有時候還會使用串口服務器,不過這都是后話了。通信成本低的同時傳輸速度也很低和以太網通信的速度是一個天上一個地下,但是一般情況下我們在串口傳輸的數據量也是很小的,超過200個字節都算是天文數字了。 串口線在我們實際工作和測試的時候有2種,一種是普通的串口線,一種是USB轉串口(使用筆記本進行開發的童鞋們是必備的) 圖 1.1-1 普通串口線??????????????????????????????????? 圖1.1-2 USB轉串口線 1.2 通信的模式 通過單線傳輸數據是串行數據通信的基礎,數據通常是在2個站(點對點)之間進行傳輸,按照數據流的方向可以分為3種模式:單工、半雙工、全雙工。 1)單工模式 單工模式的數據傳輸方式是單向的,在通信的雙方中,一方固定為發送端,另一方固定為接收端。信息只能沿一個方向傳輸,使用一根傳輸線。 圖1.2-1 單工模式 2)半雙工模式 半雙工模式使用同一根傳輸線,既可發送數據又可接收數據,但不能同時發送和接收。在任何時刻只能由其中的一方發送數據,另一方接收數據。因此半雙工模式既可以使用一條數據線,也可以使用兩條數據線。 這個模式在日常工作中我是使用的最多的。 圖1.2-2 半雙工模式 3)全雙工模式 全雙工模式分別由兩根可以在兩個不同的站點同時發送和接收的傳輸線進行傳送,通信雙方都能在同一時刻進行發送和接收操作。很多時候都是一根線負責發送數據,另外一根線負責接收數據。 圖1.2-3 全雙工模式 1.3 異步傳輸與同步傳輸 其實這部分我是不想寫的,因為同步傳輸在長距離上會出現時鐘誤差,在我這一年半的工作時間里,我都是使用的異步傳輸。 在異步傳輸方式中,傳輸的單位是字符。在通信的數據流中,字符間是異步的,對于單個字符內部的各位間是同步。異步通信方式中的“異步”主要就是體現在字符與字符之間通信沒有嚴格的定時要求,字符可以是連續地,也可以是一個個的發送,可以是不連續地隨即的進行單獨發送。所以收/發雙方需要預先約定傳輸速率。 在串行通信中,數據是以幀為單位進行傳輸,幀有大幀和小幀(平時在工作中和硬件工程師進行溝通時說的數據幀是指的大幀,既完整的請求命令或者回傳的數據),小幀包含一個字符,大幀包含多個字符。 異步通信采用小幀傳輸,一幀中有10-12個二進制數據位。每一針有1個起始位,7-8個數據位(一般都是用8個)、一個奇偶校驗位(可以沒有,我寫的程序都沒有,呵呵)和停止位(1位或者2位)組成。被傳輸的一組數據相鄰的兩個字符停頓時間不一致。這個字符停頓不一致的問題,在后面的章節我會詳細的解說,這個問題也造成了我們在編寫程序時的一些麻煩。 圖1.3-1 串口異步傳輸數據 大家可能在看這個圖感覺東西很多,其實分開來看就3部分 A 起始位、校驗位、停止位 這3個是我們在定義通信參數時使用的(后面會講)。 B 數據位 這里就是我們所關心的數據 也就是我們程序中需要接收的byte。 C 空閑 2個小幀之間的不確定時間間隔 1.4 串行通信的基本參數 串行端口的通信方式是將字節拆分成一個接一個的位再傳輸出去,接到此電位信號的一方再將此一個一個的位組合成原來的字符,如此形成一個字節的完整傳輸,在數據傳輸時,應在通信端口的初始化時設置幾個通信參數。 1)波特率 通俗的講就是傳送數據的速度,不過這里的“數據”是數據位數。波特率的意思就是在一秒中可以傳輸的數據位數,單位是bps。如果采用波特率4800bps進行傳輸,那么每秒可以傳輸600個byte。 2)數據位 當接收設備收到起始位后,緊接著就會收到數據位,數據位的個數可以是5、6、7或者8位。在字符數據傳輸的過程中,數據位從最低有效位開始傳輸。 3)起始位 在串口線上,沒有數據傳輸時處于邏輯“1”狀態,當發送設備要發送一個字符數據時,首先發出一個邏輯“0”信號,這個邏輯低電平就是起始位。起始位通過通信線傳像接收設備,當接收設備檢測到這個邏輯低電平后,就開始準備接收數據位,因此起始位所起的作用就是告訴接收方字符傳輸的開始。 4)停止位 在奇偶校驗位或者數據位(無奇偶校驗位時)就是停止位,它可以是1位、1.5位或者2位,停止位是一個字符數據的結束標志。 5)奇偶校驗位 數據位發送完之后,就可以發送奇偶校驗位。奇偶校驗用于有限差錯校驗,通信雙方在通信時約定一致的奇偶校驗方式。就數據傳輸而言,奇偶校驗位是冗余位,但它表示數據的一種性質,這種性質用于檢錯,雖然有限但很容易實現。 1.5 接口標準 接口標準對于我們寫上位機來說區別基本沒有,那些是電氣工程師的事情,如果需要建立高層的通信協議那么需要詳細的了解,網上這方面的資料很多,在這里我就不整理,下面列出標準大家可以去度娘。 1)RS-232C 接口標準 2)RS-422/485接口標準 參考資料: 1 百度百科 http://baike.baidu.com/view/161117.htm?fromId=69108 2 《Visual C#.NET 串口通信及測控應用典型實例》 李江全 鄧紅濤 劉巧 李偉 等編著 電子工業出版社
轉載于:https://www.cnblogs.com/tragedy/p/3178141.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的准备篇--串口通信概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS:Tools:快速注释Doxyge
- 下一篇: 解决 rake aborted!