99国产欧美另娄久久久精品_国内自拍农村少妇在线观看_久久亚洲道色宗和久久_日本aⅴ大伊香蕉精品视频_亚洲国产欧美日韩欧美特级_日本视频免费在线观看

  • 串口數(shù)據(jù)包解析代碼分析

    2019/1/10??????點(diǎn)擊:
    這里以串口作為傳輸媒介,介紹下怎樣來發(fā)送接收一個(gè)完整的數(shù)據(jù)包。過程涉及到封包與解包。設(shè)計(jì)一個(gè)良好的包傳輸機(jī)制很有利于數(shù)據(jù)傳輸?shù)姆€(wěn)定性以及正確性。串口只是一種傳輸媒介,這種包機(jī)制同時(shí)也可以用于SPI,I2C的總線下的數(shù)據(jù)傳輸。在單片機(jī)通信系統(tǒng)(多機(jī)通信以及PC與單片機(jī)通信)中,是很常見的問題。
    一、根據(jù)幀頭幀尾或者幀長檢測一個(gè)數(shù)據(jù)幀
    1、幀頭+數(shù)據(jù)+校驗(yàn)+幀尾
    這是一個(gè)典型的方案,但是對(duì)幀頭與幀尾在設(shè)計(jì)的時(shí)候都要注意,也就是說幀頭、幀尾不能在所傳輸?shù)臄?shù)據(jù)域中出現(xiàn),一旦出現(xiàn)可能就被誤判。如果用中斷來接收的話,程序基本可以這么實(shí)現(xiàn):
    unsigned char recstatu;//表示是否處于一個(gè)正在接收數(shù)據(jù)包的狀態(tài)
    unsigned char ccnt;      //計(jì)數(shù)
    unsigned char packerflag;//是否接收到一個(gè)完整的數(shù)據(jù)包標(biāo)志
    unsigned char rxbuf[100];//接收數(shù)據(jù)的緩沖區(qū)
    void UartHandler()
    {
           unsigned char tmpch;
           tmpch = UARTRBR;
           if(tmpch 是包頭)                          //檢測是否是包頭
          {  
                recstatu = 1;
                ccnt   = 0 ;
                packerflag = 0;
                return ;
           }
           if(tmpch是包尾)                          //檢測是否是包尾
           {
                recstatu = 0;
                packerflag = 1;                      //用于告知系統(tǒng)已經(jīng)接收到一個(gè)完整的數(shù)據(jù)包
                return ;
           }
          if(recstatu ==1)                           //是否處于接收數(shù)據(jù)包狀態(tài)
          {
                rxbuf[ccnt++] = tmpch; 
          }
    }
    上面也就是接收一個(gè)數(shù)據(jù)包,但是再次提醒,包頭和包尾不能在數(shù)據(jù)域中出現(xiàn),一旦出現(xiàn)將會(huì)出現(xiàn)誤判。另外一個(gè)。數(shù)據(jù)的校驗(yàn)算法是很必要的,在數(shù)據(jù)傳輸中,由于受到干擾,很難免有時(shí)出現(xiàn)數(shù)據(jù)錯(cuò)誤,加上校驗(yàn)碼可在發(fā)現(xiàn)數(shù)據(jù)傳輸錯(cuò)誤時(shí),可以要求數(shù)據(jù)的另一方重新發(fā)送,或是進(jìn)行簡單的丟棄處理。校驗(yàn)算法不一定要很復(fù)雜,普通的加和,異或,以及循環(huán)冗余都是可以的。我上面的接收程序在接收數(shù)據(jù)時(shí),已經(jīng)將包頭和包尾去掉,這些可以根據(jù)自己的需求加上,關(guān)鍵是要理解原理。
    上述包協(xié)議出現(xiàn)了以下的幾種變種:
    1.1 幀頭+數(shù)據(jù)長度+數(shù)據(jù)+校驗(yàn)值
    1.2包長+校驗(yàn)值
    上面兩種其實(shí)都是知道了數(shù)據(jù)包的長度,然后根據(jù)接收字節(jié)的長度來判斷一個(gè)完整的數(shù)據(jù)包。例如,定義一個(gè)數(shù)據(jù)包的長度為256字節(jié),那我們就可以一直接收,直到接收到256個(gè)字節(jié),就認(rèn)為是一個(gè)數(shù)據(jù)包。但是,會(huì)不會(huì)存在問題呢?比如說從機(jī)向主機(jī)發(fā)送數(shù)據(jù),發(fā)送了一半,掉電,重啟,開機(jī)后繼續(xù)發(fā)送,這很明顯接收到的數(shù)據(jù)就不對(duì)了,所以此時(shí)很有必要定義一個(gè)超限時(shí)間,比如我們可以維護(hù)下面這樣的一個(gè)結(jié)構(gòu)體。
    struct  uartrd{
    char  rd[ 256];
    unsigned int timeout;
    }
    成員變量rd用來存放接收到的數(shù)據(jù)字節(jié);成員變量timeout用來維護(hù)超時(shí)值,這里主要討論這個(gè)。這個(gè)數(shù)值怎么維護(hù)呢,可以用一個(gè)定時(shí)器來維護(hù),以可以放在普通的滴答中斷里面來維護(hù),也可以根據(jù)系統(tǒng)運(yùn)行一條指令的周期,在自己的循環(huán)中來維護(hù),給其設(shè)置個(gè)初值,比如說100,當(dāng)有第一個(gè)數(shù)據(jù)到來以后,timeout在指定的時(shí)間就會(huì)減少1,減少到0時(shí),就認(rèn)為超時(shí),不論是否接收到足夠的數(shù)據(jù),都應(yīng)該拋棄。
    二、根據(jù)接收超時(shí)來判斷一個(gè)數(shù)據(jù)包
    2.1  數(shù)據(jù)+校驗(yàn)
    核心思想是如果在達(dá)到一定的時(shí)間沒有接受到數(shù)據(jù),就認(rèn)為數(shù)據(jù)包接收完成。modbus協(xié)議里就有通過時(shí)間間隔來判斷幀結(jié)束的。具體實(shí)現(xiàn)是要使用一個(gè)定時(shí)器,在接收到第一個(gè)數(shù)據(jù)時(shí)候,開啟定時(shí)器,在接收到一個(gè)數(shù)據(jù)時(shí)候,就將定時(shí)器清零,讓定時(shí)器重新開始計(jì)時(shí),如果設(shè)定的超時(shí)時(shí)間到(超時(shí)時(shí)間長度可以設(shè)置為5個(gè)正常接收的周期),則認(rèn)為在這一段時(shí)間內(nèi)沒有接受到新的數(shù)據(jù),就認(rèn)為接收到一個(gè)完整的數(shù)據(jù)包了。

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


    主站蜘蛛池模板: 亚洲免费av一区二区三区_国产模特私拍视频再现_午夜小视频在线播放_久久爱成人网_亚洲av无码国产精品色午夜洪_亚洲欧美成AⅤ人在线观看_欧美亚洲视频一区二区_91.com在线 | 四色网站_久久久久人妻一区精品色_丁香婷婷综合在线麻豆_大屁股人妻女教师撅着屁股_精品丝袜国产自在线拍高清_99精品欧美一区_国产在线不卡2005_草草影院第一页 | 国产一区二区三区美女_一个人看的www免费观看视频_在线成人看片_国产伦精品一区二区三区88av_亚洲精品无码AV中文字幕_精品久久久久久综合日本_九色成人在线_穿书自救指南2樱花动漫免费观看 | 女人高潮的24种图片_av免费网站在线_777亚洲精品乱码久久久久久_免费又色又爽又黄的舒服软件_欧美一区2区视频在线观看_av大片在线无码免费_韩日一级片_逼逼综合网 | 国产精品成人av_777亚洲熟妇自拍无码区_精品成人一区二区_成年片黄色日本大片网站视频_国产精品一区二区在线_亚洲青涩网_国产无遮挡裸露视频免费_中国毛片一级片 | 亚欧美无遮挡HD高清在线视频_日本一区二区免费在线播放_大肉大捧一进一出好爽视色大师_亚洲天堂福利视频_欧美成一区_国产CHINESEHDXXXX美女_97视频一二区_亚洲精品中字 | 久草久热_亚洲AV综合日韩_精品日韩一区_720lu国产刺激在线观看_日本娇小xxxⅹhd_亚洲爆乳AAA无码专区_日本少妇高潮喷水视频_久久精品国产国产精品四凭 | 手机国产视频福利_亚洲看片_亚洲AV乱码久久精品蜜桃_丁香五月综合缴清中文_亚洲自拍偷拍综合网_青青精品_国产一区在线视频播放_亚洲天堂99 | 日韩成人精品在线观看_日韩搞逼_免费日韩片_成人一级免费视频_天天爽夜夜爽人人爽曰_成人免费大全_日本黄色激情片_a国产亚洲欧美精品一区在线观看 | 欧美aaaaaa午夜精品_日本黄色免费视频_成全世界免费高清观看_中文字幕在线_亚洲一区二区三区乱码在线欧洲_日本在线观看中文自拍_日本欧美黄色大片_久草免费在线视频观看 | 91成人免费_久久伊人国产精品_日日操狠狠操_麻豆91在线视频_欧美成人在线免费_97久久天天综合色天天综合色hd_国产色婷婷综合影一区二区三区_亚洲欧美综合国产不卡 | 曰韩av在线_国产精品久AAAAA片_欧美色就插_久久久女人视频_欲求不满的寂寞人妻中文字幕_JIZZ中国JIZZ在线观看_日本黄色高清视频_亚洲一区久 | 97在线精品视频_国产精品成年片在线观看_久久精品影视大全_亚洲男人综合久久综合天堂_日韩欧美中文字幕在线播放_免费av资源在线观看_国产精品区一区二区三在线播放_精品久久久久久国产三级 | JAPANESEHD熟女熟妇伦_国产精品5c5c5c_国产6区_国产精品人妻一码二码_极品少妇被猛的白浆直喷白浆_91麻豆精品国产自产在线观看一区_在线国产福利_妺妺窝人体色777777 | 又大又硬又爽又黄又粗又长_精品一区二区三区91_91精产国品_久久99伊人_波多野中文字幕_日韩国产区_伊人短视频_999精品欧美一区二区三区黑人 | 国产精品超碰_国产精品久久久久久久成人午夜_综合久久2o19_上司部长出轨漂亮人妻_成人九色_互换后人妻的呻吟晓红_国产精品欧美_亚洲mv大片欧洲mv大片 | 欧美人妻一区二区三区_九九在线精品国产_国产精品无码MV在线观看_一级免费观看_天堂中文av_日本护士野外奶水HD_国产精品人成_91久久人澡人人添人人爽欧美 | 日本亚洲a_丰满人妻久久中文字幕免费_国产午夜大片_一级黄色日本_国产精品美女久久久m_亚洲视频网站在线观看_男女多P混交群体交乱A片_四虎最新影院 | 国产精品国产精品偷麻豆_一级特黄视频_久久综合九色综合97婷婷_亚洲色图在线免费观看_极品少妇XXXX_久久国语_亚洲成人经典_久久99婷婷国产精品免费| 爆乳喷奶水无码正在播放_超碰在线播放97_精品视频99_麻豆少妇厨房com_性高朝久久久久久久_我和同学人妻熟妇的激情_特黄毛片在线观看_AV无码精品1区2区3区 | 丁香伊人网_www.4虎.com_亚洲av日韩av无码尤物_日日夜视频_热re91久久精品国99热蜜臀_青青草娱乐视频_人妻无码一二三区免得_日本卡一卡2卡三卡4乱卡乱码 | 无码国产精品久久一区免费_国产亚洲精品俞拍视频_最近中文字幕免费mv_日韩午夜精品免费理论片_99热r_日韩wwww_欧美男人天堂网_久久久首页 | 久久久久久国产精品免费_国产69精品久久久久乱码韩国_jizz国产免费观看_国内一级黄色大片_爱爱久久_日本激情网_超碰人人在线_51午夜精品视频 狼群社区WWW在线中文_精品国偷自产在线视频_人妻被中出不敢呻吟A片视频_99久久精品国产网站_九九在线视频_国产h片在线观看_国产美女被遭强高潮免费_欧洲vodafone精品性 | 久久人人爽天天玩人人妻精品_专干日本老妇HD_国产精品xxx视频_黄色片免费_国产精品一区二区福利视频_免费精品一区二区三区第35_国产精品色吧国产精品_老美黑人狂躁亚洲女 | 色八a级在线观看_久久久久国产精品一区二区三区_欧美成人69sss_91在线播_天天干夜夜透_1区2区在线观看_成人国产在线观看_日本第一页 | 神马久久免费_日韩亚洲在线观看_亚洲欧美韩国_蘑菇视频黄色_天天干夜夜艹_911色_911色sss主站色播_免费观看做爰视频ⅹxx午夜_国产精品久国产精品 | 国产黄色免费观看_99精品久久久久中文字幕_夜夜躁狠狠躁日日躁202_中文字幕12页_亚洲精品乱码久久久久久麻豆不卡_91mv.cool在线观看_成人免费ā片在线观看_午夜视频h | 里番精品3d一二三区_日本草逼_亚洲AV无码专区日韩乱码_日韩视频中文字幕精品偷拍_日韩精品亚洲一区_91国内精品白嫩初高生_中文字幕免费久久_99久久久久久久 | 黄色高清视频在线观看_国产久免费热高清视频在线观看_国产乱人伦在线播放_丁香视频免费观看_欧美日韩在线影院_日本成人在线免费视频_韩国一级黄色录像_av免播放 国内自拍中文字幕_国产在线va_狠狠婷婷_午夜看片在线观看_日本精品在线一区_特级做a爰片毛片免费看1o8_日韩一本之道一区中文字幕_老司机午夜永久免费影院 | 麻豆精品国产免费_久久婷婷国产综合一区二区_国产在线视频网站_亚洲最新版av无码中文字幕一区_国产女教师高潮叫床视频网站_国产高清自拍_久久欧美_国产片一区二区三区 | 天天夜夜骑_亚洲国产五月综合网_亚洲v区_午夜久久久精品_日本一区二_亚洲欧美日韩Aⅴ在线观看_国产成人精品一区一区一区_北条麻妃在线一区二区 | 精品国产一区二区三区久久_国产乱人伦真实精品视频_欧美肥胖老太bbw_一区二区三区在线视频_精品嫩草_欧美性xxxx视频_曰本黄色片_性XXXX中国HD | 99在线视频免费_97干干_麻豆传媒观看_成在人线AV无码免费高潮喷水_xxxx性欧美_亚洲一级影片在线观看_又大又粗欧美黑人AAAAA片_国产女同一区二区在线 | 97热在线精品视频在线观看_自拍亚洲一区欧美另类_女兵的真人大毛片_免费看欧美成人A片无码_99久久综合国产精品二区_欧美xxxxx精品_久久久精品久_国产精品极品美女自在线观看免费 | 亚洲精品国产a_国产麻豆乱子伦午夜视频观看_a级大片_久久精品国产91精品亚洲高清_日韩免费视频中文字幕_亚洲AV成人一区二区三区_芒果视频91_高潮一区二区 | 日韩一级成人_日韩美女毛片_美女视频网站久久_亚洲AV最新天堂地址_av免费在线视_无码丰满熟妇juliaann_日本黄色影院在线观看_亚洲热久久 | 国内xxxx乱子另类_4399伦理片_蜜乳av入口_我半夜摸妺妺的奶摸到高潮_亚洲精品偷拍影视在线观看_免费三级国产_亚洲VA在线∨A天堂VA欧美VA_中文字幕乱码亚洲影视 | 一区二区三区无码视频免费福利_中文字幕不卡在线播放_2015成人永久免费视频_国产欧美一区二区精品婷婷_日韩第一页在线_国产高清第一页_欧美人与动牲交欧美精品_特级bbbbbbbbb视频 | 97无码视频在线看视频_男人女人真曰批的视频8_国产超污精品A级毛片_国产亚洲精品久久久久久动漫_波多野结衣中文字幕在线视频_337p日本欧美色噜噜噜_男人艹女人视频_久久福利看片 | 国产欧美一区二区久久性色99_精品国产1区二区_特黄A又粗又大又黄又爽A片软件_国产精品亲子乱子伦xxxx裸_a国产一区二区免费入口_黑人巨茎大战欧美白妇免费_999在线观看视频_亚洲成人一区在线 | 日韩精品在线免费_性一交一乱一伦一色一情孩交_麻豆影视免费_久草五月天_男男被各种姿势C到高潮视频_亚洲欧美日韩在线_开心五月激情中文在线_无码欧精品亜州日韩一区夜夜嗨 |