我有一个由pyserial发送的AT命令的空响应。我怎样才能得到“OK”的回答?

2024-05-14 15:02:05 发布

您现在位置:Python中文网/ 问答频道 /正文

print(msg)的响应是b' ',我希望得到“OK”响应

import serial

ser = serial.Serial(port='COM57')
if not ser.isOpen():
    ser.open()
print('COM57 is open', ser.isOpen())
at_cmd = 'AT'
ser.write(at_cmd.encode())
msg = ser.read(2)
print(msg)
print(type(msg))
ser.close()

Tags: importcmdifportserialnotokmsg
1条回答
网友
1楼 · 发布于 2024-05-14 15:02:05

这里有几件事你需要改变。正如在评论中已经提到的那样,仅仅发送"AT"不会起任何作用。您需要填补AT命令知识中的漏洞,并区分AT命令和AT命令行中的。最好从阅读标准V.250中的第5章开始,这是AT命令处理的基本标准。如果您没有完全理解某些内容,请不要惊慌,但请确保您真正理解了语法部分(前缀+正文+终止)

请注意,尽管注释中有建议,AT命令行命令行应仅由\r终止,而不是由\r\n(“终止字符可由用户选项(参数S3)选择,默认为CR(IA5 0/13)。”,并且S3绝对不应该从其默认值13更改,因此在实践中,您永远不必处理该寄存器)

关于阅读和解析,您需要输入适当的算法。您需要逐个读取字符并将这些字符组合成响应行,然后再考虑解释这些字符的含义(在数据协议中称为“帧”)。接下来,您需要检测是否已收到最终结果代码(以及可能的处理中间结果代码/信息文本)

these{a3}答案中有更多细节

相关问题 更多 >

    热门问题