Python: Как читать () на COM-порт, пока не задана строка? - PullRequest
0 голосов
/ 14 февраля 2019

Я делаю программу на Python для автоматической настройки модема с использованием AT-команд (не важно знать, что это такое)

Я использую последовательный модуль для связи через COM-порт.

Способ работает так, что я посылаю команду, а затем я хочу «сохранить» ответ, пока в конце не появится строка с надписью «ОК».Я попробовал это:

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?

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

OK "

Что я действительно хочу, так это сделать функцию, которую я могу вызыватьчитать, пока не встретится ОК, поместите текст в строку / список, и позвольте мне искать в нем конкретные слова.

1 Ответ

0 голосов
/ 15 февраля 2019

Думаю, я опубликую свое решение, чтобы у других был небольшой шанс работать с AT-командами в Python.Я сделал функцию, которая читает входные данные и сохраняет их в строке до тех пор, пока не встретится выбранный стоп-знак.Я сделал это так:

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

Я также хочу извиниться за преждевременную публикацию.Я думаю, мне просто пришлось попробовать дольше: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...