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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

我也聊聊串口通信协议:用户层通信协议的编制

發(fā)布時間:2025/3/15 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 我也聊聊串口通信协议:用户层通信协议的编制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.閑話閑聊

最重要的寫在前面:用戶層通信協(xié)議就是數(shù)據(jù)包格式!!! 沒有進行串口通訊實踐的朋友可能會想:為什么要編制用戶通信協(xié)議呢?通信過程中為什么要進行數(shù)據(jù)處理呢?在設(shè)計中編過串口通信程序的讀者應(yīng)該張口就可以回答:為了按規(guī)定格式從串口發(fā)送數(shù)據(jù),也為了從接收到的數(shù)據(jù)中將需要的信息提取出來 串口通信協(xié)議一般可以從兩個角度來思考:底層通信協(xié)議和用戶層協(xié)議。底層協(xié)議一般有計算機硬件提供商和設(shè)備廠家提供,在一般性的通信編程中很少會涉及(我估計1000個搞通信的,能編底層的也就那么1,2個),而用戶層協(xié)議則是面向使用者的,也就是我們在編程中通常談到的通信協(xié)議。這種用戶層的通信協(xié)議,簡單來說,就是數(shù)據(jù)以何種格式發(fā)送出去,或者說如何從接收到的某種格式的數(shù)據(jù)中提取需要的數(shù)據(jù),以及在發(fā)送和接收過程中如何保證這些數(shù)據(jù)的正確性,即數(shù)據(jù)校驗 這片帖子先扯扯為什么要編?原理是什么?現(xiàn)存的協(xié)議有什么?這些基本問題,為后面逐步深入奠定基礎(chǔ)。

2.為什么要編制用戶通信協(xié)議?

大多數(shù)MFC等界面開發(fā)數(shù)據(jù)都已經(jīng)準(zhǔn)備好了,只需做一個可視化工作就可以了。可是實際很多工作可不是這樣,我們需要實時采集并處理顯示數(shù)據(jù)。舉例子說,我們剛?cè)腴T做通信編程時,大多時候只是從串口接收數(shù)據(jù),并顯示在GUI窗口上。然而我們卻忽略了一個非常關(guān)鍵的細節(jié):如何從接收到的數(shù)據(jù)中提取有用的信息?如何處理我們發(fā)送出去的數(shù)據(jù)?這些問題才是我們進行通信編程的目標(biāo)所在,也就是說,通信協(xié)議才是對接軟件與硬件交流的關(guān)鍵! 在大多數(shù)編程實踐中,接收與發(fā)送數(shù)據(jù)并不需要直接顯示在程序界面中,而只是需要將對我們有價值的幾個數(shù)據(jù)顯示,或者根本就沒有必要進行顯示,而是直接在程序內(nèi)部進行處理。這是,數(shù)據(jù)發(fā)送方與數(shù)據(jù)接收方就必須事先約好數(shù)據(jù)發(fā)送的格式。當(dāng)然,我說的這個數(shù)據(jù)發(fā)送格式的約定實際上就是數(shù)據(jù)通信協(xié)議!

3.有感而發(fā)——談?wù)凣PS模塊的數(shù)據(jù)接收過程

GPS:Global Positioning System 近年來,GPS系統(tǒng)已經(jīng)在大地繪制、海上漁用、車輛定位監(jiān)控、建筑、農(nóng)業(yè)等各個領(lǐng)域得到廣泛應(yīng)用。目前,市場上的大部分GPS接收模塊都是通過RS-232串口與PC/MCU進行數(shù)據(jù)傳輸。這些數(shù)據(jù)包括了經(jīng)度、緯度、時間、衛(wèi)星使用情況等基本信息。我們需要從GPS接收模塊發(fā)送出來的數(shù)據(jù)中提取出我們要用的信息,比如最簡單的定位信息(只用到了經(jīng)緯信息)。因此,我們就必須了解從GPS模塊獲得的信息,并進行數(shù)據(jù)挑選。 例如,從GPS接收模塊得到的定位信息如下: $GPGGA,hhmmss,dddmm,mmmm,a,dddmm,mmmm,a,x,xx,x.x,x.x,M,,M,x.x,xxxx,*hh<CR><LF> 這實際上是NMEA-0183無線通信輸出格式(National Marine Electronics Association, NMEA, 美國海洋電子協(xié)會)。每次都會發(fā)出像上面格式的一個數(shù)據(jù)串,更多的時候我們都把這個字符串稱為一個數(shù)據(jù)包。
  • $是包頭,GPGGA是包名;
  • hhmmss,dddmm,mmmm,a,dddmm,mmmm,a,x,xx,x.x,x.x,M,,M,x.x,xxxx是數(shù)據(jù)內(nèi)容;
  • *是指包尾;
  • hh為校驗位;
  • <CR>是回車符,ASCII碼值為13;
  • <LF>是換行符,ASCII碼值為10。
這里加上回車符和換行符,只是為了方便調(diào)試。 下面對這個包進行實例化: $GPGGA,033744,2446.5241,N,12100.1536,E,1,10,0.8,133.4,M, , , ,*1F 在我們實際定位的系統(tǒng)中,并不能夠顯示這些數(shù)據(jù)就足夠了,我們還需要實時將有關(guān)的數(shù)據(jù)提取出來,或者在程序中使用,或者提供給第三方。為了提取出“有用的”信息,我們必須要知道該數(shù)據(jù)包的格式定義。具體解釋如下:

知道了GPS的數(shù)據(jù)通信協(xié)議格式,我們便可以得到相應(yīng)的位置信息:北緯24度46.5241分、東經(jīng)121度00.1536分、格林威治時間03點37分44秒、定位衛(wèi)星編號10。 其實,這種GPS必須遵循的數(shù)據(jù)描述格式就稱為通信用戶協(xié)議,這種協(xié)議一般一方單獨建立就好,另一方只需要依據(jù)這樣的協(xié)議來進行數(shù)據(jù)接收與發(fā)送就好! 這其實也能深刻地解釋為什么我們要編制用戶協(xié)議。

4.串口通信中用戶層協(xié)議編制原理

在串口用戶層的通信協(xié)議中,一般是圍繞發(fā)送方如何建立數(shù)據(jù)包和接收方如何處理數(shù)據(jù)包,并從數(shù)據(jù)包中提取出我們關(guān)心的信息。通信協(xié)議也為這個事兒進行服務(wù)。實際上,用戶層的通信協(xié)議沒有那么嚴謹,隨意一點就好......但是,還是有那么幾個原則需要我們嚴格遵守:

4.1 數(shù)據(jù)包必須有包頭

包頭是供接收方判斷一個數(shù)據(jù)包開始傳輸?shù)闹匾獦?biāo)志,接收方從收到的數(shù)據(jù)中判斷接收到了包頭,就認為接收的數(shù)據(jù)已經(jīng)開始,真正的數(shù)據(jù)信息馬上就會到達。但是,我們必須要切記一點,包頭字符必須有別于數(shù)據(jù)信息,也就是說,這種特征是數(shù)據(jù)包中其他數(shù)據(jù)沒有的,否則會造成混亂。

4.2 非定長數(shù)據(jù)必須有包尾

這個很少用,用也很好理解

4.3 定長數(shù)據(jù)應(yīng)該指明長度

對于長度不變的數(shù)據(jù)包,數(shù)據(jù)長度應(yīng)該事先約定。這樣接收方在知道接受長度之后,就能夠判斷接收的數(shù)據(jù)包是否結(jié)束。

4.4 建議對數(shù)據(jù)進行校驗

串口通信底層協(xié)議(機器硬件實現(xiàn))已經(jīng)設(shè)置了奇偶檢驗方式。其實,如果在用戶層添加新的校驗,可以對數(shù)據(jù)進行進一步的排錯,這樣可以更好地保證數(shù)據(jù)的正確性。

4.5 換行符的使用

如果是要顯示數(shù)據(jù),前列推薦在數(shù)據(jù)包的結(jié)尾添加換行符,方便閱讀接收到的數(shù)據(jù)。然而,如果僅把接收到的數(shù)據(jù)作為基礎(chǔ)數(shù)據(jù),那就沒有必要了......

4.6 如果更新快的數(shù)據(jù),建議盡量簡短

如果要求數(shù)據(jù)更新快,就要讓每次傳輸?shù)臄?shù)據(jù)盡量短。

5.在串口通信中幾種常用的用戶層協(xié)議

在常見的用戶層協(xié)議中,按照輸出數(shù)據(jù)的可讀性可以分為完整性協(xié)議和簡單型協(xié)議,NMEA-0183無線通信輸出協(xié)議,包含了包頭、數(shù)據(jù),包尾、校驗、換行,而且數(shù)據(jù)之間還有逗號分隔,觀察數(shù)據(jù)非常方便。但是數(shù)據(jù)包長度增加,發(fā)送時間也會增加,這在很多更新快的場合是不合適的;簡單型協(xié)議則去掉了在程序中不需要利用的換行與分隔符,有時甚至連校驗也省略了。

5.1 NMEA-0183無線通信協(xié)議

5.2 自定義的通信協(xié)議

自定義通信協(xié)議可以設(shè)置的非常簡單,也可以為了查看方便,設(shè)置得比較復(fù)雜。簡單的協(xié)議一般需要傳送的信息比較簡單,而且沒必要直接進行觀察。 以四字節(jié)組成的通信協(xié)議為例,進行深入研究:



這個簡單的例子,可以說明,僅僅是4個字節(jié)的通信協(xié)議就可以傳送大量的信息,而且還加入了校驗,在實際的應(yīng)用中,我們還是應(yīng)該進行協(xié)議的擴充!

6.總結(jié)

在實際應(yīng)用中,我們能看到各種協(xié)議,但是它們的實質(zhì)都是一樣的。首先,對數(shù)據(jù)進行“打包”發(fā)送;然后接收方,對數(shù)據(jù)進行“拆包”。進而對數(shù)據(jù)包中的數(shù)據(jù)進行處理,或是提取有用的數(shù)據(jù),或是進行編碼翻譯,這也是下一部分,將要討論的話題。






總結(jié)

以上是生活随笔為你收集整理的我也聊聊串口通信协议:用户层通信协议的编制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 香蕉av一区二区三区 | 免费午夜人成电影 | 丰满人妻一区二区三区在线 | 99久久婷婷国产精品综合 | 看一级黄色 | 在线观看av的网址 | 日本人dh亚洲人ⅹxx | 一区二区欧美日韩 | 欧美毛茸茸| 91大神视频在线播放 | 亚洲最大激情网 | 亚洲av无码一区二区三区网址 | 超碰成人网| 中出在线播放 | 91看片免费看 | 日本aaaa | 亚洲小视频在线观看 | 天堂成人国产精品一区 | 顶级尤物极品女神福利视频 | 日韩色网| 动漫精品一区二区三区 | 日韩在线欧美在线 | 亚洲乱码精品久久久久 | 亚洲精品字幕 | 久草一区| 男生和女生差差视频 | 精品人伦一区二区三电影 | 色乱码一区二区三区 | 色综合天 | 精品人妻中文无码av在线 | 亚洲精品视频在线观看免费 | 久久久精品视频免费 | 九草av| 99免费观看| 日韩美女一级片 | 一区二区三区不卡视频在线观看 | 一级黄色电影片 | 国产福利精品在线观看 | 国产三级自拍视频 | 中文字幕不卡 | 97视频在线免费 | 日韩电影一区二区三区 | 人av在线| 欧美激情性生活 | 亚洲a色 | 日本一区二区在线观看视频 | 亚洲精品久久久乳夜夜欧美 | 蜜桃视频无码区在线观看 | 亚洲免费在线视频 | av先锋在线 | 色视频一区 | 巨乳美女在线 | 久久精品97 | 国模无码视频一区 | 精品欧美一区二区三区在线观看 | 黄色a级大片 | 成人福利午夜 | 国产亚洲自拍av | 成人av黄色 | 国产第一页屁屁影院 | 污视频在线免费观看 | 春宵av| 欧美精品色视频 | 亚洲国产成人精品一区二区三区 | 成人午夜视频免费观看 | 人妻精品无码一区二区三区 | 免费毛毛片 | 同人动漫在线观看 | 青青青草视频在线观看 | 日韩欧美中文字幕一区二区三区 | 红桃视频网站 | 狐狸视频污 | 五月婷婷婷婷 | 国产剧情av引诱维修工 | 亚洲av无码专区在线 | 久久av高潮av无码av喷吹 | 欧美tickle狂笑裸体vk | 开心色站 | 美女狂揉羞羞的视频 | 欧美黑吊大战白妞欧美大片 | 久久国产柳州莫菁门 | 超碰在线中文 | 国产精品高潮呻吟视频 | 亚洲色图14p | 五月婷婷一区二区 | 免费亚洲婷婷 | av有码在线观看 | 亚洲少妇xxx | 国产主播一区二区 | 日韩人妻无码一区二区三区99 | 亚洲第一色播 | 99国产精品久久久久久久 | 伊人96| 亚洲午码 | 看特级黄色片 | 天天操天天操天天操天天操天天操 | 奇米网狠狠干 | 玖玖综合网 | 在线观看中文字幕码 |