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

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

2.2.2 數(shù)據(jù)接收回調(diào):搭建響應(yīng)橋梁
這里使用uart.rx接口,和以zbuff的方式存儲(chǔ)從uart1外部串口收到的數(shù)據(jù)--收取數(shù)據(jù)會(huì)觸發(fā)回調(diào)。
注意:這里的"receive"是固定值不要修改。

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

2.2.4 TCP至串口透?jìng)鳎簲?shù)據(jù)無縫流轉(zhuǎn)

2.2.5 串口至TCP反透?jìng)鳎盒畔㈦p向傳遞

2.3 完整代碼及運(yùn)行結(jié)果
2.3.1 完整代碼





2.3.2 運(yùn)行結(jié)果
使用TCP/UDP web測(cè)試工具及SSCOM串口工具,運(yùn)行結(jié)果如下圖所示:

今天的內(nèi)容就分享到這里了~
審核編輯 黃宇
-
TCP
+關(guān)注
關(guān)注
8文章
1424瀏覽量
83496 -
uart
+關(guān)注
關(guān)注
22文章
1314瀏覽量
106634 -
源碼開放
+關(guān)注
關(guān)注
0文章
2瀏覽量
5253
發(fā)布評(píng)論請(qǐng)先 登錄
如何快速上手BLE SoC CMT4531,開發(fā)高效的短距透傳方案?
藍(lán)牙透傳模組XL2411的產(chǎn)品特點(diǎn)和應(yīng)用場(chǎng)景
BLE-TPT藍(lán)牙串口透傳模塊有何應(yīng)用優(yōu)點(diǎn)
XL2477 WiFi 透傳模組,讓產(chǎn)品快速、低成本接入無線網(wǎng)絡(luò)
低功耗藍(lán)牙BLE透傳模塊應(yīng)用方案
無線組網(wǎng)新突破!SG-Lora-TCP 模塊,7 公里 TCP 信號(hào)無線透傳更自由
芯嶺技術(shù)XL2411 藍(lán)牙透傳模組
【干貨分享】基于道生物聯(lián)TKB-623評(píng)估板串口透傳的手寫數(shù)字識(shí)別
【道生物聯(lián)TKB-623評(píng)估板試用】基于串口透傳的手寫數(shù)字識(shí)別
【道生物聯(lián)TKB-623評(píng)估板試用】GPS定位時(shí)鐘透傳
物聯(lián)網(wǎng)開發(fā)必備:四款低功耗藍(lán)牙透傳模塊參數(shù)全解析與應(yīng)用實(shí)戰(zhàn)
【ESP8266】進(jìn)入透傳模式后,數(shù)據(jù)間隔怎么調(diào)整,
揭秘Air780EGH定位功能:源碼開放助力極速開發(fā) !
ESP32用作經(jīng)典藍(lán)牙串口透傳模塊與手機(jī)進(jìn)行串口通信
TCP-UART透?jìng)魇纠齸看完就會(huì)源碼開放!
評(píng)論