新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 通用可靠的串口/以太網(wǎng)網(wǎng)關(guān)設(shè)計

        通用可靠的串口/以太網(wǎng)網(wǎng)關(guān)設(shè)計

        作者: 時間:2012-07-18 來源:網(wǎng)絡(luò) 收藏

        1.2 數(shù)據(jù)傳送
        數(shù)據(jù)傳送的幀格式如下:

        本文引用地址:http://www.104case.com/article/148750.htm

        c.JPG


        其中各個字段的意義如下:
        ◆SFD:幀首定界符;
        ◆EFD:幀尾定界符,SFD和EFD為確定的特定值;
        ◆Seq:幀序號;
        ◆Type:幀類型,其值見表1;
        ◆LEN:Data字段的字節(jié)數(shù);
        ◆Data:實(shí)際要傳送的數(shù)據(jù);
        ◆FCS:幀校驗,是一個簡單校驗,為Seq.至Data字段中所有字節(jié)按位異或運(yùn)算的結(jié)果。

        d.JPG


        1.2.1 發(fā)送
        串口發(fā)送隊列示意圖如圖3所示。使用FIFO(先入先出)隊列緩沖發(fā)送幀,包括待發(fā)送隊列和待確認(rèn)隊列兩個隊列,每個隊列為一個雙向循環(huán)鏈表,節(jié)點(diǎn)從尾部插入,頭部讀出。

        e.JPG


        當(dāng)有數(shù)據(jù)需要從串口發(fā)送時,首先將要發(fā)送的數(shù)據(jù)按幀格式加上一些附加的字段組成一個完整的幀,然后插入待發(fā)送隊列尾。插入待發(fā)送隊列的幀并不一定會被立即發(fā)送,但只要待發(fā)送隊列中緩沖有需要發(fā)送的幀,串口就會從隊列頭逐個的讀取待發(fā)送幀以中斷的方式發(fā)送,直到待發(fā)送隊列為空。
        每一幀發(fā)送完畢后,如果是確認(rèn)幀,便會被立即從待發(fā)送隊列中刪除并釋放掉內(nèi)存,該幀的發(fā)送過程結(jié)束;如果是非確認(rèn)幀,即數(shù)據(jù)幀或命令幀,那么該幀不會被立即釋放,而是從待發(fā)送隊列刪除而插入待確認(rèn)隊列尾,等待串口另一端的設(shè)備發(fā)送對應(yīng)的確認(rèn)幀。
        若在超時時間內(nèi)收到對應(yīng)的確認(rèn)幀,則將該幀從待確認(rèn)隊列刪除釋放,該幀的發(fā)送過程結(jié)束;若等待超時,則將該幀從待確認(rèn)刪除并重新插入待發(fā)送隊列尾,以重發(fā)此幀。當(dāng)然有重發(fā)次數(shù)限制,若達(dá)到了最大重發(fā)次數(shù)仍然未收到對應(yīng)的確認(rèn)幀,則丟棄該幀,該幀的發(fā)送過程結(jié)束。

        tcp/ip相關(guān)文章:tcp/ip是什么




        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 遂溪县| 皮山县| 张家川| 通城县| 政和县| 东莞市| 昂仁县| 金塔县| 临泽县| 民乐县| 察雅县| 资阳市| 东安县| 夏津县| 天长市| 车致| 施秉县| 崇信县| 年辖:市辖区| 南皮县| 伊吾县| 荆州市| 阜新市| 金阳县| 抚松县| 五指山市| 梅河口市| 油尖旺区| 海盐县| 县级市| 平凉市| 鄂伦春自治旗| 邹平县| 达孜县| 青铜峡市| 奎屯市| 伊宁市| 通海县| 辉县市| 彭泽县| 根河市|