首页 > 解决方案 > Python:如何在 COM 端口上读取()直到指定字符串?

问题描述

我正在制作一个 Python 程序,用于使用 AT 命令自动设置调制解调器(知道那是什么并不重要)

我使用串行模块进行 COM 端口通信。

它的工作方式是我发送一个命令,然后我想“保存”响应,直到最后出现一个说“OK”的字符串。我试过这个:

import serial
ser = serial.Serial(port='COM15', baudrate=115200, timeout=3, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE)
intline =''
ser.write('AT+COPS?'+'\r\n')    '''This specific commands asks for network status'''
while ser.inWaiting() >0:
    intline += ser.read(1)
if 'Greentel' in intline:
    print "Internet access"
else:
    print "No internet access"

我的麻烦是有时我会收到多行回复。例如,对于此处使用的命令,我得到了响应:

"+UMWI: 0,4

+UMWI:0.5

AT+警察?

+COPS: 0,0,"Greentel",7

好的”

我真正想要的是创建一个函数,我可以调用它来阅读,直到它满足,将文本放在字符串/列表中,然后让我在其中搜索特定的单词。

标签: pythonserial-port

解决方案


想我会发布我的解决方案,因为其他人在 Python 中使用 AT 命令的可能性很小。我所做的是创建一个函数,该函数读取输入并将其存储在字符串中,直到遇到所选的停止标志。我是这样设计的:

def read2sign(command, stopSign):
ser.flushInput()
temp = ''
ser.write(command +'\r\n')
while stopSign not in temp:
    temp += ser.read(1)
    print "---"     '''For debugging purpose'''
    print temp
print temp
return temp

我也有点想对过早发布表示抱歉。我想我只需要尝试更长的时间:-)


推荐阅读