【发布时间】:2020-11-30 19:20:29
【问题描述】:
我需要通过以太网向设备发送 AT 命令来配置它。这是我现在拥有的:
import socket
import sys
import time
host = "192.168.0.99"
port = 8080
msg = 'at\n'
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send(msg.encode())
data = s.recv(1024).decode()
print (data)
s.close()
我可以对它进行腻子,打开一个原始连接并且它可以工作。
我输入“at”,控制器回显“at”,然后是“ok”以确认。
当我运行上面的脚本时,我得到了“at”。它是打印回显而不是下一行(ok 行)还是只是打印出我发出的命令?如何让它读取收到的所有数据?
【问题讨论】:
-
只要设备提供 any 数据,
.recv()就会返回 -1024是它将返回的最大数量,而不是它会等待。如果回声和命令响应之间存在微小的延迟,那么您很可能在第一次调用时只得到回声 - 事实上,不能保证您甚至会得到整个回声。您需要循环调用.recv()。 -
有道理。所以现在我有了这个:
-
尝试用
\r\n终止你的AT命令 -
添加 \r\n 成功了!什么是\r?
-
\r - 运营商退货,\n - 换行
标签: python at-command