远程访问方案选型
远程操作一个串口设备有四条路径。它们解决的不是同一个问题,选错的代价通常是"连得上但改不了参数"或者"网络根本不通"。
- RFC 2217——把串口连同参数控制一起送到远端。客户端可以改波特率、校验位和 DTR/RTS。
- 透明 TCP 转发——只把字节从串口搬到网络。参数由现场那一端决定,远端改不了。
- Cloud Console(Web 远程调试)——通过云端中转,浏览器直接操作现场端口。不需要客户端能直达现场网络。
- Cloud Relay(远程串口)——通过云端中转,现场串口在另一台机器的软件里成为一个真正的端口,端到端跑 RFC 2217。网络前提与 Cloud Console 相同,但它是透明管道,不是实时窗口。
各路径的拓扑差别
看图只看两处:箭头由哪一端发起,决定网络通不通;下方那条横线,决定远端能不能改串口参数。
Cloud Relay 沿用第三张图的箭头——两端都向云端出站,所以同样能穿 NAT——但它下面那条横线是第一张图的:完整的 RFC 2217 流,数据和参数控制原样穿过云端。远端不是浏览器,而是本软件(以及桥接在它后面的第三方工具),拿到的是一个表现如同本地串口的真端口。
四者对比
| RFC 2217 | 透明 TCP 转发 | Cloud Console | Cloud Relay | |
|---|---|---|---|---|
| 网络前提 | 客户端能直达现场 IP 和端口 | 客户端能直达现场 IP 和端口 | 现场能访问互联网即可,无需入站端口 | 现场能访问互联网即可,无需入站端口 |
| 远程修改串口参数 | 可以 | 不可以 | 可以 | 可以 |
| 远程控制 DTR/RTS | 可以 | 不可以 | 可以 | 可以 |
| 协议流(Modbus、文件传输、固件升级) | 可以 | 可以 | 不可以——限帧的实时窗口 | 可以 |
| 客户端是什么 | 本软件、支持 RFC 2217 的虚拟串口、pyserial、设备管理软件 | 任意 TCP 程序 | 浏览器 | 本软件——登录同一账号,或持邀请码的访客(无需账号) |
| 现场需要做什么 | 物理串口 + TCP Server + RFC 2217 服务端桥接 | 物理串口 + TCP Server + 透明桥接 | 登录账号并开启远程 | 登录账号并允许 Cloud Relay,或为某个串口签发邀请码——图形界面或无界面的 spu --share / spu --invite |
| 加密与认证 | 无,依赖局域网或 VPN | 无,依赖局域网或 VPN | 有,走账号与云端链路 | 有,走账号与云端链路 |
| 额外成本 | 无 | 无 | 占用流量配额 | 占用流量配额;需要 Pro 授权(记在共享方,访客不付费) |
| 配置入口 | RFC 2217 服务端 / RFC 2217 客户端 | TCP 与 UDP 调试 | Web 远程调试 | 远程串口 |
怎么选
先回答第一个问题:客户端能不能直接访问现场的 IP 和端口?
- 不能(现场在 NAT 后面、没有公网地址、也没有 VPN)——只剩两条云端路径。为此在现场开放入站端口或做端口映射,是把一台调试机暴露到公网,代价远大于收益。接着问远端需要的是什么:
- 浏览器就够了——看数据、偶尔发条命令、开关端口——用 Cloud Console。
- 需要软件里的真端口——协议要端到端地跑(Modbus 轮询、XMODEM/YMODEM、固件升级),或者远端机器上的工具要独占这个口——用 Cloud Relay。
- 能,再问第二个问题:远端需要改串口参数吗?
- 需要改波特率、校验位、停止位或控制线——用 RFC 2217,两端都必须是 RFC 2217,只有一端是不行的。
- 只需要把字节搬过去,参数在现场就已经定好——用透明 TCP 转发,客户端可以是任意 TCP 程序,不必支持 RFC 2217。
几个常见的错配:
- 现场桥接选了 透明转发,客户端却按 RFC 2217 连接——TCP 能建立,但不会出现"远端已接受串口参数设置",参数下发全部无效。
- 客户端用普通 TCP Socket 连接一个 RFC 2217 服务端——协商字节会混进数据流,表现为开头几个字节是乱码。
- 在公网上直接暴露 RFC 2217 端口——它没有加密也没有认证,任何能连上的人都可以改你的串口参数。需要跨公网就用 VPN、Cloud Console 或 Cloud Relay。
- 试图用 Cloud Console 跑文件传输或 Modbus 轮询——它是限帧的实时窗口,不是管道,协议会卡死。这件事属于 Cloud Relay。
四条路径不互斥。现场常见的做法是:日常在局域网内用 RFC 2217,出差或跨地区时走云端——看用 Cloud Console,操作用 Cloud Relay——共用同一个物理串口连接。
端到端的完整配置示例,见 通过 RFC 2217 直连远端串口 和 随时随地通过 Web 调试串口。