Форум сайта python.su
Добрый день Товарищи программисты.
Сегодня первый день пробывал писать скрипты на Python, до этого что-то пытался на Perl.
Создал программу,которая работаю с модулем serial заходит через серийный порт на устройство (коммутатор) и выполняет ряд команд. Последней командой в первой части является заливка прошивка через tftp сервер. Но здесь я столкнулся с проблемой: Так как заливка происходит несколько минут, я думал сделать обработчик, который следил за завершение закачки. Завершение закачки происходит, когда вновь выдается приглашение ( Например <Quidway>).
Есть команда read, readline…
Пробывал сделать такой момент:
while 1 :
if buff == ‘<Quidway>’ : break
time.sleep(2)
buff = ‘ ’
buff = ser.read()
pass
Но вот в чем проблема…. Модуль не читает само приглашение или не видит ничего, или видит по 2-3 буквы в разнобой.
То покажет <Q, то uid, то way> и т.п.
Я игрался с цифрами в read, и 1 и 10, 9 эффект тот же.
Прошу говоря работает через одно место…
Решил сделать, чтобы просто писалось в этом цикле цифра 1 в консоль, дабы отследить когда оболочка коммутатора начнет писать, а следовательно считывать, но это тоже способ через мягкое место…
Подскажите пожалуйста как сделать грамотно и работоспособно.
П.С. Видел момент с модулем pexpect, но не удалось его приучить к консоли ( не смог задать ему значение порта, чтобы spawn его скушал) Нашел пример для telnet, а вот для serial не могу подкатать.
Офлайн
может банально ser.readline() т.к. наверняка работа идет построчно
Офлайн
Пробывал, но проблема в том что не читает он в строке приглашение, а значит определить нельзя..
Офлайн