问题描述
我需要通过以太网将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”。是打印回显而不是下一行(确定行),还是仅打印出我发出的命令?如何获取读取的所有数据?
解决方法
如何获取读取的所有数据?
通常,程序在向调制解调器发送AT命令行后,除了从调制解调器发回的读取和解析响应外,它什么都不做,直到收到最终结果代码。最终结果代码表明调制解调器已完成对AT命令行的处理,现在可以接收新的命令行了。
您用于接收数据的代码,
data = s.recv(1024).decode()
只是picking up one single,arbitrary chunk of data sent over the network(可能会以多种不同方式拆分)。与jasonharper already has commented一样,这必须循环执行,尤其是loop that checks for and wait till it receives a final result code。