You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Robot Framework的Telnet库经串口服务器建连后读写关键字超时问题

问题根因
  • Robot Framework Telnet库的Write关键字默认执行逻辑为:写入指定内容+自动追加换行符后,会等待回显内容中匹配到写入的内容及换行符,以此确认写入成功。而你通过串口服务器连接后端设备的场景下,串口服务器/后端设备未开启输入回显,导致Telnet库始终无法匹配到预期的换行符,触发10秒超时报错。
  • 代码中发送ASCII 29(对应^])的操作属于Telnet协议本身的转义控制字符,该字符会被串口服务器的Telnet服务端直接拦截处理,不会转发到后端串口连接的设备,反而会干扰正常数据透传。
  • Telnet库默认参数适配标准Telnet服务端交互逻辑,串口透传场景无标准Telnet提示符、回显规则,默认配置和场景不匹配。
解决方案

按以下步骤调整即可解决:

  1. 打开连接时显式配置适配串口场景的参数,包括指定后端设备兼容的换行符、关闭默认提示符匹配规则
  2. 替换Write关键字为Write Bare,该关键字仅发送指定内容,不会触发自动回显匹配逻辑,也可按需自行控制是否追加换行
  3. 移除无效的Telnet转义字符发送操作,如后端设备确实需要接收ASCII 29再保留
  4. 读取数据时优先用Read关键字读取所有已缓存数据,避免正则规则不符导致的读超时

调整后参考代码

_Open Telnet Connection By Serial Server
[Arguments]    ${serial_ip}    ${user_name}    ${password}    ${port}    ${timeout}=10s
${output}=    Telnet.Open Connection     ${serial_ip}    port=${port}    timeout=${timeout}    newline=\r\n    prompt=
# 确认后端设备需接收ASCII 29再打开下方注释,普通透传场景无需发送
# Write Control Character    29
Telnet.Write Bare    help\n
${output}=    Telnet.Read    timeout=${timeout}
Log    ${output}
Telnet.Close Connection
补充排查点

如果调整后仍无法正常读写,可按以下方向排查:

  • 确认串口服务器对应端口是否配置为透传模式,需关闭Telnet命令解析功能,避免串口服务器拦截控制字符不转发
  • 先用本地Telnet客户端(PuTTY、系统自带telnet命令)连接对应IP端口,手动输入help确认返回内容格式、换行符规则,再调整代码中newline参数和读取匹配规则

内容的提问来源于stack exchange,提问作者Grant-bobo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:45:03