|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Gennadij Pastuhov 2:5036/26 15 Mar 2007 01:19:44 To : Eugene Grosbein Subject : com порт -------------------------------------------------------------------------------- GP>> Подскажите, плз, можно ли в эхотаге работать с сабжем напрямую? EG> Да, конечно. Открываешь соответствующий файл и вперед. EG> Обычно прямее в подавляющем числе операционок, на которых работает EG> эхотаг, тебе не дадут :-) Спасибо за подсказку, нашёл в инете скрипт Витуса, который переделал под себя. Однако появился один косяк. который не знаю, как правильно обработать: если ответа из компорта долго нет, то скрипт так и висит в его ожидании. Можно ли как-нибудь это время ограничить? #!/usr/bin/perl -w use strict; use Fcntl; unless (@ARGV == 2) { die <<EOF Usage: $0 -l line Where line is serial port name EOF } unless ($ARGV[0] eq "-l") { die <<EOF $ARGV[0]: wrong parameter, must be "-l" EOF } my $port = $ARGV[1]; my $lock_dir = "/var/lock"; my $lock_file = $lock_dir . "/LCK..$port"; my $rssi = ""; lock($port); open F, "+<$port" or die $!; select F; $|=1; select STDOUT; print F "AT+CSQ\r" || die $!; my $rc = <F>; while (<F>) { die "Modem error\n" if /^ERROR\r?$/; if ($_ =~ m/\ (\d+)\,/x) { $rssi = $1; printf "INSERT INTO pvalues (alias, value, units) VALUES ('RSSI' exit (0); } } unlock(); sub lock { sysopen(F,$lock_file,O_RDWR|O_CREAT|O_EXCL) || die "Cannot lock $port:$! print F $$,"\n"; close F; $SIG{__DIE__}=\&unlock; } sub unlock { unlink $lock_file; } ... Jonny wanna live --- GoldED+/W32 1.1.5-041013 www.lesk.ru xenofont.chat.ru * Origin: ... са. Это ориджин Мёбиуса. Это ориджин Мёбиу ... (2:5036/26) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/18464699c525.html, оценка из 5, голосов 10
|