<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          1.2.2 接收
          接收使用中斷方式,從接收到的字節(jié)數(shù)據(jù)并不直接處理,而是先存入一個(gè)環(huán)形緩沖,環(huán)形緩沖示意圖如圖4所示。從頭偏移處寫入,從尾偏移處讀出,每寫入或讀出一字節(jié)頭或尾都將模遞增,且頭偏移處為空,尾偏移處為滿。

          本文引用地址:http://www.ex-cimer.com/article/148750.htm

          f.JPG


          只要串口接收到數(shù)據(jù),就將其從頭偏移處寫入串口的環(huán)形緩沖。如果緩沖滿了,則用新數(shù)據(jù)覆蓋未處理的舊數(shù)據(jù)。
          在將一個(gè)字節(jié)數(shù)據(jù)寫入緩沖的同時(shí),判斷其是否等于幀結(jié)束定界符EFD,如果等于,則表示緩沖中可能存在一個(gè)完整的幀(只是可能,并不能完全確定,因?yàn)橐粋€(gè)普通的字節(jié)數(shù)據(jù)完全有可能正好等于EFD),此時(shí)便可從環(huán)形緩沖中按幀格式解析數(shù)據(jù)。若解析到完整的幀,則做相應(yīng)的處理:首先,根據(jù)幀中FCS字段做差錯(cuò)校驗(yàn),如果校驗(yàn)正確,則從串口回送一個(gè)同序號(hào)的確認(rèn)幀;然后從幀中取出凈荷數(shù)據(jù)從Socket發(fā)送。
          從緩沖中解析數(shù)據(jù)的過(guò)程簡(jiǎn)述如下:從環(huán)形緩沖的尾偏移處開(kāi)始讀字節(jié)數(shù)據(jù),查驗(yàn)是否等于幀開(kāi)始定界符SFD,若不等于則丟棄并繼續(xù)讀下一字節(jié),若等于則向后偏移讀取長(zhǎng)度域LEN,根據(jù)長(zhǎng)度值,便能確定幀結(jié)束定界符EFD的位置。查驗(yàn)此位置的字節(jié)數(shù)據(jù),若不等于EFD,則認(rèn)為之前等于SFD的字節(jié)只是個(gè)普通數(shù)據(jù),并不是幀開(kāi)始定界符,將其丟棄并繼續(xù)讀取查驗(yàn)下一字節(jié);若等于EFD,則認(rèn)為SFD到FFD之間為一個(gè)完整的幀。
          1.3 Socket數(shù)據(jù)傳送
          Socket數(shù)據(jù)傳送的幀格式如下:

          g.JPG


          相比串口幀格式,少了Seq.、Type和FCS字段。這三個(gè)字段在串口數(shù)據(jù)傳送中是用來(lái)保證性的,而使用TCP Socket,下層的TCP協(xié)議會(huì)保證通信的性,應(yīng)用層只需要保證數(shù)據(jù)的完整性,所以不需要這些字段。其他字段相同,意義也分別相同。
          1 3.1 Socket發(fā)送
          Socket接收過(guò)程同串口接收類似,接收的數(shù)據(jù)并不直接處理,而是先存入環(huán)形緩沖。然后,按Socket幀格式,解析環(huán)形緩沖中的數(shù)據(jù)。解析到的數(shù)據(jù)幀插入串口發(fā)送隊(duì)列,從串口轉(zhuǎn)發(fā)。
          1.3.2 Socket接收
          Socket發(fā)送相比串口發(fā)送操作更簡(jiǎn)單,因?yàn)橄聦拥腡CP協(xié)議會(huì)保證通信的性,所以不需要再另外實(shí)現(xiàn)確認(rèn)、重發(fā)等機(jī)制,發(fā)送隊(duì)列中只需要一個(gè)待發(fā)送隊(duì)列即可,不需要待確認(rèn)隊(duì)列。而且在具體實(shí)現(xiàn)中,并沒(méi)有真的構(gòu)造一個(gè)Socket發(fā)送隊(duì)列,而是利用了操作系統(tǒng)提供的線程間通信機(jī)制中的郵箱通信方式,需要從Socket發(fā)送數(shù)據(jù)時(shí),只需將數(shù)據(jù)的首地址以郵件的方式發(fā)送到Socket發(fā)送線程指定的郵箱中。

          2 實(shí)現(xiàn)
          2.1 軟硬件平臺(tái)
          軟硬件平臺(tái)包括操作系統(tǒng)RT-Thread和ARM9開(kāi)發(fā)板Mini2440。

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




          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();