如何将命令发送到 tcp 端口并检索响应

问题描述 投票:0回答:1

我正在编写 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 命令,而且那里的例子也不多。

编辑

返回的连接信息是这样的:

python sockets tcp byte
1个回答
0
投票
packet = bytearray('x1b' + '+OK' + 'x1d', encoding='ascii')

这是错误的。

x1b
应该是
\x1b
x1d
应该是
\x0d
,即

packet = bytearray('\x1b' + '+OK' + '\x0d', encoding='ascii')

这也可以从您声称遵循的示例中看出。从那里引用:

packet = bytearray("\x1b" + command + "\x0d")
© www.soinside.com 2019 - 2024. All rights reserved.