首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ESG信号发生器的远程会话

ESG信号发生器的远程会话
EN

Stack Overflow用户
提问于 2016-11-06 00:03:33
回答 2查看 399关注 0票数 0

我正试图用python控制一个信号发生器。我只需要改变幅度和频率。‘我的代码如下:

代码语言:javascript
复制
import telnetlib
HOST = "169.145.1.1"
timeout     = 5
PORT    = 5023
tn = telnetlib.Telnet(HOST, PORT , timeout)
tn.read_until("SCPI>", timeout)
tn.write('FREQ 3ghz\r\n')
tn.read_until("SCPI>", timeout)
tn.write('AMPL 10dbm\r\n')
tn.read_until("SCPI>", timeout)
tn.close()`

当我在端口5023上直接打开telnet会话时,我可以更改Freq和Amp,但不能使用上面的脚本。调试会话显示telnet连接成功,它确实发送了命令,但在sig上没有发生任何更改。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-07 16:46:40

我想明白了。我需要在每个命令之后添加\r\n,而不仅仅是\n。一旦实现了这个更改,Sig Gen值就会改变。我更新了剧本。谢谢

票数 1
EN

Stack Overflow用户

发布于 2016-11-06 00:08:22

测试

我已经在侦听的nc上运行了您的代码,Python2.7抱怨对telnetlib.Telnet(HOST, PORT , timeout, Debug)的调用是错误的--参数Debug应该被省略。

实际上,在文档中不存在Debug参数:

Telnet.open(主机[,端口,超时]) 连接到主机。可选的第二个参数是端口号,它默认为标准Telnet端口(23)。任选 timeout参数指定以秒为单位的超时,用于阻塞操作,例如连接尝试(如果未指定,将使用全局默认超时设置)。 不要试图重新打开已连接的实例。在版本2.6中更改:添加了超时。

但是,一旦修复了这个问题,那么通过原始模式的telnet和您的代码发送的命令是完全相同的。这可能是一些奇怪的时机问题,但除此之外,它应该是可行的。

为了安全起见,如果我是你的话,我还是会开一个tcpdump的。

旧答案

您没有终止这些命令,所以它们不会被执行。.write() 不会自动终止命令。

代码语言:javascript
复制
tn.write('FREQ 1.92ghz' + "\n")

另外,在结束前等待答案,以防万一。

代码语言:javascript
复制
tn.read_until("some answer", timeout)
tn.close()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40444615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档