<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 設(shè)計(jì)封裝串口數(shù)據(jù)通信論文

    時(shí)間:2024-07-22 02:26:17 通信工程畢業(yè)論文 我要投稿
    • 相關(guān)推薦

    設(shè)計(jì)封裝串口數(shù)據(jù)通信論文

      1協(xié)議的設(shè)計(jì)

    設(shè)計(jì)封裝串口數(shù)據(jù)通信論文

      1.1數(shù)據(jù)報(bào)格式

      數(shù)據(jù)報(bào)分為報(bào)文頭部和數(shù)據(jù)部兩部分,其格式如圖2所示。報(bào)文頭部由6字節(jié)組成,第1、2字節(jié)AB表示報(bào)文長度,即報(bào)文頭部長度加上數(shù)據(jù)部長度;第3、4字節(jié)CD表示整個(gè)報(bào)文的校驗(yàn)和;第5、6字節(jié)XX表示應(yīng)答ACK;第7、8字節(jié)GH表示報(bào)文序號(hào)。數(shù)據(jù)報(bào)長度AB范圍為0~65535,所以一個(gè)報(bào)文最大為8KB。數(shù)據(jù)部長度等于報(bào)文長度(AB)減去報(bào)文頭長度(8B)。2.2數(shù)據(jù)處理與報(bào)文處理數(shù)據(jù)處理包括分割上層應(yīng)用提供的數(shù)據(jù),以及從報(bào)文還原拼接數(shù)據(jù);報(bào)文處理包括格式化報(bào)文以提供給串口發(fā)送以及從串口讀取報(bào)文、校驗(yàn)報(bào)文、提取數(shù)據(jù)。

      1.2.1數(shù)據(jù)分割

      協(xié)議從應(yīng)用程序接口獲取應(yīng)用程序提供的數(shù)據(jù)并以流式數(shù)據(jù)寫入發(fā)送方數(shù)據(jù)緩沖區(qū);然后以事先設(shè)定的數(shù)據(jù)分割長度取數(shù)據(jù),長度不足的部分則全部取出,取數(shù)據(jù)指針移動(dòng)相應(yīng)距離。

      1.2.2報(bào)文組裝

      報(bào)文的組裝過程如下:

     。1)計(jì)算取出數(shù)據(jù)的長度,填入報(bào)文第1、2字節(jié);

      (2)報(bào)文第3~6字節(jié)全部置0;

     。3)計(jì)算報(bào)文序號(hào)GH;

      (4)計(jì)算校驗(yàn)和,從第1字節(jié)開始,每兩個(gè)字節(jié)為一個(gè)單元進(jìn)行分割,末尾不足兩字節(jié)則在其后補(bǔ)0,再將這些單元進(jìn)行二進(jìn)制反碼求和,結(jié)果存在檢驗(yàn)和字段中第3、4字節(jié);

     。5)將取出的數(shù)據(jù)接在報(bào)文頭部后面,將整個(gè)報(bào)文寫入報(bào)文緩沖區(qū)。

      1.2.3報(bào)文拆分

      報(bào)文拆分的具體步驟如下:

     。1)從報(bào)文緩沖區(qū)按報(bào)文長度獲取報(bào)文數(shù)據(jù);

     。2)計(jì)算校驗(yàn)和,方法同報(bào)文組裝里的計(jì)算方法:如果校驗(yàn)和不為0xFFFF,則傳輸過程中發(fā)生差錯(cuò),丟棄此報(bào)文;如果校驗(yàn)和為0xFFFF,取出報(bào)文長度及報(bào)文序號(hào),計(jì)算數(shù)據(jù)部長度,取出數(shù)據(jù)。

      1.2.4數(shù)據(jù)拼接

      將從報(bào)文取出的數(shù)據(jù)填入接收方數(shù)據(jù)緩沖區(qū),寫數(shù)據(jù)指針移動(dòng)相應(yīng)距離;接收完最后一個(gè)數(shù)據(jù)后,協(xié)議將數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)提供給上層應(yīng)用程序,寫數(shù)據(jù)指針恢復(fù)初始值。

      1.3數(shù)據(jù)報(bào)傳輸過程

      數(shù)據(jù)報(bào)傳輸情況分為考慮定時(shí)器超時(shí)和不考慮定時(shí)器超時(shí)兩種,定時(shí)器超時(shí)處理應(yīng)屬于中斷調(diào)用。

      1.3.1傳輸過程數(shù)據(jù)報(bào)傳輸過程如下:

     。1)在進(jìn)行數(shù)據(jù)報(bào)傳輸前,發(fā)送方將數(shù)據(jù)分割并裝進(jìn)報(bào)文,ACK置為0x0000,計(jì)算報(bào)文序號(hào),再將報(bào)文送入報(bào)文緩沖區(qū)。

     。2)開始發(fā)送時(shí),串口按已經(jīng)設(shè)定的工作方式和波特率工作,從報(bào)文緩沖區(qū)獲取報(bào)文數(shù)據(jù)并發(fā)送。

     。3)發(fā)送方發(fā)送完畢一個(gè)數(shù)據(jù)報(bào)后,停止發(fā)送,啟動(dòng)定時(shí)器計(jì)時(shí),準(zhǔn)備接收響應(yīng)。

      (4)接收方串口接收數(shù)據(jù)并填入報(bào)文緩沖區(qū)。

     。5)接收方從報(bào)文緩沖區(qū)獲取報(bào)文數(shù)據(jù),進(jìn)行校驗(yàn):

     、偃艚邮辗叫r(yàn)結(jié)果為正確,則取出數(shù)據(jù);若接收的ACK=0x0011并且收到的序號(hào)等于前面一個(gè)報(bào)文的序號(hào),則將數(shù)據(jù)覆蓋到前一塊數(shù)據(jù),否則將數(shù)據(jù)填入數(shù)據(jù)緩沖區(qū);記錄報(bào)文序號(hào),發(fā)送數(shù)據(jù)部為空、ACK=0x1111的報(bào)文。

     、谌艚邮辗叫r(yàn)結(jié)果為錯(cuò)誤,則丟棄數(shù)據(jù)報(bào),發(fā)送數(shù)據(jù)部為空、ACK=0x1110的報(bào)文,通知發(fā)送方重發(fā)。

      (6)接收方每次處理完數(shù)據(jù)報(bào)均初始化并啟動(dòng)定時(shí)器計(jì)時(shí),剛收到數(shù)據(jù)報(bào)時(shí)關(guān)閉定時(shí)器。

      (7)發(fā)送方收到響應(yīng)報(bào)文,校驗(yàn)通過則關(guān)閉定時(shí)器,獲取ACK,若ACK=0x1111,則發(fā)送下一個(gè)數(shù)據(jù)報(bào);若ACK=0x1110,則重發(fā)當(dāng)前數(shù)據(jù)報(bào)(ACK置0x0011)。如果校驗(yàn)不通過就丟棄此數(shù)據(jù)報(bào),仍保持定時(shí)器計(jì)時(shí)。

     。8)雙方重復(fù)以上步驟直到最后一個(gè)報(bào)文發(fā)送完畢。

     。9)發(fā)送方發(fā)送最后一個(gè)報(bào)文完成后,發(fā)送數(shù)據(jù)部為空、ACK=0x0001的報(bào)文提示數(shù)據(jù)傳輸完畢,若此報(bào)文發(fā)送后收到重傳響應(yīng),則重發(fā)此數(shù)據(jù)報(bào)(ACK仍置0x0001)。

      1.3.2定時(shí)器超時(shí)處理

      若發(fā)送方定時(shí)器達(dá)到發(fā)送方超時(shí)等待時(shí)間仍未收到響應(yīng)報(bào)文,則重傳當(dāng)前數(shù)據(jù)報(bào)(ACK置0x0011),連續(xù)超時(shí)三次還沒收到應(yīng)答則停止發(fā)送數(shù)據(jù)報(bào),清空?qǐng)?bào)文緩沖區(qū)和數(shù)據(jù)緩沖區(qū),并向應(yīng)用程序返回通信失敗。若接收方定時(shí)器達(dá)到接收方超時(shí)等待時(shí)間仍未收到報(bào)文,清空?qǐng)?bào)文緩沖區(qū)和數(shù)據(jù)緩沖區(qū),關(guān)閉定時(shí)器,并向上層應(yīng)用程序返回通信失敗。

      2結(jié)論

      本文所設(shè)計(jì)的協(xié)議封裝串口通信是為了更方便和安全地傳送數(shù)據(jù),從上文可以看到,在發(fā)送大數(shù)據(jù)報(bào)時(shí),串口的速度其實(shí)不高,而本協(xié)議若需控制在毫秒級(jí)的處理,所發(fā)數(shù)據(jù)不能超過1192B。報(bào)文長度字節(jié)AB范圍為0~65535,故每個(gè)報(bào)文大小為8B~8KB,數(shù)據(jù)部大小為0~8184B,所以數(shù)據(jù)分割范圍為0~8184B。故本協(xié)議更適用于小數(shù)據(jù)量傳送,比如在信號(hào)采集后的數(shù)據(jù)傳送等,傳輸一個(gè)雙精度浮點(diǎn)數(shù)需要14ms左右。

    【設(shè)計(jì)封裝串口數(shù)據(jù)通信論文】相關(guān)文章:

    微電子封裝業(yè)和微電子封裝設(shè)備論文09-06

    射頻和微波微電子封裝論文08-01

    數(shù)據(jù)通信及應(yīng)用前景論文09-02

    用FPGA實(shí)現(xiàn)異步串口與同步串口的轉(zhuǎn)換08-27

    USB數(shù)據(jù)通信系統(tǒng)探析論文09-08

    基于AMF的Android數(shù)據(jù)通信論文10-29

    數(shù)據(jù)通信的應(yīng)用前景研究論文10-09

    紅外無線數(shù)據(jù)通信探析論文10-01

    構(gòu)建鐵路數(shù)據(jù)通信論文05-14

    地鐵信號(hào)系統(tǒng)數(shù)據(jù)通信論文10-11

    主站蜘蛛池模板: 国产精品福利一区二区久久| 国产精品无码一区二区三级 | 午夜精品视频在线| 亚洲一区二区三区在线观看精品中文| 91po国产在线精品免费观看| 久久精品国产亚洲AV电影| 久久国产精品国语对白| 久久91精品国产91久久麻豆| 亚洲国产一二三精品无码 | 8AV国产精品爽爽ⅴa在线观看| 麻豆精品视频在线观看| 国产激情精品一区二区三区| 国产精品无码一区二区三级 | 好吊妞视频精品| 国产精品jizz视频| 久久亚洲欧美国产精品| 亚洲一区无码精品色| 久久亚洲精品无码观看不卡| 99久久夜色精品国产网站| 久久精品视频网| 国内精品久久九九国产精品| 国产精品多人p群无码| 久久99国产精品尤物| 欧美精品国产一区二区| 久久发布国产伦子伦精品| 99久久精品免费看国产免费| 欧美精品v国产精品v日韩精品| 国产精品激情综合久久| 国产韩国精品一区二区三区久久| 亚洲国产精品无码专区在线观看| 久久精品国产一区二区| 精品国产污污免费网站入口在线 | 中文字幕精品无码一区二区 | 欧美一区二区精品| 国产精品久久久久影院嫩草| 国产精品无码久久综合| 国产麻豆精品久久一二三| 国内少妇偷人精品视频免费| 久久这里只有精品18| 国产午夜精品无码| 99国产精品永久免费视频 |