【发布时间】:2017-05-07 08:10:28
【问题描述】:
我正在尝试为 IP 视频设备发送嵌入在 telnet 数据中的 RS232 命令。使用 Tera Term 和 windows 命令提示符 telnet 可以完美运行,但使用 Python (telnetlib) 无法正常运行
Using Tera Term, it works fine:
Correct Result (Fan status of 3 fans) MCU responds Correctly
但是,当我使用 Python 的 Telnet 库时:
tn = telnetlib.Telnet(HOST,PORT,timeout = 3)
tn.write('send '+ DEVICE_MAC + ' rs232:1 get_fan ?\r')
HOST、PORT 和 DEVICE_MAC 都在我的原始代码中定义。 由于某种原因,\r 没有发送到 HOST。
get_fan ?\r
HOST MCU 需要\r 才能正确处理get_fan ? 命令,但上面的Python 代码只发送get_fan ? 而没有\r。
有没有办法嵌入\r 甚至\n 以通过telnet 发送?
我正在 telnetlib.py 中寻找线索,但也许解决方案更简单。如果可能的话,我会很感激你的 cmets。谢谢!
【问题讨论】:
-
如果我做对了,您想将
get_fan ?\r发送/传递给命令send <some_mac> rs232:1... 如果是这样,请尝试将其括在单引号之间,您也可以考虑转义\r在\\r。如果您想“只需按enter ”,请尝试使用“\n”。除了少数几种型号的路由器,我遇到的几乎每个 telnet 服务器都使用“默认”telnet 换行符,即“\n”。 -
嗨洛马尔。感谢您的评论。我明白你的观点,我完全同意你的观点。问题是一旦 telnetlib.py 在要发送的数据中看到“\n”,它就会将其解释为将 telnet 数据(或刷新。())发送到套接字(我认为)。我发誓,这几天我一直在为此感到压力,我刚刚找到了解决方案。我会发布一个答案。
标签: python serial-port telnet