我正在编写 Python 代码以从 tcp 端口 20001 接收信息。根据文档,可以调用一些 AT 命令。其中之一是
+OK
。另外,AT命令结束位必须是0x0D
我按照here的例子写了下面的代码来发送命令和接收响应
TCP_IP = '127.0.0.1'
TCP_PORT = 20001
BUFFER_SIZE = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
print('connected')
# won't work without encoding
packet = bytearray('x1b' + '+OK' + 'x1d', encoding='ascii')
s.send(packet)
s.shutdown(socket.SHUT_WR)
data = s.recv(BUFFER_SIZE)
print(data)
连接成功,但我没有收到任何数据。我非常怀疑我的
packet
部分是否正确。该示例没有编码部分。但是没有编码它就不会工作(没有编码的类型错误字符串参数)。我需要在AT
前面加上+OK
吗?以前从未使用过 AT 命令,而且那里的例子也不多。
packet = bytearray('x1b' + '+OK' + 'x1d', encoding='ascii')
这是错误的。
x1b
应该是\x1b
,x1d
应该是\x0d
,即
packet = bytearray('\x1b' + '+OK' + '\x0d', encoding='ascii')
这也可以从您声称遵循的示例中看出。从那里引用:
packet = bytearray("\x1b" + command + "\x0d")