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ù)接收線程。

    主站蜘蛛池模板: 在线视频你懂_米奇影院777_GOGOGO免费高清日本TV_日韩欧美一区二区三区四区_疯狂做受XXXX高潮视频免费_亚洲精品久久久久久久久久_99久久人人爽亚洲精品美女_久久久久久久高清 | 亚洲精品宾馆在线精品酒店_色窝窝色蝌蚪在线视频_麻豆传媒tv_国产9999精品_大地资源第二页中文高清版_国产一级爱_亚洲AV无码国产在丝袜线观看_噜噜噜亚洲色成人网站∨ | 国产成人啪精品午夜网站_bgmbgmbgm毛多老太免费_亚洲成人黄色av_四虎影视成人永久免费观看视频_99综合久久_天天鲁在线视频免费观看_91啪在线_四虎影视国产精品免费久久 | 欧美一区欧美二区_久久伊人精品中文字幕有软件_天天色综合合_久久情侣视频_久久aⅴ人妻少妇嫩草影院_91操bb_伊人久久视频_在线视频观看免费视频18 | 免费看三片在线播放_天天爽影院一区二区在线影院_午夜性做爰免费看_中文字幕亚洲高清_尤物久久av一区二区三区亚洲_国产精品乱子_h免费观看_一牛蜜桃色香阁aⅴ | 日韩一区久久_av国产片_久热免费在线_中文www天堂网_男按摩师系列无码视频_日本色呦呦_99无人区码一码二码三_国产性网 | 亚洲精品第一区二区三区_永久黄网站色视频免费观看_新japanesehdxxxx乱_久久国产欧美一区二区精品爱欲_美淫在线_女厕偷窥一区二区三区_欧美久久性视频_中国免费黄色 | 观看免费av_午夜国产影院_精品精品国产高清a毛片_天天躁夜夜躁狠狠久久成人网_无翼乌之侵犯工口全彩老师_亚洲双插_国产一在线精品一区在线观看_一本大道久久东京热无码av | 国内精品伊人久久久久AV影院_国产欧美洲中文字幕_国产天天骚_黄色大全免费观看_av免费人人干_无码一区自拍偷拍第二页_天堂va蜜桃_成人午夜黄色 | 欧美人与动牲交免费观看_丝袜美女被遭强高潮网站_色欲天天天综合网_亚洲福利_久久三级影院_国产乱子伦在线观看免费_国产精品成人一区二区_久久久日韩精品一区二区 | 绯色av_精品免费成人_亚洲欧美日韩精品成人_外国av在线_麻豆av免费网站_各种高潮videos抽搐合集免费_成人免费看片视频_欧美性生交大片免费看A片免费 | 国产在线观看黄色_久久99精品久久久久久久久久_成a人v在线观看视频_AV无码专区亚洲AVL在线观看_激情视频中文字幕_狠狠丁香_肉嘟嘟WWW视频在线观看高清_亚洲综合色久 | 人人干人人添_国产欧美日韩一区2区_在线视频观看一区二区_97超超碰_av在线影院国产_精品国产人免费观看成人片_成人黄色片免费_91麻豆精品91久久久久同性 | 国产又色又爽又黄的视频在线观看_成全免费高清观看在线电视_97国产一区_久久久免费_亚州综合一区_偷拍自拍视频在线_亚洲高清免费观看在线视频_无码无套少妇毛多69xxx | 欧美日韩综合在线_日日婷婷夜日日天干A片_东京一本一道一二三区_亚洲欧美在线播放_国产在线高清视频无码_亚洲午夜无码毛片av久久久久久_亚洲福利av_杨幂ai换脸视频 | 久久99国产亚洲高清观看首页_av最新在线观看_www蜜桃视频_78影视传媒有限公司_婷婷久久丁香_精品国产AⅤ一区二区三区V免费_性色88av老女人视频_久久艹99 | av不卡免费观看_99久久免费看精品国产一区非洲_久久精品激情_老人内射视频代码免费视频_色视频在线免费_国产成人精_亚洲久久成人_欧美一区免费在线观看 | 亚欧美无遮挡HD高清在线视频_日本一区二区免费在线播放_大肉大捧一进一出好爽视色大师_亚洲天堂福利视频_欧美成一区_国产CHINESEHDXXXX美女_97视频一二区_亚洲精品中字 | 欧美午夜寂寞影院_91精品欧美一区综合在线观看_中文字幕乱码亚洲无线码按摩_免费看片免费播放国产_精品视频二区_韩日a级片_日本XXXX色视频在线观看免费,_亚洲成av人影片在线观看 | 欧洲熟妇大荫蒂高潮a片视频_人人射人人爱_涩涩小视频_欧美日韩一区二区精品_嫩草院一区二区乱码蜜臀_cba视频_粉嫩AV一区二区夜夜嗨_日韩精品一区二区免费 | MM131午夜福利在线观看_亚洲美国产亚洲AV_国产一区二区三区18_亚洲亚洲人成综合丝袜图片_亚洲欧洲精品一区二区三区_国产网站视频_青青草视频在线免费观看_欧美FREESEX潮喷 | 艳Z门照片无码AV_窝窝午夜精品一区二区_国产二区在线观看视频_97se亚洲综合在线_亚洲成av人无码不卡影片_国产午夜免费高清久久影院_在线播放免费av_亚洲精品中国国产嫩草影院美女 | 最新国产一区_精品91久久久久_国模吧久久_色婷婷在线精品国自产拍_日韩在线高清_一级黄色片aaa_日本理论中文字幕_亚洲无码一区二区三区 | 热99欧美_久久久精品国产sm调教网站_成人亚洲在线观看_国产一区二区中文字幕免费看_最近中文字幕免费MV在线视频_japanese在线看_色视频www在线播放国产人成_97青娱乐 | 7777日本精品一区二区三区_在线精品国产欧美_人妻无码αv中文字幕久久_精品999www_午夜精品区_视频免费一区_蜜桃成人免费视频在线播放_黑人巨大两根一起挤进交换 | avav国产_高清dvd碟片生活片_日韩性公交车上xxhd_青天衙门高清第一部免费观看_人妻引诱中文字幕_国产91av视频在线_在线免费黄色片_jizz欧美性3 | 久久久亚洲男人的天堂一区二区三区_一区二区三区欧洲_99久久久国产_中文字幕乱人伦视频在线_玩偶姐姐在线观看免费_婷婷一级片_欧美a级情欲片_欧美高潮在线 | 在线播放成人_亚洲国产一区二区三区亚瑟_欧美日产国产新一区_欧美亚洲婷婷_久一精品视频_亚洲成a∧人片在线播放无码_亚洲∧V久久久无码精品_黄色录像一级片子 | 欧产日产国产精品98_在线精品观看国产_av大片网址_亚洲激情一级片_福利视频区_99久久久无码国产精品9_久草婷婷_偷拍自拍第二页 | 亚洲乱码中文字幕综合区_亚洲国产另类久久久精品网站_久久久国产精华液999999_深夜视频国产_亚洲精品毛片av_九九在线免费视频_狠狠干综合网_久草免费看 | 久久国内_亚洲免费人成视频观看_免费一区区三区四区_国产日本在线_精品国产一区二区三区2021_国产一级特黄毛片在线毛片_亚洲国产精品成人av_波多野结衣系列18部无码观看a | 精品亚洲一区二区_欧美一区=区_久久久乱码精品亚洲日韩mv_老司机久久一区二区三区_亚洲黑人在线观看_天天插狠狠干_国产a级大片_亚洲日韩中文第一精品 | 女人一级一片30分_亚洲综合图_永久免费不卡的AV网站_女人下边被添全过程A片_无码中文精品专区一区二区_日本大胆欧美_aaa大片在线观看_999一区二区三区 | 免费看v片_亚洲女同一区二区_91在线观看高清视频_在线成人免费_亚洲首页一区任你躁XXXXX_国产一起色一起爱_18禁美女黄网站色大片免费看_av不卡免费在线 | 日本一区精品视频_免费看片www8x5xcom_久久久亚洲精品石原莉奈_免费一级大片_亚洲永久精品在线_久久九九国产精品怡红院_青青青青草视频_久久精品A片777777 | 色欲AV无码一区二区三区_国产亚洲欧美一区二区三区四区_日本免费一区二区三区最新_日本一区二区三区在线不卡_天堂在线中文_四虎国产精品亚洲永久免费_国产a级久久久_成年美女黄网 | 国产对白女主播勾搭野战在线_69久久无码一区人妻A片_日本久久艹_国产胸大一区二区三区粉嫩思欲_国产高清久久久久久_成人免费网站_超碰在线免费播放_日韩免费视频在线观看 | 色网免费观看_成人无毒网_91亚洲国产成人久久精品麻豆_粉嫩metart女人下部_性爱免费视频_东京热人妻中文无码AV_午夜DJ国产精华日本无码_国语一区 | xxx麻豆_亚洲AV无码AV有码AV_国产女做a爱免费视频_va久久久久精码专区_国产精品一区二区三区久久久久_亚洲av永久精品无码_中文字幕AV无码免费一区_久久久精品福利视频 | 色婷婷五月综合亚洲影院_免费在线观看亚洲视频_欧美一级日韩一级无毒不卡_国产精品高潮在线_国产一区久久_狠狠操一区二区三区_亚洲国产精品无码久久久久久曰_美女黄色网址 | 人人干人人爱_亚洲ⅴ欧洲第一的日产AV_极品少妇啪啪高清免费_一及黄色片_91视频免费在观看_亚洲欧美日韩自偷自拍_91在线网站_人人爽人人爽人人爽人人片av |