免费国产网站_秋霞午夜一区二区三区视频_99热在线看_日韩精品久久一区二区_午夜看一级毛片_天天鲁在视频在线观看

  • 您的位置:首頁 > 新聞動態 > 技術文章

    串口協議以及串口二進制整數據包解析

    2018/1/11??????點擊:

    以串口作為傳輸媒介,介紹下怎樣來發送接收一個完整的數據包。過程涉及到封包與解包。設計一個良好的包傳輸機制很有利于數據傳輸的穩定性以及正確性。串口只是一種傳輸媒介,這種包機制同時也可以用于SPI,I2C的總線下的數據傳輸。在單片機通信系統(多機通信以及PC與單片機通信)中,是很常見的問題。

    一、根據幀頭幀尾或者幀長檢測一個數據幀

    1、幀頭+數據+校驗+幀尾

    這是一個典型的方案,但是對幀頭與幀尾在設計的時候都要注意,也就是說幀頭、幀尾不能在所傳輸的數據域中出現,一旦出現可能就被誤判。如果用中斷來接收的話,程序基本可以這么實現:

    unsigned char recstatu;//表示是否處于一個正在接收數據包的狀態

    unsigned char ccnt;      //計數

    unsigned char packerflag;//是否接收到一個完整的數據包標志

    unsigned char rxbuf[100];//接收數據的緩沖區

    void UartHandler()

    {

    unsigned char tmpch;

    tmpch = UARTRBR;

    if(tmpch 是包頭)                          //檢測是否是包頭

    {  

    recstatu = 1;

    ccnt   = 0 ;

    packerflag = 0;

    return ;

    }

    if(tmpch是包尾)                          //檢測是否是包尾

    {

    recstatu = 0;

    packerflag = 1;                      //用于告知系統已經接收到一個完整的數據包

    return ;

    }

    if(recstatu ==1)                           //是否處于接收數據包狀態

    {

    rxbuf[ccnt++] = tmpch; 

    }

    }

    上面也就是接收一個數據包,但是再次提醒,包頭和包尾不能在數據域中出現,一旦出現將會出現誤判。另外一個。數據的校驗算法是很必要的,在數據傳輸中,由于受到干擾,很難免有時出現數據錯誤,加上校驗碼可在發現數據傳輸錯誤時,可以要求數據的另一方重新發送,或是進行簡單的丟棄處理。校驗算法不一定要很復雜,普通的加和,異或,以及循環冗余都是可以的。我上面的接收程序在接收數據時,已經將包頭和包尾去掉,這些可以根據自己的需求加上,關鍵是要理解原理。

    上述包協議出現了以下的幾種變種:

    1.1 幀頭+數據長度+數據+校驗值

    1.2包長+校驗值

    上面兩種其實都是知道了數據包的長度,然后根據接收字節的長度來判斷一個完整的數據包。例如,定義一個數據包的長度為256字節,那我們就可以一直接收,直到接收到256個字節,就認為是一個數據包。但是,會不會存在問題呢?比如說從機向主機發送數據,發送了一半,掉電,重啟,開機后繼續發送,這很明顯接收到的數據就不對了,所以此時很有必要定義一個超限時間,比如我們可以維護下面這樣的一個結構體。

    struct  uartrd{

    char  rd[ 256];

    unsigned int timeout;

    }

    成員變量rd用來存放接收到的數據字節;成員變量timeout用來維護超時值,這里主要討論這個。這個數值怎么維護呢,可以用一個定時器來維護,以可以放在普通的滴答中斷里面來維護,也可以根據系統運行一條指令的周期,在自己的循環中來維護,給其設置個初值,比如說100,當有第一個數據到來以后,timeout在指定的時間就會減少1,減少到0時,就認為超時,不論是否接收到足夠的數據,都應該拋棄。


    二、根據接收超時來判斷一個數據包

    2.1  數據+校驗

    核心思想是如果在達到一定的時間沒有接受到數據,就認為數據包接收完成。modbus協議里就有通過時間間隔來判斷幀結束的。具體實現是要使用一個定時器,在接收到第一個數據時候,開啟定時器,在接收到一個數據時候,就將定時器清零,讓定時器重新開始計時,如果設定的超時時間到(超時時間長度可以設置為5個正常接收的周期),則認為在這一段時間內沒有接受到新的數據,就認為接收到一個完整的數據包了。

    進行一個簡單的小的總結,上述幾種方法都還是較為常用的,在具體的實現上,可以根據具體的實際情況,設計出具體的通訊協議。數據校驗位,有時候感覺不出來其重要性,但是一定要加上,對數據進行一個相關的驗證還是必要的。現在很在MCU都帶有FIFO,DMA等功能,所以有時候利用上這些特性,可以設計出更好的通訊方式。有的人問在接受串口數據時候是應該中斷一次接收一個,還是進入中斷后接收一段數據呢,我認為應該中斷接收一個,因為CPU是很快的,至少對于串口是這樣,在接受每個數據的間隔期間,處理器還是可以做些其他工作的。在多線程中,那就可以直接建立一個數據接收線程。

    主站蜘蛛池模板: 超碰公开97_无码精品人妻一区二区三区98_亚洲av日韩av高潮无码专区_天天看av_97碰成人国产免费公开视频_91性色 | 欧美黑人巨大_jizzjizz中国精品麻豆_2021国产亚洲日韩在线_婷婷狠狠爱_在线精品国产成人综合_99久久无码一区人妻A片蜜臀 | 久久我不卡_少妇私密推油呻吟在线播放_满江红高清免费版观看_av成人国产_久久久久久久18_黄色裸体网站 | 午夜视频久久久久一区_亚洲精品久久久久综合_aaa日本_国产日韩AⅤ无码一区二区三区_精品h视频_国产精品吹潮在线观看中文 | 在线免费观看日韩_97夜夜澡人人爽人人喊91洗澡_www.成人在线观看_他揉捏她两乳不停呻吟人妻_成人免费淫片_嫩草嫩草嫩草嫩草 | 国产ts人妖另类_中文字幕在线播放一区二区_高H纯肉无码视频在线观看_为何是你俄罗斯_成人欧美一区二区三区视频不卡_成年女人黄小视频 | 成人无遮挡免费网站视频在线观看_亚洲人www_99国产精品久久久_国产亚洲精品久久久麻豆男与男_精品国产SM最大网站_免费精品视频 | 中文字幕日韩无_精品在线视频一区二区_免费在线看a_一个人看的www在线视频播放_日韩啊v在线_久精品视频在线观看 | 被医生绑在妇科椅调教_边做饭边被躁在线播放_91视频看污_人妖精品_国产精品有码无码AV在线播放_国产精品magnet | 爱爱一区二区三区_美女黄色一级毛片_国精品午夜福利视频不卡757_亚洲精品久久久9婷婷中文字幕_亚洲成av人片在线观看天堂无码_天堂av无码av一区二区三区 | 黄色v片_亚洲精品在线观_一区二区我不卡_无遮挡边摸边吃奶边做视频免费_日韩爱爱网_无码少妇一区二区三区免费看 | 伊人夜色精品一区二区三区_日韩在线三区_日韩在线视频欧美_玖草资源_日本免费高清一本视频_国产精品网站视频 91在线短视频_国产精品久久艹_91视频大全_超碰97人人模人人爽人人喊_japanese在线观看精品视频_久久精品国产99久久久小说 | 亚洲精品无码午夜福利中文字幕_91福利视频一区_看欧美黄色录像_国产传媒在线免费观看_欧美同性男同志VIDEOSBEST免费_国产日韩无 | 亚洲大成色www永久网站_日本在线视频中文字幕_欧美日一本_www.国产在线_给我免费播放片高清在线观看中国_粉嫩av一区二区三区在线观看 | tom成人影院新入口在线_日产黄av免费大片_日韩A级无码免费视频_国产成人aaa在线视频免费观看_日韩激情成人_精品一区二区三区在线观看 | 欧美日韩国产一区二区三区_9l久久午夜精品一区二区_20岁一级毛片_色999国产_久久精品一卡二卡_久久久国产亚洲精品AV快乐8 | 高清av免费观看_日韩精品视频一区二区三区_国产高潮刺激叫喊视频_免费看A片久久久久久久久久_老年人品久久久无码中文字幕_777米奇色狠狠888俺也去 | 国产亚洲免费观看_国产一极片_国产孕妇视频在线播放_国产美女在线一区_操操操人人人_久久综合九色综合欧美98 | 国内精品久久久久久99_精品无码国产AV一区二区三区_亚洲香蕉在线观看_国产骚妇自慰在线_8888在线观看免费www_亚洲综合区夜夜久久久 | 99探花在线观看_欧美日韩中文_国内a级一片免费av_亚洲春色无码Av不卡久久_国内成人免费视频_东京热456大交乱高清视频 | 91国精品人一区二区三区_日本黄色网站在线观看_欧洲s码亚洲m码精品一区_黄色免费网站观看_国产精品久久久久久久泡妞_国产精品美女久久久亚洲 | 日日夜操_久久国产精品系列_又大又粗又长的高潮视频_亚洲精品天天影视综合网_国内精品视频久久_麻豆乱码国产一区二区三区的优势 | 九九在线观看免费视频_色图自拍偷拍_日本无毛_国产成人综合亚洲亚洲国产第一页_超碰人人超碰_久久久久国产精品免费 | 99久久99_麻豆传煤在线观看_国内一级片_久久精品久久久久久_欧美性xxxxx极品少妇偷拍_高清对白精彩国产国语 | 在教室伦流澡到高潮hnp视频_av片免费播放_国产熟妇久久777777_av在线免费不卡_98视频精品全部国产_成在人线AV无码免费看网站 | wwwmmm日本_国产日本高清_亚洲一区a_国产suv精品一区二区69_欧美激欧美啪啪片_a级片在线免费播放 | 欧美精品一卡_免费91九色网_麻豆果冻传媒新剧国产短视频_日韩第1页_亚洲一区二区动漫_久久久av网站 | 久久综合亚洲欧美成人_超碰人人干人人_夜夜爱av_国产成人8x视频一区二区_国产精品亚洲国产三区_操操插插 | 99综合99_国产乱子影视频上线免费观看_69av在线视频_性猛交富婆xxxxx乱大交_国产一级片内射免费视频播放_婷婷六月色 | 欧美亚洲二区_国产精品99久久久久久成人四虎_久久久久久久久久久99_国产一区二区视频在线播放_18禁肉肉无遮挡无码网站_夜夜操比 | 99久久九九免费观看_国产爆乳无码视频在线观看_污18禁污色黄网站免费观看_国产午夜片_色噜噜品一区二区三区孕妇_国产日产亚欧系列 | 天天色成人综合网_91av免费在线观看_www.麻豆_天地争霸美猴王42集免费看_色哟哟视频在线观看免费播放_国产在线观 | 91免费污视频_草草影院地址_国产极品美女高潮无套在线观看_特级淫片国产免费高清视频_重口味av_日本高清不卡视频 | 天无日天天射天天视_老司机一区_国产AV办公室丝袜秘书_欧美日韩精品久久久久_人人干超碰_成人h精品动漫一区二区三区 | 丝袜美腿在线视频_国产在线激情_国精品人妻无码一区二区三区3D_成人片黄网站色大片免费观看_avhd101高清谜片在线_俺也去操 | 狠狠色噜噜狠狠狠狠米奇777_另类自拍偷拍_国产精品va在线观看手机版_久草在线资源免费_三级黄视频_97国产精品久久久 | 色??乱码一区二区三区唱戏_夜夜添无码一区二区三区_丁香色五月国产在线视频_国产麻豆果冻在线播放_日韩特级毛片_久草在线资源福利 | 一区一级在线观看_亚洲午夜精品_国产精品国产a_精品一区二区三区免费毛片_日韩精品无码一本二本三本色_亚洲高清网 | 99成人精品日韩激情网站_www.影院_噜噜噜久久亚洲精品国产品91_九久久久久_久久人91精品久久久久久不卡_久久久久久久久久久网 | av免费在线观_aa片在线观看无码免费_久久精品日产第一区二区三区乱码_羞羞答答xxdd在线网站观看_91久久久久久久久久久久_国产精品一区二区久久 | 欧美日韩在线视频免费观看_96精品在线视频_天天艹日日艹_国产精品亚洲欧美一区麻豆_亚洲AV人人爽人人夜蜜桃_放荡的少妇2欧美版 |