Python:如何在COM端口上读取()直到特定的字符串?

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

我正在制作一个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"

我的麻烦是,有时我会得到多行作为回应。举个例子,对于这里使用的命令,我得到了响应:

“+ WORD:0,4

+ WORD:0,5

AT + COPS?

+ COPS:0,0,“Greentel”,7

好”

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

python serial-port
1个回答
0
投票

我想发布我的解决方案,因为其他人在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

我也想对过早发帖表示遗憾。我想我只需要尝试更长时间:-)

© www.soinside.com 2019 - 2024. All rights reserved.