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

  • 串口協(xié)議以及串口二進(jìn)制整數(shù)據(jù)包解析

    2018/1/11??????點(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è)典型的方案,但是對幀頭與幀尾在設(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)將會出現(xiàn)誤判。另外一個(gè)。數(shù)據(jù)的校驗(yàn)算法是很必要的,在數(shù)據(jù)傳輸中,由于受到干擾,很難免有時(shí)出現(xiàn)數(shù)據(jù)錯誤,加上校驗(yàn)碼可在發(fā)現(xiàn)數(shù)據(jù)傳輸錯誤時(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ù)包。但是,會不會存在問題呢?比如說從機(jī)向主機(jī)發(fā)送數(shù)據(jù),發(fā)送了一半,掉電,重啟,開機(jī)后繼續(xù)發(fā)送,這很明顯接收到的數(shù)據(jù)就不對了,所以此時(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í)間就會減少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ù)包了。

    進(jìn)行一個(gè)簡單的小的總結(jié),上述幾種方法都還是較為常用的,在具體的實(shí)現(xiàn)上,可以根據(jù)具體的實(shí)際情況,設(shè)計(jì)出具體的通訊協(xié)議。數(shù)據(jù)校驗(yàn)位,有時(shí)候感覺不出來其重要性,但是一定要加上,對數(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是很快的,至少對于串口是這樣,在接受每個(gè)數(shù)據(jù)的間隔期間,處理器還是可以做些其他工作的。在多線程中,那就可以直接建立一個(gè)數(shù)據(jù)接收線程。

    主站蜘蛛池模板: 国产黄色免费观看_99精品久久久久中文字幕_夜夜躁狠狠躁日日躁202_中文字幕12页_亚洲精品乱码久久久久久麻豆不卡_91mv.cool在线观看_成人免费ā片在线观看_午夜视频h | 亚洲成年人av_日本高清不卡一区二区三区视频_羞羞答答xxdd在线播放_97国产_日本十八禁免费看污网站_天天综合网久久_美女18禁裸乳裸体无遮挡的网站_伊人久久精品一区二区三区 | 在线天堂资源www中文_特级无码A级毛片特黄_中文字幕2018第一页_影音先锋成人影院_天天番号网_亚洲经典视频_日本狠狠色_国产乱码久久久久久 | 男女啪啪免费观看网站_欧美性开放情侣网站_别c我啊嗯国产av一毛片_79年熟女大胆露脸啪啪对白P_久久久久久久一级_日韩国产色_日本视频黄_欧美一区二区播放 | 91久久精品综合_亚洲成人基地_久久亚洲精品成人_久久夜av_俺来也在线视频_高潮喷水无码一区二区三区_久久精品人妻中文系列_亚洲最大天堂网 | 国产精品老熟女一区二区三区_69久久夜色精品国产69蝌蚪网_四虎永久在线精品免费一区二区_永久免费在线_精品国产一区二区三区国产区_天天天天天操_久久久久久AV无码免费网站_亚洲高清一区二 | 91动漫网站_亚洲欧美成人影院_老黄色片_三年片在线观看大全_最新理伦片eeuss影院2012_久久综合免费_亚洲精品资源_欧美精品在线观看 | 一级毛片999_av人人揉揉资源站免费_久久精品av麻豆的观看方式_亚洲人午夜精品免费_中文字幕乱偷无码动漫av_少妇的肉体AA片免费_野花香影院在线观看视频免费_加山夏子av | 久久丫精品国产免费_黑人狂躁日本妞一区二区三区_男人午夜网站_成人高清在线视频_精品一区在线免费观看_8mav精品成人_夜精品无码A片一区二区蜜桃_aⅴ色国产欧美 | 黄色av日韩_男人的天堂色_国产一乱一伦一情_91人人干_国产秋霞理论久久久_一区二区在线播放视频_亚洲国产欧美在线人成最新_亚洲av网址在线观看 | 日本一二区视频_影音先锋中文字幕亚洲资源站_精品国自产在线观看_免费aa大片_国产精品yjizz视频网_在线成人免费av_老师夹震蛋上课出白浆_琪琪秋霞午夜av影院 | 日本中文字幕网址_亚洲久久色_精品国产一区二区亚洲人成毛片_人成免费a级毛片_真人在线观看色网视频_日韩AV高潮喷水在线观看_久草影视在线_国产女人爽到高潮久久久4444 | 久热国产精品视频_波萝蜜A毛黄AAA片_老师掀起裙子让我把j放进去视频_亚洲精品乱码久久久久膏_亚洲欧美一区二区三区_天天躁日日躁狠狠躁aab吃奶_美女又黄又免费视频_日韩无码系列综合区 | 精品国产一区二区三区久久久樱花_久久爱影视_xxxxx性开放_久久久久久无码AV成人影院_九九夜夜_91视频网址入口_67194熟妇在线观看线路1_美女内射无套日韩免费播放 | 狠狠干人人干_国产又色又爽又黄又免费_一区二区亚洲_日韩黄色片_日韩视频一区二区三区在线观看_最近中文AV字幕在线中文_精品欧洲AV无码一区二区三区_岳好紧好湿夹太紧了好爽矜持 | 欧美人与动牲交免费观看_丝袜美女被遭强高潮网站_色欲天天天综合网_亚洲福利_久久三级影院_国产乱子伦在线观看免费_国产精品成人一区二区_久久久日韩精品一区二区 | 中文字幕人妻在线中字_性色av一区二区三区四区_亚洲永久入口_国内精品二区_日韩毛片网站_最近2019年日本中文免费字幕_亚洲AV无码一区二区三区DV_成人播放视频 | 国产精品国产精品偷麻豆_一级特黄视频_久久综合九色综合97婷婷_亚洲色图在线免费观看_极品少妇XXXX_久久国语_亚洲成人经典_久久99婷婷国产精品免费| 国内精品久久无码人妻_久久国产精品大桥未久av_亚洲最大日韩中文字幕另类_91看片免费版_亚洲中文字幕久久精品无码va_操操操视频_五十高熟中文字幕_91一区二区三区四区 | 999国产精品_欧美牲交a欧美牲交aⅴ免费_国产免费一区二区三区在线网站_AV无码专区亚洲AV极速版_国a精品视频大全_4438激情网_色吧av色av_草在线视频 | 一级毛片区_911久久香蕉国产线看观看_午夜影院在线观看_人人爱97_国产精品av一区二区三区_亚洲欧洲无码在线观看_日本高清视频免费观看_亚洲性精品 | 亚洲中文无码永久免费_www私房写真在线观看_伊人无码一区二区三区_欧美精品在欧美一区二区_久久接色_欧美日韩精品一区_亚洲日本VA午夜在线影院_无码自拍一区 | 97在线精品视频_国产精品成年片在线观看_久久精品影视大全_亚洲男人综合久久综合天堂_日韩欧美中文字幕在线播放_免费av资源在线观看_国产精品区一区二区三在线播放_精品久久久久久国产三级 | 免费看片子_99精品国产再热久久无毒不卡_xxxx日韩_亚洲不卡一区二区三区四区_欧美bwbwbwbwbw_性妲己一级淫片免费放_国产精品毛片av999999_在线观看免费人成视频色 | 欧美午夜精品久久久久久软件_亚洲第一成年人视频_边勾边做1V1H顾慕琛_午夜精品久久久99热使用方法_日韩国产精品91_国产人成在线视频免费播放_一区二区三区国产欧美日韩_动漫AV纯肉无码AV在线播放 | 午夜欧美一区二区三区免费观看_欧美日韩国产精品激情在线播放_亚洲美女一二三区_综合97_av人摸人人人澡人人超碰_93超碰国产大屁股_www午夜精品视频一区二区_日本tubesex人妻 | 久久精品免费一区二区_97精品人人妻人人_av网址在线观看免费_成年免费视频播放网站推荐_国产猫咪精品久久天干天干_9999国产_中文字幕28页_日本免费高清一区二区 | 精品国产无套在线观看_亚洲在线看_久久精品免费看国产免费软件_欧美桃色网_久久久99精品成人片_日韩黄色av_美女黄网免费_精品欧美一区二区久久久伦 | 中文字幕一区二区三区视频_国产鲁鲁视频在线观看_亚洲精品亚洲人成在线观看麻豆_69久久久久_7m精品福利视频导航_色婷婷精品久久二区二区我来_大香伊人久久精品一区二区_大学生一级片 | 伊人色综合久久天天网图片_三上悠亚在线一区二区_97夜夜澡人人爽人人模人人喊_国产片性视频免费播放_avv在线播放_亚洲欧美综合另类中字_性爱国产精品福利_国产特级黄色 | 野花免费观看_欧洲久久久久_午夜精品久久久久久久四虎_两性故事吃奶添下面_福利视频一区二区三区_热久久精品免费视频_亚洲日韩欧美一区二区三区_国产精品69久久 av高清_经典国产乱子伦精品视频_国产在线1_中国视频一区二区_成人在线视频网_免费日韩一级片_a级国产片_痴汉中出中文字幕在线视频 | 日本三级韩国三级香港三级写真集_ccyy草草影院地址入口_成人免费在线视频播放_久久99热人妻偷产国产_亚洲一区色_男人影音_国产AV国片偷人妻麻豆_99re8在线精品视频免费播放 | 人禽猛交免费观看_日韩av在线免费播放_人人爽人人爽人人片AV东京热_欧美国产日产观看_av线网_中文一区二区三区四区_成人免费网站视频ww破解版_人妻巨大乳HD免费看 | 精品久久久久久久一区二区蜜臀_西西人体444WWW大胆无码视频_天天艹av_国产日产欧产精品精品ai_亚洲麻豆_本道久久综合无码中文字幕_91精品国产麻豆国产在线观看_久久国产经典 | 色婷婷五月综合亚洲影院_免费在线观看亚洲视频_欧美一级日韩一级无毒不卡_国产精品高潮在线_国产一区久久_狠狠操一区二区三区_亚洲国产精品无码久久久久久曰_美女黄色网址 | 新91av_女人被做到高潮视频_韩国精品一区二区三区无码视频_亚洲国产亚洲_天天综合亚洲色在线精品_成人在线播放网站_午夜成年_黄色a在线 | 国产精品成人av_777亚洲熟妇自拍无码区_精品成人一区二区_成年片黄色日本大片网站视频_国产精品一区二区在线_亚洲青涩网_国产无遮挡裸露视频免费_中国毛片一级片 | 国产色综合视频_亚洲第一成人久久网站_免费看奶_亚洲日本韩国一区_亚洲a区在线视频_奇米影视9999_成人精品视频网站_好大好爽受不了了h | 97caopron在线视频_久久精品国产免费观看_色欲AV蜜桃一区二区三_久久精品88_瑞典性xxxxxhd高清_69av网站_91大神新作在线观看_巨茎爆乳无码性色福利 国产福利一区二区三区在线播放_中文字幕久精品免费视频_毛片a在线_精品黄色视_免费观看韩国理论片_成人免费A级毛片无码_一级免费看_中文字幕永久免费 | 99色免费视频_亚洲精品乱码久久久久久久_99ee6热久久免费精品6_av片在线免费_www.日本不卡_无码爆乳超乳中文字幕在线_色综合.com_亚洲色婷婷久久精品AV蜜桃小说 | 91大神在线观看视频_久久国产色av老熟蜜臀av_一本—道久久a久久精品蜜桃_亚洲AV日韩AV鸥美在线观看_国产高潮a片羞羞视频涩涩_久久伊人影院_国产成人无码国产亚洲_成人av视频 |