STM32第十九天 ESP8266-01S和電腦實現串口通信(2)

1:UDP 傳輸
UDP 傳輸不不區分 server 或者 client ,由指令 AT+CIPSTART 建?立傳輸。
1. 配置 WiFi 模式
AT+CWMODE=3 // softAP+station mode
響應 :
OK
2. 連接路路由器?
AT+CWJAP="SSID","password" // SSID and password of router
響應 :
OK
3. 查詢 ESP8266 設備的 IP 地址
AT+CIFSR
響應 :
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"1a:fe:34:a5:8d:c6"
+CIFSR:STAIP,"192.168.101.133"
+CIFSR:STAMAC,"18:fe:34:a5:8d:c6"
OK
4. PC ESP8266 設備連接同?一路路由器?,在 PC 端使?用?網絡調試?工具,建?立?一個 UDP
輸。
- 假設,PC 創建的 UDP ?自身 IP 地址為 192.168.101.116,端?口為 8080
5. 后?文將基于前述步驟,介紹兩種 UDP 通信的示例例。

?

?

3.1. 固定遠端的 UDP 通信
UDP 通信的遠端固定,由 AT+CIPSTART 指令的最后?一個參數設置為 0 決定。系統將分配
?一個連接號給這個固定連接,UDP 通信雙?方不不會被其他設備替代。
1. 使能多連接
AT+CIPMUX=1
響應 :

?OK

2. 創建 UDP 傳輸。例例如,分配連接號為 4,指令如下:

AT+CIPSTART=4,"UDP","192.168.101.110",8080,1112,0
響應 :
4,CONNNECT
OK
📖 說明:
示例例指令中的參數說明如下:
? "192.168.101.110", 8080 UDP 傳輸的遠端 IP 和端?口,即前?文步驟 4 PC 建?立的 UDP 端?口;
? 1112 ESP8266 本地的 UDP 端?口,?用戶可?自?行行設置,如不不設置則為隨機值;
? 0 表示當前 UDP 傳輸建?立后,UDP 遠端不不會被其他設備更更改;即使有其他設備通過 UDP 協議發數據到
ESP8266 UDP 端?口 1112ESP8266 的第 4 UDP 傳輸的遠端也不不會被替換,使?用指令
“AT+CIPSEND=4, X” 發送數據,仍然是當前固定的 PC 端收到。
3. 發送數據
AT+CIPSEND=4,7 // Send 7 bytes to transmission NO.4
>UDPtest
// enter the data, no CR
? <link ID>:?網絡連接 ID 號 (0 ~ 4),?用于多
連接的情況
? <length>:數字參數,表明發送數據的?長
度,最?大?長度為 2048
響應 :
Recv 7 bytes
SEND OK
? 注意:
? 發送數據時,如果輸?入的字節數超過了了設置?長度(n):
- 系統將提示 busy,并發送數據的前 n 個字節,發送完成后響應 SEND OK
- 超出?長度的部分數據被認為是?無效數據,不不被接受。
4. 接收數據。 當 ESP8266 設備接收到服務器?發來的數據,將提示如下信息:
+IPD,4,n:xxxxxxxxxx // received n bytes, data=xxxxxxxxxxx
5. 斷開 UDP 傳輸
AT+CIPCLOSE=4
響應 :
4,CLOSED
OK

二:遠端可變的 UDP 通信?

當使?用 AT+CIPSTART 指令創建 UDP 通信,將最后?一個參數設置為 2 時,UDP 通信的遠
端可改變。
1. 創建 UDP 傳輸。
AT+CIPSTART="UDP","192.168.101.110",8080,1112,2
響應 :
CONNNECT
OK
(AT+CIPMUX—設置多連接)
📖 說明:
示例例指令中的參數說明如下:
? "192.168.101.110", 8080 UDP 傳輸的遠端 IP 和端?口,即前?文 PC 建?立的 UDP 端?口;
? 1112 ESP8266 本地的 UDP 端?口,?用戶可?自?行行設置,如不不設置則為隨機值;
? 2 表示當前 UDP 傳輸建?立后,UDP 傳輸遠端仍然會更更改;UDP 傳輸遠端會?自動更更改為最近?一個與
ESP8266 UDP 通信的遠端。
2. 發送數據
AT+CIPSEND=7 // Send 7 bytes
>UDPtest
// enter the data, no CR
響應 :
Recv 7 bytes
SEND OK
? 注意:
? 發送數據時,如果輸?入的字節數超過了了設置?長度(n):
- 系統將提示 busy,并發送數據的前 n 個字節,發送完成后響應 SEND OK
- 超出?長度的部分數據被認為是?無效數據,不不被接受。

?

3. 發送數據到其他指定遠端。例例如,發數據到 192.168.101.111, 端?口 1000
AT+CIPSEND=7,"192.168.101.111",1000 // Send 7 bytes
>UDPtest
// enter the data, no CR
響應 :
Recv 7 bytes
SEND OK
4. 接收數據。 當 ESP8266 設備接收到服務器?發來的數據,將提示如下信息:
+IPD,n:xxxxxxxxxx // received n bytes, data=xxxxxxxxxxx
5. 斷開 UDP 傳輸
AT+CIPCLOSE
響應 :
CLOSED
OK

今日心得:?

1:單連接 TCP Client和UDP 傳輸的區別

1. 連接性質
特性TCP ClientUDP 傳輸
連接類型面向連接(需三次握手)無連接
可靠性可靠傳輸(自動重傳、數據校驗)不可靠傳輸(可能丟包/亂序)
數據邊界字節流(無明確邊界)數據報文(保留邊界)
傳輸順序保證數據順序不保證順序
?AT指令實現差異(以ESP8266為例)

TCP Client 示例

AT+CIPSTART="TCP","192.168.1.100",80  # 連接固定服務器
AT+CIPSEND=10                         # 發送10字節數據
> HelloWorld                          # 輸入數據
  • 特點:始終發往同一目標,斷開需顯式AT+CIPCLOSE

UDP 傳輸示例

AT+CIPSTART="UDP","192.168.1.101",9000,0,2  # 可變遠端模式
AT+CIPSEND=5,"192.168.1.102",8000   # 臨時切換目標
> Hi123                              # 發送數據
  • 特點:無需斷開即可切換目標,支持廣播

?

何時選擇?

  • 選?TCP Client?當:

    • 需要可靠傳輸(如固件升級)

    • 與固定服務器通信(如MQTT服務器)

    • 傳輸大文件/重要數據

  • 選?UDP 傳輸?當:

    • 需要低延遲(如實時控制)

    • 需廣播或動態切換目標

    • 容忍少量丟包(如傳感器數據上報)

    • 資源受限環境(內存/CPU有限)

?

2:

詳細解釋:UDP通信中的遠端IP與近端IP

1. 遠端IP vs 近端IP
概念遠端IP近端IP
定義通信目標設備的IP地址(數據接收方)本地設備自身的IP地址(數據發送方)
作用指定數據要發送到哪個設備指定從哪個設備端口發出數據
AT指令示例AT+CIPSTART="UDP","192.168.101.110",8080本地端口在指令中作為第4個參數(如1112
何時使用當需要發送數據到特定設備時當需要綁定本地固定端口接收數據時

關鍵區別

  • 遠端IP是目標:你發給誰(如服務器/另一設備)。

  • 近端IP是源:你是誰(本地設備身份),通常由路由器分配,無需手動設置。

2. 固定遠端 vs 可變遠端UDP通信
固定遠端(參數=0)
  • 特點
    一旦建立連接,所有數據只能發往初始設定的遠端IP

  • 指令示例
    AT+CIPSTART="UDP","192.168.101.110",8080,1112,0
    (末尾參數0表示固定遠端)

  • 適用場景
    與單一固定設備通信(如固定服務器)。

可變遠端(參數=2)
  • 特點

    • 可動態切換目標設備。

    • 自動更新機制:當其他設備向你的本地端口發送數據時,ESP8266會自動將該設備設為新遠端

    • 手動覆蓋:可通過指令臨時指定新目標。

  • 指令示例
    AT+CIPSTART="UDP","192.168.101.110",8080,1112,2
    (末尾參數2表示可變遠端)

  • 適用場景
    需與多個設備通信(如物聯網設備群)

?

3. 為什么后續發送又回到原遠端?

在可變遠端模式下,遠端切換是臨時的

  1. 首次發送到新目標

    bash

    AT+CIPSEND=7,"192.168.101.111",1000  # 臨時指定新目標
    > UDPtest
    • 此時數據發往?192.168.101.111:1000

    • 但ESP8266的“當前遠端”仍為初始值192.168.101.110:8080)。

  2. 后續發送時未指定目標

    bash

    AT+CIPSEND=7          # 未指定目標,使用"當前遠端"
    > NextData
    • 數據會自動發回初始遠端192.168.101.110:8080),因為未覆蓋目標。

?

3.遠端自動更新的條件
只有當其他設備主動發送數據到你的本地端口時,ESP8266才會更新"當前遠端"。
(例如:若192.168.101.111向你的端口1112發送數據,后續AT+CIPSEND=7會發往該設備)

?

核心總結

場景遠端選擇邏輯
固定遠端模式永遠發往初始設定的IP
可變遠端模式 + 指定目標臨時覆蓋目標(僅本次生效)
可變遠端模式 + 未指定目標發往"當前遠端"(初始值 或 最后一次主動與你通信的設備)
更新"當前遠端"的方法其他設備需主動發送數據到你的本地端口

操作建議
若需持續與某新設備通信,每次發送時顯式指定目標IP,或確保該設備先向你的端口發送數據以觸發自動更新。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/88295.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/88295.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/88295.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大健康IP如何用合規運營打破“信任危機”|創客匠人

一、行業亂象下的信任裂痕當前大健康領域私域直播亂象頻發&#xff0c;部分機構利用“假專家義診”“限量搶購”等話術&#xff0c;將低成本保健品高價賣給老人&#xff0c;甚至有技術公司提供“全鏈路坑老方案”&#xff0c;加劇行業信任危機。這種短視行為不僅損害消費者權益…

MySQL(122)如何解決慢查詢問題?

解決慢查詢問題通常涉及到多種技術和方法&#xff0c;以確保數據庫查詢的高效性和響應速度。以下是詳細步驟和示例代碼&#xff0c;闡述如何解決慢查詢問題。 一. 慢查詢的常見原因 缺少索引&#xff1a;查詢未使用索引或索引未優化。查詢不當&#xff1a;查詢語句本身書寫不合…

esp32在vscode中仿真調試

此方法可以用在具有usb serial jtag功能的esp32芯片用&#xff0c;支持型號&#xff1a; ESP32-C3 ESP32-S3 ESP32-C6 ESP32-H2 ESP32-C5 USB Serial JTAG功能介紹&#xff1a; 從硬件角度&#xff1a; 它是ESP32芯片內置的硬件功能 不是一個獨立的物理接口 是通過USB接口實…

藍橋云課 矩形切割-Java

目錄 題目鏈接 題目 解題思路 代碼 題目鏈接 競賽中心 - 藍橋云課 題目 解題思路 找最大的正方形就是大邊-n個小邊&#xff0c;直至相等或者小于1 代碼 import java.util.Scanner; // 1:無需package // 2: 類名必須Main, 不可修改public class Main {public static voi…

PostgreSQL 鎖等待監控,查找等待中的鎖

直接貼SQLWITH RECURSIVE l AS (SELECT pid, locktype, mode, granted, ROW(locktype,database,relation,page,tuple,virtualxid,transactionid,classid,objid,objsubid) objFROM pg_locks ), pairs AS (SELECT w.pid waiter, l.pid locker, l.obj, l.modeFROM l wJOIN l ON l.…

Elasticsearch 字符串包含子字符串:高級查詢技巧

作者&#xff1a;來自 Elastic Justin Castilla 想要獲得 Elastic 認證&#xff1f;看看下一次 Elasticsearch Engineer 培訓什么時候開始吧&#xff01; Elasticsearch 擁有大量新功能&#xff0c;可以幫助你為你的使用場景構建最佳的搜索解決方案。深入了解我們的示例 noteb…

Vue、Laravel 項目初始化命令對比 / curl 命令/ CORS 機制總結與案例

前言一個疑問衍生出另一個疑問再衍生出又一個疑問&#xff0c;于是有了這篇文章。一、Vue 項目初始化命令 基于 Vite 創建 Vue 項目 命令&#xff1a;npm create vitelatest my-project -- --template vue適用場景&#xff1a;需輕量級、高速開發環境關鍵點&#xff1a;使用 Vi…

Jenkins 流水線配置

Jenkinsfile dsl文件:pipeline {// 指定任務在哪個集群節點執行agent any// 聲明全局變量environment {keyvalueAPPLICATION_NAMEspringboot-demo // 項目名稱HOST_PORT7777 // 宿主機暴露服務端口CONTAINER_PORT8080 // 容器內部服務端口…

服務器重裝后如何“復活”舊硬盤上的 Anaconda 環境?—— 一次完整的排錯與恢復記錄

目錄 摘要 一、 背景&#xff1a;熟悉的陌生人 二、 問題浮現&#xff1a;一次次失敗的嘗試 問題一&#xff1a;source activate 失效&#xff0c;被寫死的舊路徑 問題二&#xff1a;官方安裝器修復失敗&#xff0c;神秘的“進程池損壞” 問題三&#xff1a;核心腳本也“背…

Redis的多并發實際業務場景下的使用分析:布隆過濾器

文章目錄前言什么是布隆過濾器項目中引入布隆過濾器與緩存結合的最佳實踐場景&#xff1a;高并發用戶訪問商品詳情頁&#xff08;防止緩存穿透&#xff09;總結&#xff1a;前言 okok 我們已經學完了 所有的redis中的常用的數據結構 下面就是進階 我會用一系列的例子 去講解 如…

【AI】人工智能領域關鍵術語全解析

一、前言 人工智能&#xff08;AI&#xff09;作為當今最熱門的技術領域之一&#xff0c;正在深刻改變著我們的生活和工作方式。然而&#xff0c;對于初學者或非技術背景的人士來說&#xff0c;理解AI領域的專業術語可能是一項挑戰。本文旨在全面解析人工智能領域的關鍵術語&a…

【Linux基礎知識系列】第四十三篇 - 基礎正則表達式與 grep/sed

在Linux系統中&#xff0c;正則表達式是一種強大的文本處理工具&#xff0c;廣泛用于文本搜索、替換和批量處理。通過掌握基礎正則表達式的語法&#xff0c;結合grep和sed命令&#xff0c;用戶可以高效地完成復雜的文本處理任務。無論是數據分析師、軟件開發者還是系統管理員&a…

SIMATIC S7-1200的以太網通信能力:協議與資源詳細解析

SIMATIC S7-1200的以太網通信能力&#xff1a;協議與資源解析 在工業自動化領域&#xff0c;PLC的通信能力往往直接影響著整個控制系統的靈活性與高效性。西門子SIMATIC S7-1200系列PLC作為一款廣泛應用的中小型控制器&#xff0c;其強大的以太網通信功能是其核心優勢之一。本文…

什么是高防 IP?從技術原理到實戰部署的深度解析

目錄 前言 一、高防 IP 的定義與核心價值 二、高防 IP 的技術原理與架構 2.1 流量牽引技術 2.2 流量清洗引擎 2.3 回源機制 三、高防 IP 的核心防護技術詳解 3.1 DDoS 攻擊防御技術 3.2 高防 IP 的彈性帶寬設計 四、實戰&#xff1a;基于 Linux 的高防 IP 環境配置 …

NW710NW713美光固態閃存NW719NW720

美光NW系列固態閃存深度解析&#xff1a;技術、性能與市場洞察一、技術架構與核心創新美光NW系列固態閃存&#xff08;包括NW710、NW713、NW719、NW720&#xff09;的技術根基源于其先進的G9 NAND架構。該架構通過5納米制程工藝和多層3D堆疊技術&#xff0c;在單位面積內實現了…

JVM匯總

1.什么是JVM&#xff1f;Java虛擬機&#xff0c;Java具有自動內存管理等一系列特性&#xff0c;為實現Java跨平臺&#xff0c;一次編譯處處執行。2.JVM結構圖3.類加載器-入口加載class文件&#xff0c;將類信息存放到運行時數據區的方法區內存空間中通過魔數和文件格式來判斷是…

2024.09.20 leetcode刷題記錄

# 前言 昨天發布了第一遍博客&#xff0c;感覺很好&#xff0c;趁著我現在還是很感興趣就多發幾遍&#xff0c;希望能堅持下去&#xff0c;在這里記錄下自己學習成長的經歷。 今天是周五&#xff0c;下周一就又要去實習啦&#xff0c;距離上一段實習剛結束一個月&#xff0c;之…

SQLite3 中列(變量)的特殊屬性

在 SQLite3 中&#xff0c;列的特殊屬性通常通過約束&#xff08;Constraints&#xff09;和數據類型修飾符來定義。這些屬性可以在創建表時指定&#xff0c;用于限制數據的完整性或定義特殊行為。以下是 SQLite3 支持的主要特殊屬性及其說明&#xff1a; 1. 主鍵約束&#xff…

Datawhale AI 夏令營:用戶洞察挑戰賽 Notebook(2)

針對文本聚類優化 優化TF-IDF特征工程# 調整ngram_range&#xff1a;設置為(1, 2)&#xff0c;捕捉單字和雙字詞&#xff08;如“不錯”“不滿意”&#xff09;。 # 限制特征數量&#xff1a;通過max_features5000保留高信息密度特征&#xff0c;降低維度。 # 過濾低頻/高頻詞&…

【博主親測可用】PS2025最新版:Adobe Photoshop 2025 v26.8.1 激活版(附安裝教程)

軟件簡介 Adobe Photoshop 2025是Adobe公司開發的一款圖像處理軟件。作為行業標準的數字圖像編輯工具&#xff0c;其核心定位是創意設計、后期攝影、3D建模和AI驅動創作&#xff0c;適用于專業設計師、攝影師、插畫家和多媒體創作者。界面設計簡單直觀&#xff0c;易于操作&…