四个参数与它们的症状
串口通信的帧结构由四个参数决定:波特率决定每个位的宽度,数据位通常取 7 或 8 位,校验位可选无校验、奇校验或偶校验,停止位取 1 位或 2 位。参数不一致时症状有区别:波特率不匹配会导致整段数据乱码,因为接收方按错误的位宽切分;校验位不匹配常表现为偶发校验错误,因为帧结构对得上但校验结果不一致;接线与流控问题则表现为完全收不到数据。工业仪表的常见组合是中等波特率配 8 位数据、偶校验、1 位停止位,具体以设备手册为准。
基本信息
| 波特率 | 位宽与速率,两端必须一致 |
|---|---|
| 数据位 | 常见 7 位或 8 位 |
| 校验位 | 无、奇、偶三种最常见 |
| 停止位 | 常见 1 位或 2 位 |
| 流控 | 单端接口可启用硬件流控,只用三线时必须关闭 |
| 方向控制 | 差分半双工需要控制收发方向,有的转换器自动处理 |
| 验证方式 | 先用回环测试确认本机,再接入设备核对参数 |
典型使用场景
- 首次接入仪表:把手册上的参数与本地配置逐项核对
- 更换设备:新型号默认参数可能变化,不能沿用旧配置
- 脚本化部署:把参数写入启动脚本,避免每次手工配置
- 故障反推:按乱码、校验错误、无数据三类症状缩小范围
- 批量部署:统一参数模板并记录每台设备的例外情况
- 跨平台迁移:不同系统的参数配置方式与默认值不同,需重新确认
症状与原因
| 症状 | 可能原因 | 处理方向 |
|---|---|---|
| 整段数据乱码 | 波特率不一致 | 核对两端波特率 |
| 偶发校验错误 | 校验位或停止位不一致 | 逐项核对帧参数 |
| 完全收不到数据 | 接线错误、流控配置不当 | 检查收发交叉与流控设置 |
| 只收到部分字符 | 数据位不一致或超时过短 | 核对数据位与超时 |
| 半双工收发冲突 | 方向控制未正确切换 | 确认方向控制的实现方式 |
参数配置示例
参数配置示例
# Linux:临时配置某个串口(重启后失效,需写入启动脚本)
stty -F /dev/ttyUSB0 9600 cs8 -parenb -cstopb raw -echo
# cs8 表示 8 位数据位,-parenb 表示无校验,-cstopb 表示 1 位停止位
# 查看当前设置
stty -F /dev/ttyUSB0 -a | grep -E 'speed|cs8|parenb|cstopb'
# Windows 命令行设置(示例)
mode COM3: BAUD=9600 PARITY=N DATA=8 STOP=1
# 提示:参数以设备手册为准,先核对再改,避免与设备侧不一致差分半双工总线的方向切换有人由转换器自动完成,也有人需要由软件通过握手信号控制,接入前先确认,否则会出现发出收不到的现象。
把流控设置打开但线缆里没有对应握手线,设备会一直等待允许发送信号,表现为发送卡住,排查时容易被误判为设备故障。