On 19-Jul-2004, Mon, 10:42:34, Alexander Pytlev <[EMAIL PROTECTED]> wrote:
> ltb> есть необходимось постоянноо слушать com порт и писать все в файл, но > ltb> программы типа minicom плохо, что посоветуете ? Как это сделать > ltb> максимально просто ? > У меня этим скриптом читаются данные из миниАТС: > (взято из pblogan-0.0.1a.tar.gz) > > #!/usr/bin/perl -w > # > # This perl script is based on a program written by Paul Haas, the original > program > # can be found at http://hamjudo.com/rcx/talkrcx.txt > # > # > > $port = "/dev/ttyS0"; > open("portfh","+<$port") || die "opening $port for input: $!"; > > system("stty 9600 -echo parmrk cs8 -cstopb raw < $port"); > while(1) { > getmsg("portfh" ); > sleep( 1 ); > } > close("portfh"); > > > sub getmsg { > local $portfh = @_; > local($inbuff,$rin) = ('',''); > > vec($rin,fileno("portfh"),1) = 1; > while ( select($rin, undef, undef, 0.3) ) { > $char = ''; > sysread ("portfh",$char,1); > $inbuff .= $char; > } > if( length( $inbuff ) > 0 ){ > open( LOG, ">>/var/log/pbx.log" ); > print LOG "$inbuff" ; > close( LOG ); > } > return; > } Тогда уж лучше использовать Device::SerialPort, так как болучается немного более гибко, а то system("stty 9600 -echo parmrk cs8 -cstopb raw < $port"); это конечно здорово, но ... use Device::SerialPort; my $Port = '/dev/ttyS0'; my $Lock = '/var/lock/LCK..ttyS0'; my $port = Device::SerialPort->new( $Port, 0, $Lock ) or die "error open serial port $Port - $!"; # Init port $port->baudrate( 9600 ) or warn "port->baudrate\n"; $port->databits( 8 ) or warn "port->databits\n"; $port->parity( "none" ) or warn "port->parity\n"; $port->stopbits( 1 ) or warn "port->stopbits\n"; $port->handshake( "none" ) or warn "port->handshake\n"; # $port->debug( 1 ) or warn "port->debug\n"; $port->purge_all; $port->read_char_time( 1200 ); $port->write_settings; Ну а дальше можно через $port->read(...) читать, в принципе можно сделать tie для STDIN и работать должно, но я не пробывал. Ну и выводить можно не в файл а в syslog, а уже на уровне syslog перенаправить это дело в любой файл да и по сети проще пересылать - ни каких переделок программы не будет. > Alexander -- With Best, | http://www.excom.spb.su/~andrey Andrey Chernomyrdin | mailto:[EMAIL PROTECTED]

