我无法在任何地方找到答案,所以我来找你,希望有人可以帮助我。
我有一个Python脚本,通过串行连接将AT命令发送到ZigBee模块,然后读取模块提供的答案。实际上我已经可以捕捉并阅读这个答案,但有时我会有不受欢迎的字符结束它或根本没有响应。我的目标是拥有一个包含答案的完美输出,只有它。
Here is an example of this behavior
因此,为了避免这种情况,我尝试逐个字符地读取模块响应,直到它包含“确定”为止。或者命令返回的另一条预期消息表明它已经结束,但问题是我的代码从那时起无限循环。
我使用的方法:
def sendAtCommand(command):
# vars
response = ''
if ser.inWaiting() > 0:
#flush input buffer, discarding all its contents
ser.flushInput()
#flush output buffer, aborting current output
#ser.flushOutput()
ser.write(command.encode('ascii')+'\r')
#response = ser.read(size=1024)
# while True:
# response = ser.read(size=1024)
# if 'OK' in response:
# break
while True:
response += ser.read(size=1)
print(response)
if 'OK' in response:
break
print('--------------')
print('Msg received : ')
print('--------------')
print(response)
print('--------------')