Pregunta

Con el dispositivo GSM :: puedo leer el SMS recibido en mi UMTS-módem. A veces, un mensaje se divide en dos o más SMS, debido a la limitación de la longitud de un SMS. ¿Hay una manera de saber si un grupo de SMS es una parte de un mensaje? Wammu por ejemplo me zapatos SMS que pertenecen juntos como un solo texto.

#!/usr/bin/perl  
use warnings; use strict;  
use Device::Gsm;  

my $modem = new Device::Gsm( port => '/dev/ttyUSB0' );  
if( $modem->connect() ) {  
    print "connected!\n";  
}   
else {  
    print "sorry, no connection with serial port!\n";  
}  

my @msg = $modem->messages;  
if( @msg ) {  
    my $n = 0;  
    for( @msg ) {  
    my $sms = $_;  
    next unless defined $sms;  
    print "\nMESSAGE N. $n\n";  
    print 'Text   [', $sms->text(), "]\n";  
    $n++;  
    }  
}  
else {   
    print "No message on SIM, or error during read!\n";   
}  

  

contacto!

     

MENSAJE N. 0   Texto [Mensaje 1 Parte 1]

     

N. MENSAJE 1   Texto [Mensaje 1 Parte 2]

     

N. MENSAJE 2   Texto [Mensaje 1 Parte 3]

     

N. MENSAJE 3   Texto [Mensaje 2]

     

N. MENSAJE 4   Texto [Mensaje 3]

¿Fue útil?

Solución

No creo que hay una forma de dispositivo con GSM :: directamente. Sin embargo, si usted lee el mensaje en modo PDU (ver https://metacpan.org/pod/ dispositivo :: modalidad de GSM # ) se puede interpretar entonces la cabecera apropiada para leer las banderas de varias partes.

[Editado para agregar: esta referencia es una gran visión de conjunto de las cabeceras de SMS PDU: http://www.spallared.com/old_nokia/nokia/smspdu/smspdu. htm ]

Otros consejos

Esto funciona en su mayoría, pero no siempre.

#!/usr/bin/perl
use warnings; use strict; 
use 5.010;
binmode STDOUT, ':encoding(UTF-8)';
use Device::Gsm;

my $modem = new Device::Gsm( port => '/dev/ttyUSB0' );

if( $modem->connect() ) { 
    print "connected!\n"; 
} else { 
print "sorry, no connection with serial port!\n"; 
}

my @msg = $modem->messages( 'ME' );
if( @msg ) {
    print "You have messages!\n" ;
    my $n = 0;
    my $text;
    for my $sms ( @msg ) {
    next unless defined $sms;
    $text .= $sms->text;
    if ( $sms->{tokens}{PDUTYPE}{_MMS} ) {
        say "\nMESSAGE N. $n";
        say $text; 
        $text = '';
        $n++;
        <STDIN>;
    }
    }
} else { 
    print "No message or error during read!\n"; 
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top