当前位置: 首页 > backend >正文

SYM32第二十天 ESP8266-01S和电脑实现串口通信(3)

1:透传

透传(又称透明传输)是一种通信模式,其核心特点是:通信设备对传输的数据不做任何解析或处理,仅作为“管道”原封不动地转发数据,仿佛数据“透明”地穿过设备。

透传的本质
关键特征说明
无协议解析设备不识别数据内容(如HTTP/MQTT等协议),直接转发原始字节流
无数据修改不添加头部/尾部信息、不加密/解密、不压缩/解压
双向透明上行(设备→服务器)和下行(服务器→设备)均保持数据原样
硬件无关性数据来源/去向可以是串口、WiFi、4G等任意接口,设备只负责通路建立

 

二:

1. TCP Client 单连接透传
以下为 ESP8266 作为 station 实现 TCP client 单连接透传的举例例,ESP8266 作为 softAP
可同理理实现透传。
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.3.133"
+CIFSR:STAMAC,"18:fe:34:a5:8d:c6"
OK
4. PC ESP8266 设备连接同⼀一路路由器器,在 PC 端使⽤用⽹网络调试⼯工具,建⽴立⼀一个 TCP
务器器。
- 假设,PC 创建的服务器器 IP 地址为 192.168.3.116,端⼝口为 8080
5. ESP8266 设备作为 TCP client 连接到上述服务器器
AT+CIPSTART="TCP","192.168.3.116",8080 //protocol, server IP and port
响应 :
OK
6. 使能透传模式
AT+CIPMODE=1
响应 :
OK
7. ESP8266 设备向服务器器发送数据
AT+CIPSEND
> //From now on, data received from UART will be transmitted to server automatically.
<link ID>:⽹网络连接 ID (0 ~ 4),⽤用于多
连接的情况
<length>:数字参数,表明发送数据的⻓长
度,最⼤大⻓长度为 2048
[<remote IP>]UDP 传输可以设置对端 IP
[<remote port>]UDP 传输可以设置对端
端⼝
注意:
发送数据时,如果输⼊入的字节数超过了了设置⻓长度(n):
- 系统将提示 busy,并发送数据的前 n 个字节,发送完成后响应 SEND OK
- 超出⻓长度的部分数据被认为是⽆无效数据,不不被接受。
8. 退出发送数据:
在透传发送数据过程中,若识别到单独的⼀一包数据 “+++”,则退出透传发送。
- 如果使⽤用键盘打字输⼊入 “+++” ,可能耗时太⻓长,不不被认为是连续的三个 “+”,建议使
⽤用串串⼝口⼯工具⼀一次性发送 “+++”,并请注意不不要携带空格或换⾏行行符等不不可⻅见字符。
- 之后,请⾄至少间隔 1 秒,再发下⼀一条 AT 指令。
注意:
“+++“ 退出透传发送数据,回到正常 AT 指令模式。此时,TCP 连接仍然是保持的,可以再发 AT+CIPSEND
指令,重新开始透传。
9. 退出透传模式
AT+CIPMODE=0
响应 :
OK
10.断开 TCP 连接
AT+CIPCLOSE
响应 :
CLOSED
OK

 

 

2. UDP 透传
以下为 ESP8266 作为 softAP 实现 UDP 透传的举例例,ESP8266 作为 station 可同理理实现
透传。
1. 配置 WiFi 模式
AT+CWMODE=3 // softAP+station mode
响应 :
OK
2. PC 连⼊入 ESP8266 softAP
3. PC 端使⽤用⽹网络调试⼯工具,建⽴立⼀一个 UDP 传输。
- 假设,PC 创建的 UDP ⾃自身 IP 地址为 192.168.4.2,端⼝口为 1001
4. ESP8266 PC 对应端⼝口建⽴立固定对端的 UDP 传输
AT+CIPSTART="UDP","192.168.4.2",1001,2233,0
响应 :
OK
5. 使能透传模式
AT+CIPMODE=1
响应 :
OK
6. ESP8266 设备向服务器器发送数据
AT+CIPSEND
> //From now on, data received from UART will be transmitted to server automatically.
注意:
发送数据时,如果输⼊入的字节数超过了了设置⻓长度(n):
- 系统将提示 busy,并发送数据的前 n 个字节,发送完成后响应 SEND OK
- 超出⻓长度的部分数据被认为是⽆无效数据,不不被接受。
7. 退出发送数据:
在透传发送数据过程中,若识别到单独的⼀一包数据 “+++”,则退出透传发送。
- 如果使⽤用键盘打字输⼊入 “+++” ,可能耗时太⻓长,不不被认为是连续的三个 “+”,建议使
⽤用串串⼝口⼯工具⼀一次性发送 “+++”,并请注意不不要携带空格或换⾏行行符等不不可⻅见字符。
- 之后,请⾄至少间隔 1 秒,再发下⼀一条 AT 指令。
注意:
“+++“ 退出透传发送数据,回到正常 AT 指令模式。此时,TCP 连接仍然是保持的,可以再发 AT+CIPSEND
指令,重新开始透传。
8. 退出透传模式
AT+CIPMODE=0
响应 :
OK
9. 断开  连接
AT+CIPCLOSE
响应 :
CLOSED
OK

 

多连接 TCP Server 

ESP8266 AT 仅⽀支持建⽴立⼀一个 TCP 服务器器,且必须使能多连接,即允许连接多个 TCP
client
以下为 ESP8266 作为 softAP ,建⽴立 TCP 服务器器的举例例;如果是 ESP8266 作为 station
可在连接路路由后,同理理建⽴立服务器
1. 配置 WiFi 模式
AT+CWMODE=3 // softAP+station mode
响应 :
OK
2. 使能多连接
AT+CIPMUX=1
响应 :
OK
3. 建⽴立 TCP server
AT+CIPSERVER=1 // default port = 333
一定要写端口号
响应 :
OK
4. PC 连⼊入 ESP8266 softAP
5. PC 端使⽤用⽹网络调试⼯工具,建⽴立⼀一个 TCP client,连接 ESP8266 TCP server
注意:
ESP8266 作为 TCP server 有超时机制,如果连接建⽴立后,⼀一段时间内⽆无数据来往,ESP8266 TCP server
TCP client 踢掉。因此,请在 PC TCP client 连上 ESP8266 TCP server 后建⽴立⼀一个 2s 的循环数据发送,
⽤用于保持连接。
6. 发送数据
// ID number of connection is defaulted to be 0.
AT+CIPSEND=0, 4 // send 4 bytes to connection NO.0
>test // enter the data, no CR
响应 :
Recv 4 bytes
SEND OK
注意:
发送数据时,如果输⼊入的字节数超过了了设置⻓长度(n):
- 系统将提示 busy,并发送数据的前 n 个字节,发送完成后响应 SEND OK
- 超出⻓长度的部分数据被认为是⽆无效数据,不不被接受。
7. 接收数据。 当 ESP8266 设备接收到服务器器发来的数据,将提示如下信息:
+IPD,0,n:xxxxxxxxxx // received n bytes, data=xxxxxxxxxxx
8. 断开 UDP 传输
AT+CIPCLOSE=0
响应 :
0,CLOSED
OK

今日心得

透传模式 VS 非透传模式(以ESP8266为例)

对比项透传模式非透传模式(AT指令模式)
数据交互方式直接通过串口发送/接收原始数据需用AT指令封装数据(如AT+CIPSEND=5
模块角色纯“管道”协议解析者(需识别指令格式)
延迟极低(无指令解析开销)较高(需等待指令响应)
适用场景实时流媒体/高速数据传输调试/小数据量控制

 

透传的核心价值

  1. 简化开发

    • MCU无需处理网络协议栈,专注业务逻辑

    • 降低代码复杂度(例:传感器直接输出字符串"TEMP:25.6C"即可上传)

  2. 提升实时性

    • 省去AT指令交互时间(每条指令需50-200ms响应)

    • 适合高速数据采集(如工业振动传感器每秒千次采样)

  3. 协议灵活性

    • 可传输任意私有协议(设备与服务器约定格式即可)

    • 无惧协议升级(模块无需固件更新)

 

注意事项

  1. 数据边界问题

    • TCP透传是字节流,需自定义帧分隔符(如\r\n

    • UDP透传保留报文边界,但需处理丢包(例:传感器加时间戳)

  2. 退出冲突风险

    • 避免数据中含+++(可通过AT+UART_DEF修改退出序列)

  3. 流控必要性

    • 高速传输时启用硬件流控(RTS/CTS),防止串口缓冲区溢出

http://www.xdnf.cn/news/15098.html

相关文章:

  • 深入理解Java虚拟机:Java内存区域与内存溢出异常
  • RMSNorm/LayerNorm原理/图解及相关变体详解
  • 2025企业私有化知识库工具选型指南——标普智元深度解读
  • 谷粒商城高级篇
  • FPGA设计思想与验证方法系列学习笔记001
  • 数组的应用示例
  • 【前端】jQuery数组合并去重方法总结
  • [论文阅读]Text Compression for Efficient Language Generation
  • 无缝矩阵与普通矩阵的对比分析
  • 「按键精灵安卓/ios辅助工具」动态验证码该怎么得到完整的图片
  • 电脑被突然重启后,再每次打开excel文件,都会记录之前的位置窗口大小,第一次无法全屏显示。
  • Prompt提示词的主要类型和核心原则
  • QTextCodec的功能及其在Qt5及Qt6中的演变
  • OKHttp 核心知识点详解
  • [Xmos] Xmos架构
  • Docker-构建镜像并实现LNMP架构
  • 【运维实战】解决 K8s 节点无法拉取 pause:3.6 镜像导致 API Server 启动失败的问题
  • 在指定conda 环境里安装 jupyter 和 python kernel的方法
  • vscode和插件用法
  • 「莫尔物理新范式」普林斯顿马普所合作Nature论文:SnSe₂/ZrS₂扭曲双层实现M点能谷调控与拓扑新效应
  • 如何设计一个登录管理系统:单点登录系统架构设计
  • 寒武纪MLU370编程陷阱:float32精度丢失的硬件级解决方案——混合精度训练中的定点数补偿算法设计
  • 字节 Seed 团队联合清华大学智能产业研究院开源 MemAgent: 基于多轮对话强化学习记忆代理的长文本大语言模型重构
  • 微服务架构的演进:迈向云原生——Java技术栈的实践之路
  • 西电考研录取:哪些省份考研上岸西电更容易?
  • 浏览器 实时监听音量 实时语音识别 vue js
  • 人大金仓教程
  • 【基础架构】——软件系统复杂度的来源(低成本、安全、规模)
  • 【基于大模型 + FAISS 的本地知识库与智能 PPT 生成系统:从架构到实现】
  • chatgpt是怎么诞生的,详解GPT1到GPT4的演化之路及相关背景知识