Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Telnet и Perl


Автор: rcdimon 27.10.2010, 16:09
Всем привет.

Есть достаточно убогий девайс на 8-и битном микроконтроллере. Тем не менее у него есть Ethernet и на нем запущен убогий Telnet сервер.

Необходимо написать программу на Perl для работы с девайсом. 

Обычные команды можно выполнять с помощью обычной программы telnet. Но у девайса реализована функция загрузки прошивки по сети. И загрузка прошивки осуществляется по телнету. 

Сначала необходимо авторизоваться. Для этого надо просто отправить строку-пароль. 
Потом надо отправить команду prog, которая переводит девайс в режим приема прошивки. Прошивка кодируется и передается символами от A до P (английские), а не в чистом бинарном виде.
После посыла девайсу команды prog он высылает пакет-подтверждение входа а режим программирования, который выглядит так "ABAAHF" и на конце еще байты 13 10


Вот такая у меня программа 

Код

use Net::Telnet ();

my $pass = '1';

$t = new Net::Telnet (-host => '192.168.0.80');
sleep(1);
@lines = $t->cmd($pass);
print @lines;
sleep(1);
@lines = $t->cmd('prog');
print @lines;


Почему-то пароль отправляется нормально, нормально приходит ответ. А при посылке prog вылетает по таймауту. Смотрю с помощью сниффера- команда в девайс ушла, девайс нормально ответил. Но вылетает по таймауту. Никак не пойму как же заставить его нормально принимать ответ от девайса.

Автор: rcdimon 27.10.2010, 19:09
Вообще можно как ни будь сделать, чтобы по одному символу скидывалось или до нажатия энтера что было введено?

Автор: shamber 27.10.2010, 21:41
Цитата(rcdimon @  27.10.2010,  19:09 Найти цитируемый пост)
чтобы по одному символу скидывалось или до нажатия энтера что было введено?

не совсем понятно, что ты хочешь. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)