首页 > 解决方案 > Python 和 AT 命令

问题描述

我需要通过以太网向设备发送 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 行)还是只是打印出我发出的命令?如何让它读取收到的所有数据?

标签: pythonat-command

解决方案


如何让它读取收到的所有数据?

一般而言,在程序向调制解调器发送 AT 命令行之后,除了读取和解析从调制解调器发回的响应之外,它绝对不应该做任何事情,直到它收到最终结果代码。最终结果代码表明调制解调器已完成对 AT 命令行的处理,现在已准备好接收新的命令行。

您用于接收数据的代码,

data = s.recv(1024).decode()

只是拾取通过网络发送的一个单一的、任意的数据块(可能以多种不同的方式拆分)。正如jasonharper 已经评论的那样,这必须在一个循环中完成,特别是一个检查并等待它收到最终结果代码的循环。


推荐阅读