惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
美团技术团队
Recent Announcements
Recent Announcements
B
Blog
GbyAI
GbyAI
雷峰网
雷峰网
博客园_首页
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Tailwind CSS Blog
M
MIT News - Artificial intelligence
V
V2EX
人人都是产品经理
人人都是产品经理
爱范儿
爱范儿
L
LangChain Blog
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
A
About on SuperTechFans
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
U
Unit 42
Hugging Face - Blog
Hugging Face - Blog
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
Last Week in AI
Last Week in AI
aimingoo的专栏
aimingoo的专栏

博客园 - 81

海康摄像机叠加文字显示 sip视频通话 easyGBS 003忘记成本(2026年3月25日) PostgreSQL插件TimeScaleDB基本使用 mssql的列存储 duckdb数据库操作 Oracle数据高效插入 西门子S7 PLC对接【转】 006股息很重要(2026年1月12日) 005独立思考(2026年1月9日) 004人的一生只需富一次(2026年1月7日) 003盈亏同源(2026年1月6日) 002投资赚钱的方法很多,要找到适合自己的(2026年1月5日) 001买股票就是买企业(2026年1月3日) 。net8调用webservice函数 mysql嵌套查询如何利用索引? aot跨平台 C# 读写opc ua服务器,浏览所有节点,读写节点,读历史数据,调用方法,订阅,批量订阅操作 银河麒麟安装dotnet8 Picturebox控件中图片的旋转
串口通信中的流控,RtsEnable,DtrEnable ,Handshake 。如果...
81 · 2025-07-01 · via 博客园 - 81

串口通信的流控协议详解

流控(Flow Control)是串口通信中管理数据传输速率的关键机制,用于防止接收方缓冲区溢出导致数据丢失。以下是串口通信中主要流控协议的详细说明:

硬件流控(RTS/CTS)

硬件流控使用专用控制线路进行通信管理,是最可靠、最高效的流控方式:

信号线方向功能
RTS (Request To Send) DTE → DCE 发送方请求发送数据
CTS (Clear To Send) DTE ← DCE 接收方允许发送数据

工作原理:

  1. 发送方(DTE)准备发送数据时,将RTS置为有效状态

  2. 接收方(DCE)准备好接收时,将CTS置为有效状态

  3. 当接收方缓冲区接近满时,将CTS置为无效状态

  4. 发送方检测到CTS无效后暂停发送

  5. 接收方缓冲区有空闲后重新置CTS有效

C# 配置示例:

_serialPort = new SerialPort("COM3", 9600)
{
    Handshake = Handshake.RequestToSend, 

软件流控(XON/XOFF)

软件流控通过特殊字符控制数据流,无需额外硬件线路:

控制字符ASCII值功能
XON (Ctrl-Q) 0x11 允许继续传输
XOFF (Ctrl-S) 0x13 暂停传输

工作原理:

  1. 接收方缓冲区接近满时,发送XOFF字符

  2. 发送方收到XOFF后暂停发送

  3. 接收方缓冲区有空闲后,发送XON字符

  4. 发送方收到XON后恢复发送

C# 配置示例:

_serialPort = new SerialPort("COM4", 115200)
{
    Handshake = Handshake.XOnXOff 

DTR/DSR 流控

另一种硬件流控方式,使用较少:

信号线方向功能
DTR (Data Terminal Ready) DTE → DCE 终端设备就绪
DSR (Data Set Ready) DTE ← DCE 通信设备就绪

C# 配置:

_serialPort = new SerialPort("COM5", 19200)
{
    Handshake = Handshake.RequestToSend,
    DtrEnable = true 

流控协议比较

特性硬件流控(RTS/CTS)软件流控(XON/XOFF)DTR/DSR流控
速度 高速(>115200 bps) 中低速(<38400 bps) 中高速
延迟 极低(微秒级) 较高(字符传输时间)
可靠性 非常高 中等(受数据干扰)
硬件要求 需要额外信号线 仅需数据线 需要额外信号线
适用场景 二进制数据、高速传输 文本数据、低速传输 调制解调器连接

流控配置最佳实践

  1. 匹配设备设置:确保通信双方的流控设置一致

  2. 高速传输用硬件:波特率>115200时优先使用硬件流控

  3. 二进制数据避免XON/XOFF:防止控制字符出现在数据中

  4. 正确连接线缆:

  5. C# 流控检测代码:

常见问题解决

  1. 数据丢失问题:

    • 检查物理连接是否正确

    • 确认双方使用相同的流控协议

    • 增加接收缓冲区大小:_serialPort.ReadBufferSize = 4096;

  2. 通信卡顿问题:

    • 硬件流控:检查RTS/CTS线路是否正常工作

    • 软件流控:确保数据中不包含XON(0x11)/XOFF(0x13)字符

  3. 跨平台兼容性:

  4. 调试技巧:

流控协议的正确选择和配置对串口通信的可靠性至关重要。根据您的应用场景(数据量、速度、数据类型)选择合适的流控方式,并确保通信双方配置一致,才能实现稳定高效的数据传输。