linux windows 串口

老刘

Windows 与 Linux 串口使用完全指南

串口(Serial Port)是电脑与外部设备通信最基础的接口之一,工业控制、嵌入式开发、单片机调试、路由器配置、传感器数据采集里到处都能见到它。Windows 和 Linux 对串口的管理方式差异很大,很多人从 Windows 转到 Linux 后,第一时间就会被 /dev/ttyUSB0、权限、波特率这些概念卡住。下面把两端的用法、工具和常见坑一次讲清楚。

串口基础概念先理清

串口通信本质是按位串行传输数据,最常见的参数是:

  • 波特率(Baud Rate):9600、115200 最常用
  • 数据位:通常 8
  • 停止位:1
  • 校验位:无(None)
  • 流控:无(None)或硬件流控(RTS/CTS)

物理接口现在几乎全是 USB 转串口芯片(CH340、CP2102、FT232、PL2303 等),真正的原生 COM 口在新电脑上已经很少见。

Windows 下如何使用串口

  1. 查看串口号
    设备管理器 → 端口(COM 和 LPT)。插上 USB 转串口后会出现 COMx(x 是数字)。如果显示黄色感叹号,多半是驱动没装好,去芯片官网下对应驱动即可。

  2. 常用调试工具

    • PuTTY:免费,连接时选 Serial,填入 COM 口号和波特率即可。
    • SecureCRTXShell:功能更全,支持日志记录和脚本。
    • 串口助手(各种开源版本):发送十六进制、自动换行比较方便。
    • PowerShell / 命令行
      mode COM3: BAUD=115200 PARITY=N DATA=8 STOP=1

      也可以用 .NET 的 System.IO.Ports.SerialPort 写简单脚本。

  3. 常见问题

    • 端口被占用:关掉其他串口软件,或在设备管理器里禁用再启用。
    • 乱码:波特率、校验位不一致是最常见原因。
    • USB 转串口识别成未知设备:换 USB 口、换驱动,或换一根线(假芯片很多)。

Linux 下如何使用串口

Linux 把串口当成设备文件,路径通常是:

  • USB 转串口:/dev/ttyUSB0/dev/ttyUSB1
  • 板载串口或某些芯片:/dev/ttyS0/dev/ttyACM0(CDC ACM 设备)
  1. 查看设备

    ls /dev/ttyUSB* /dev/ttyACM* /dev/ttyS*
    dmesg | grep tty

    插拔设备后看 dmesg 输出,能立刻确认内核识别到了哪一个节点。

  2. 权限问题(新手最容易踩坑)
    普通用户默认没有权限读写串口,会报 Permission denied
    临时解决:

    sudo chmod 666 /dev/ttyUSB0

    永久解决:把用户加入 dialout 组(Ubuntu/Debian)或 uucp 组(部分发行版):

    sudo usermod -aG dialout $USER

    然后注销重新登录生效。

  3. 常用工具

    • minicom(经典):
      sudo apt install minicom
      sudo minicom -s   # 进入配置,选串口设备、波特率
      minicom -D /dev/ttyUSB0 -b 115200
    • screen(最轻量):
      screen /dev/ttyUSB0 115200

      退出:Ctrl+A 再按 K,然后确认。

    • picocom现代替代):
      picocom -b 115200 /dev/ttyUSB0
    • Pythonpyserial 库几乎是标配,跨平台写脚本非常方便。
  4. 设置串口参数
    stty 可以临时改:

    stty -F /dev/ttyUSB0 115200 cs8 -cstopb -parenb

Windows 与 Linux 之间通过串口通信

两边参数必须完全一致(波特率、数据位、停止位、校验)。最常见的场景是:

  • Windows 上跑上位机软件,Linux 板子(树莓派、工控机)作为下位机。
  • 或者反过来,Linux 主机调试 Windows 虚拟机里的串口设备。

实践建议:

  1. 先用同一台机器自测:Windows 开两个虚拟串口(用 com0com 或 Virtual Serial Port Driver),确认收发正常。
  2. 再接到真实设备,用最短的 USB 转串口线,避免长距离干扰。
  3. 如果两边系统都在同一台物理机上(双系统或虚拟机),可以用虚拟串口对(null-modem)直接打通。

跨平台开发时的注意点

  • 驱动差异:CH340 在 Linux 内核里已经内置,Windows 需要额外驱动;FT232 两边都比较稳。
  • 流控:很多工业设备默认开了硬件流控,Windows 工具里要勾选 RTS/CTS,Linux 里用 sttycrtscts
  • 延迟和缓冲:Linux 默认串口缓冲策略和 Windows 不同,实时性要求高的场合建议把 VTIMEVMIN 调小,或者直接用原始模式。
  • 热插拔:Linux 下设备号可能变化(ttyUSB0 变成 ttyUSB1),写脚本时最好用 udev 规则绑定固定名称。

实用排查清单

  1. 设备有没有被系统识别?(设备管理器 / dmesg)
  2. 权限够不够?(Windows 管理员运行,Linux dialout 组)
  3. 波特率和帧格式是否一致?
  4. 线有没有接反?(TX-RX 交叉,GND 必须共地)
  5. 是否被其他程序占用?
  6. USB 供电是否稳定?(部分芯片对供电要求高,建议用带供电的 USB Hub)

掌握以上内容后,无论是日常调试单片机、配置交换机,还是做工业数据采集,串口基本不会再成为障碍。Windows 侧重图形工具和驱动安装,Linux 侧重设备文件和权限管理,两边思路不同,但底层通信协议完全一样。把参数对齐、权限解决,剩下的就是耐心看日志了。

文章版权声明:文章内容均来源于各大短视频平台搜集以及修改和删减新增,如有侵权或者违规,请联系站长进行删除,如需转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,1人围观)

还没有评论,来说两句吧...

目录[+]