[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: