Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Eugene Grosbein                      2:5006/1       15 Mar 2007  12:11:12
 To : Gennadij Pastuhov
 Subject : Re: com порт
 -------------------------------------------------------------------------------- 
 
 15 мар 2007, четверг, в 00:19 KRAST, Gennadij Pastuhov написал(а):
 
  GP> Спасибо за подсказку, нашёл в инете скрипт Витуса, который переделал под
  GP> себя.
  GP> Однако появился один косяк. который не знаю, как правильно обработать:
  GP> если
  GP> ответа из компорта долго нет, то скрипт так и висит в его ожидании. Можно
  GP> ли
  GP> как-нибудь это время ограничить?
 
 Можно. Есть куча способов, но это уже к эхотагу малое отношение имеет.
 
 Простейший способ: alarm(). Так как заблокироваться может даже open(),
 если nonblock не выставлять, то прямо перед ним вставь, например:
 
      alarm(10);
 
  GP> open F, "+<$port" or die $!;
  GP> select F;
  GP> $|=1;
  GP> select STDOUT;
 
  GP> print F "AT+CSQ\r" || die $!;
  GP> my $rc = <F>;
  GP> while (<F>) {
 
 И после каждого успешного чтения выключай таймер:
 
              alarm(0);
 
  GP>         die "Modem error\n" if /^ERROR\r?$/;
  GP>         if ($_ =~ m/\ (\d+)\,/x) {
  GP>                 $rssi = $1;
  GP>                 printf "INSERT INTO pvalues (alias, value, units) VALUES
  GP> ('RSSI'
  GP>                 exit (0);
  GP>         }
 
 А перед следующим опять включай:
 
              alarm(10);
 
  GP> }
  GP> unlock();
 
 Если в течение 10 секунд ничего не происходит, придет SIGALRM
 и даст процессу по башке. Дефолтный обработчик процесс завершит.
 Можно написать свой, который сделает что-то другое.
 
 Eugene
 -- 
 Устав от радостных пиров,
 Hе зная страхов и желаний
 --- slrn/0.9.8.0 (FreeBSD)
  * Origin: Svyaz Service JSC (2:5006/1@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 com порт   Gennadij Pastuhov   14 Mar 2007 10:45:30 
 Re: com порт   Eugene Grosbein   14 Mar 2007 15:23:43 
 com порт   Gennadij Pastuhov   15 Mar 2007 01:19:44 
 Re: com порт   Eugene Grosbein   15 Mar 2007 12:11:12 
 com порт   Gennadij Pastuhov   15 Mar 2007 12:18:00 
 com порт   Anton Gorlov   06 May 2007 19:18:50 
Архивное /ru.perl/26093752493e1.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional