<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

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

本文引用地址:http://dyxdggzs.com/article/148750.htm

f.JPG


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

g.JPG


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

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

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




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>