Num outro artigo tinha escrito sobre o envio de sms com o huawei e220 usando a libraria do CPAN Device::Modem para este caso comigo não resultou. O envio das sms nem sempre funciona, o texto enviado pelo atsend não é emitido pelo modem.
Sem conseguir confirmar de onde originava o problema pois a mesma string pelo minicom funciona sem problemas, usando um outro pc isto tudo funciona sem problemas sobrou a possibilidade de ser diferença na $LANG ou problema de configuração dos locales mas nada tem a ver pois as config’s estão iguais muda sim a versão do perl.
Para contornar todas estas dores de cabeça decidi-me a usar o smstools que funciona sem problemas só preciso de ler as mensagens ler os dados que pretendo dos ficheiros e está a funcionar sem grandes dores de cabeça.
De qualquer modo fica o código para envio das sms usando o Device::Modem funciona no ubuntu 8.04.
# Enviar sms
sub Enviar{
my ( $number, $out, $fromqueue ) = @_;
# Start modem connection
my $OK;
my $new;
my $modem = new Device::Modem( port => ‘/dev/ttyUSB0′ );
if ( $modem->connect( baudrate => 115200 ) ) {
} else {
print “Problem with connection… \n”;
exit 0;
}
# don’t echo my output
$modem->echo (0);
# Initialize
$modem->atsend( ‘ATZ’ . Device::Modem::CR );
# set text mode
$modem->atsend( ‘AT+CMGF=1’ . Device::Modem::CR );
chomp($out);
chomp($number);
# Start sending response
$modem->atsend( ‘AT+CMGS=”‘.$number.'”‘ . Device::Modem::CR );
$modem->atsend( $out . ” \cZ” );
$modem->atsend( “\cZ”);
# Get Answer
$OK = $modem->answer();
chomp($OK);
if ( $OK =~ /OK/ ){
print “\tenviado\n”;
return 1;
}else {
if ( $fromqueue != 1 ) {
#QueueOut($number, $out);
print “Queue to send later\n”;
}
print “\tnot enviado\n”;
}
$modem->disconnect();
}
Esta função integra-se no meio de outras que “servem um propósito maior”.
Deverá estar ligado para publicar um comentário.