Re: про modem
В сообщении от Вторник 16 января 2007 14:23 sergio написал(a):
> >> очень хочется говорить разные вещи своему телефону
> >> AT-коммандами с коммандной строки (кронтаба) может есть какая-нить
> >> тулза?
Откопал в залежах старых проектах скрипт, работающий с GSM-модемом. Может
быть, это то, что нужно.
#!/usr/bin/perl
use Device::Modem;
my %config;
my $port;
if( $> && $< ) {
print "\n*** REMEMBER to run this program as root if you cannot
connect on serial port!\n";
sleep 3;
}
#print "Your serial port? [/dev/ttyS1]\n";
#my $port = <STDIN>;
#chomp $port;
$port ||= '/dev/ttyS1';
#print "Your baud rate? [9600]\n";
#my $baud = <STDIN>;
#chomp $baud;
$baud ||= 9600;
my $modem = new Device::Modem ( port => $port );
if( $modem->connect( baudrate => $config{'baud'} || 9600 ) ) {
print "ok connected.\n";
} else {
die "cannot connect to $port serial port!: $!";
}
my $number = $ARGV[0];
while( ! $number ) {
print "\nInsert the number to dial: \n";
$number = <STDIN>;
}
chomp $number;
$number =~ s/\+7/8/g;
print '- trying to dial [', $number, ']', "\n";
($ok, $answer) = $modem->dial($number,30);
if( $ok ) {
print "Ok, number dialed\n";
} else {
#print "No luck!\n";
die "No connect: $answer\n";
}
# Some raw AT commands
$modem->atsend( "incom: \r\n" );
$modem->atsend( "message 2 from server\r\n" );
$modem->atsend( "test message 3 from server\r\n" );
my $close = 0;
my $file = '';
while( !$close )
{
$answer = $modem->answer(), "\n";
if ($answer eq '+++' )
{
print "got attention\n";
$close = 1;
}
else
{
chomp $answer;
$answer =~ s/\r//g;
$answer =~ s/\n//g;
print "[".$answer."]\n";
$file .= $answer;
}
}
print "got file:\n".$file."\n";
# List context: allows to get at exact modem answer
# like `CONNECT 19200/...', `BUSY', `NO CARRIER', ...
#($ok, $answer) = $modem->dial( $number [,$timeout] )
$modem->attention(); # send `attention' sequence (+++)
$modem->hangup(); # returns modem answer
$modem->disconnect();
Reply to: