今天,來分享下TCP-UART透傳示例,源碼開放,可根據實際需求靈活應用。
一、TCP協議概述
TCP(Transmission Control Protocol,傳輸控制協議)——是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它主要用于在不可靠的網絡環境中提供穩定的數據傳輸服務,確保數據能夠按照順序、無錯誤地到達接收端。
TCP通過三次握手建立連接,使用滑動窗口進行流量控制,以及通過校驗和確認應答、超時重傳等機制來保證數據的可靠性。它是互聯網協議套件(TCP/IP協議族)的核心組成部分,廣泛應用于各種網絡應用中。
▼ TCP工作原理 ▼
連接建立:
TCP協議使用三次握手協議來建立連接。
客戶端發送一個SYN(同步序列編號)報文給服務端,并攜帶一個隨機生成的初始序列號。
服務端收到SYN報文后,發送一個SYN+ACK(同步序列編號 + 確認應答)報文給客戶端,表示確認收到了客戶端的SYN報文,并攜帶自己的初始序列號。
客戶端收到服務端的SYN+ACK 報文后,發送一個ACK(確認應答)報文給服務端,表示確認收到了服務端的SYN+ACK報文。至此,TCP連接建立完成。
數據傳輸:
在連接建立后,雙方就可以開始傳輸數據了。TCP協議會將應用層發送的數據分割成適當長度的報文段(通常受該計算機連接的網絡的數據鏈路層的最大傳輸單元MTU的限制),并為每個報文段分配一個序號。
接收端在收到報文段后,會按照序號進行排序,并發送確認應答(ACK)給發送端。如果發送端在合理的往返時延(RTT)內未收到確認應答,則會重傳對應的報文段。
連接釋放:
TCP協議使用四次揮手協議來終止連接。
客戶端發送一個FIN(結束)報文給服務端,表示自己想要關閉連接。
服務端收到FIN報文后,發送一個ACK報文給客戶端,表示確認收到了客戶端的FIN報文。此時,客戶端到服務端的連接關閉,但服務端到客戶端的連接仍然打開。
服務端在發送完所有剩余數據后,也發送一個FIN報文給客戶端,表示自己也想要關閉連接。
客戶端收到服務端的FIN報文后,發送一個ACK報文給服務端,表示確認收到了服務端的FIN報文。至此,TCP連接完全關閉。
二、TCP-UART透傳示例
本小節教你使用LuatOS腳本語言,讓Air201模組連接上一個TCP服務器,并且實現模組和服務器之間數據的雙向傳輸。

軟硬件相關準備工作及最新示例源碼下載詳見:
https://docs.openluat.com/air201/luatos/app/socket/tcp/
2.1 本教程實現的功能定義:
通過網頁端啟動一個TCP服務器;
Air201模組插卡開機后,連接上TCP服務器;
Air201模組向TCP服務器發送:TCP CONNECT,服務器可以收到數據并且在網頁端顯示;
TCP服務器網頁端向Air201模組發送:data from TCP server,Air201模組可以收到數據并且通過串口輸出顯示。
2.2 核心腳本代碼詳解
2.2.1 串口初始化
本文示例:串口使用MAIN_UART(uart1)。

2.2.2 數據接收回調:搭建響應橋梁
這里使用uart.rx接口,和以zbuff的方式存儲從uart1外部串口收到的數據--收取數據會觸發回調。
注意:這里的"receive"是固定值不要修改。

2.2.3 TCP網絡配置:鋪就數據通道

2.2.4 TCP至串口透傳:數據無縫流轉

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

2.3 完整代碼及運行結果
2.3.1 完整代碼





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

今天的內容就分享到這里了~
審核編輯 黃宇
-
數據
+關注
關注
8文章
7335瀏覽量
94755 -
TCP
+關注
關注
8文章
1424瀏覽量
83501 -
透傳
+關注
關注
0文章
12瀏覽量
7065
發布評論請先 登錄
LORA無線數傳終端:雙向高增益透傳,5KM無線傳輸
芯嶺技術XL433-01P雙向透傳模組產品特點
藍牙透傳模組XL2411的產品特點和應用場景
XL2477 WiFi 透傳模組,讓產品快速、低成本接入無線網絡
無線組網新突破!SG-Lora-TCP 模塊,7 公里 TCP 信號無線透傳更自由
芯嶺技術XL2411 藍牙透傳模組
【道生物聯TKB-623評估板試用】基于串口透傳的手寫數字識別
【道生物聯TKB-623評估板試用】GPS定位時鐘透傳
物聯網開發必備:四款低功耗藍牙透傳模塊參數全解析與應用實戰
XL2417D 無線透傳模組,開發門檻低,快速實現低功耗無線數據傳輸
低功耗藍牙透傳模塊在物聯網的應用
TCP-UART數據透傳技術,居然如此簡單!
評論