合宙LuatOS的個(gè)人空間 http://selenalain.com/space-uid-176273.html [收藏] [復制] [RSS]

博客

源碼開(kāi)放!TCP-UART數據透傳如此簡(jiǎn)單

已有 92 次閱讀2025-2-19 11:36 |個(gè)人分類(lèi):4G模組| 物聯(lián)網(wǎng), 單片機, 4G模塊, 通訊模組, 嵌入式硬件

今天,來(lái)分享下TCP-UART透傳示例,源碼開(kāi)放,可根據實(shí)際需求靈活應用。
 


一、TCP協(xié)議概述

TCP(Transmission Control Protocol,傳輸控制協(xié)議)——是一種面向連接的、可靠的、基于字節流的傳輸層通信協(xié)議。它主要用于在不可靠的網(wǎng)絡(luò )環(huán)境中提供穩定的數據傳輸服務(wù),確保數據能夠按照順序、無(wú)錯誤地到達接收端。

TCP通過(guò)三次握手建立連接,使用滑動(dòng)窗口進(jìn)行流量控制,以及通過(guò)校驗和確認應答、超時(shí)重傳等機制來(lái)保證數據的可靠性。它是互聯(lián)網(wǎng)協(xié)議套件(TCP/IP協(xié)議族)的核心組成部分,廣泛應用于各種網(wǎng)絡(luò )應用中。


▼ TCP工作原理 ▼


連接建立:

TCP協(xié)議使用三次握手協(xié)議來(lái)建立連接。

客戶(hù)端發(fā)送一個(gè)SYN(同步序列編號)報文給服務(wù)端,并攜帶一個(gè)隨機生成的初始序列號。

服務(wù)端收到SYN報文后,發(fā)送一個(gè)SYN+ACK(同步序列編號 + 確認應答)報文給客戶(hù)端,表示確認收到了客戶(hù)端的SYN報文,并攜帶自己的初始序列號。

客戶(hù)端收到服務(wù)端的SYN+ACK 報文后,發(fā)送一個(gè)ACK(確認應答)報文給服務(wù)端,表示確認收到了服務(wù)端的SYN+ACK報文。至此,TCP連接建立完成。

數據傳輸:

在連接建立后,雙方就可以開(kāi)始傳輸數據了。TCP協(xié)議會(huì )將應用層發(fā)送的數據分割成適當長(cháng)度的報文段(通常受該計算機連接的網(wǎng)絡(luò )的數據鏈路層的最大傳輸單元MTU的限制),并為每個(gè)報文段分配一個(gè)序號。

接收端在收到報文段后,會(huì )按照序號進(jìn)行排序,并發(fā)送確認應答(ACK)給發(fā)送端。如果發(fā)送端在合理的往返時(shí)延(RTT)內未收到確認應答,則會(huì )重傳對應的報文段。

連接釋放:

TCP協(xié)議使用四次揮手協(xié)議來(lái)終止連接。

客戶(hù)端發(fā)送一個(gè)FIN(結束)報文給服務(wù)端,表示自己想要關(guān)閉連接。

服務(wù)端收到FIN報文后,發(fā)送一個(gè)ACK報文給客戶(hù)端,表示確認收到了客戶(hù)端的FIN報文。此時(shí),客戶(hù)端到服務(wù)端的連接關(guān)閉,但服務(wù)端到客戶(hù)端的連接仍然打開(kāi)。

服務(wù)端在發(fā)送完所有剩余數據后,也發(fā)送一個(gè)FIN報文給客戶(hù)端,表示自己也想要關(guān)閉連接。

客戶(hù)端收到服務(wù)端的FIN報文后,發(fā)送一個(gè)ACK報文給服務(wù)端,表示確認收到了服務(wù)端的FIN報文。至此,TCP連接完全關(guān)閉。
 


二、TCP-UART透傳示例


本小節教你使用LuatOS腳本語(yǔ)言,讓Air201模組連接上一個(gè)TCP服務(wù)器,并且實(shí)現模組和服務(wù)器之間數據的雙向傳輸。

wKgZPGdyW6uAdHISAAJCjv0QY_g668.png

軟硬件相關(guān)準備工作及最新示例源碼下載詳見(jiàn):

https://docs.openluat.com/air201/luatos/app/socket/tcp/


2.1 本教程實(shí)現的功能定義:

通過(guò)網(wǎng)頁(yè)端啟動(dòng)一個(gè)TCP服務(wù)器;

Air201模組插卡開(kāi)機后,連接上TCP服務(wù)器;

Air201模組向TCP服務(wù)器發(fā)送:TCP CONNECT,服務(wù)器可以收到數據并且在網(wǎng)頁(yè)端顯示;

TCP服務(wù)器網(wǎng)頁(yè)端向Air201模組發(fā)送:data from TCP server,Air201模組可以收到數據并且通過(guò)串口輸出顯示。


2.2 核心腳本代碼詳解


2.2.1 串口初始化

本文示例:串口使用MAIN_UART(uart1)。

wKgZO2dyW8eAQtSCAADP3s-j55Q413.png


2.2.2 數據接收回調:搭建響應橋梁

這里使用uart.rx接口,和以zbuff的方式存儲從uart1外部串口收到的數據--收取數據會(huì )觸發(fā)回調。

注意:這里的"receive"是固定值不要修改。

wKgZPGdyW9WAcuEmAAIXQ-U3V3k756.png


2.2.3 TCP網(wǎng)絡(luò )配置:鋪就數據通道

wKgZO2dyW-KAMu6CAAPxcQda8eQ995.png


2.2.4 TCP至串口透傳:數據無(wú)縫流轉

wKgZPGdyW--AULbRAAGeMxxQTz8320.png


2.2.5 串口至TCP反透傳:信息雙向傳遞

wKgZO2dyW_uANRgfAAIUn5l7Fxg252.png


2.3 完整代碼及運行結果


2.3.1 完整代碼

wKgZO2dyXBeAOmRPAAZ_U-ep_Tw834.pngwKgZPGdyXCuAOweDAAWPXu5-8PI053.pngwKgZO2dyXEGAOp8yAASNR5CjG8c814.pngwKgZO2dyXFaAJYmtAATBtbUEWi8972.pngwKgZPGdyXGeAcOHSAAIbvNlkmH0956.png


2.3.2 運行結果

使用TCP/UDP web測試工具及SSCOM串口工具,運行結果如下圖所示:

wKgZO2dyXIGAAaa2AAPVpVn8iQ4970.png



今天的內容就分享到這里了~

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
返回頂部
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页