日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

准备篇--串口通信概述

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

轉(zhuǎn)載于:https://www.cnblogs.com/tragedy/p/3178141.html

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的准备篇--串口通信概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。