The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

GSM::SMS::Transport::Serial - Send and receive SMS messages via a GSM modem

DESCRIPTION

This class implements a serial transport. It uses Device::SerialPort to communicate to the modem. At the moment the modem that I recommend is the WAVECOM modem. The serial transport has also been tested for the M20 modem module from SIEMENS.

This module is in fact the root of the complete GSM::SMS package, as the project started as a simple perl script that talked to a Nokia6110 connected via a software modem ( as that model did not implement standard AT ) on a WINNT machine, using Win32::SerialPort and Activestate perl.

I first used the Nokia6110, then moved to the Falcom A1 GSM modem, then moved to the SIEMENS M20 and then moved to the WAVECOM series. Both M20 and WAVECOM work best, but I could crash the firmware in the M20 by sending some fake PDU messages. Therefore I only use the wavecom now.

METHODS

new - Constructor
my $s = GSM::SMS::Transport::Serial->new(
  -name => 'serial',
  -originator => 'GSM::SMS',
  -match => '.*',
  -pin_code => '0000',
  -csca => '+32475161616',
  -serial_port => '/dev/ttyS0',
  -baud_rate => '9600',
  -memory_limit => '10'
}
send - Send a PDU encoded message
receive - Receive a PDU encoded message
Will return a PDU string in $pduref from the modem IF we have 
a message pending return:
   0 if PDU received
  -1 if no message pending
init - Initialise this transport layer
 No init file -> default initfile for transport
close - Close the init file
ping - A ping command
.. just return an informative string on success
get_info - Give some info about this transport

NAME

GSM::SMS::Transport::Serial

DESCRIPTION

This class implements a serial transport. It uses Device::SerialPort to communicate to the modem. At the moment the modem that I recommend is the WAVECOM modem. This module is in fact the root of the complete package, as the project started as a simple perl script that talked to a Nokia6110 connected via a software modem ( as that model did not implement standard AT ) on a WINNT machine, using Win32::SerialPort and Activestate perl. Also tested with the M20 modem module from SIEMENS.

I first used the Nokia6110, then moved to the Falcom A1 GSM modem, then moved to the SIEMENS M20 and then moved to the WAVECOM series. Both M20 and WAVECOM worked best, but I could crash the firmware in the M20 by sending some fake PDU messages.

ISSUES

The Device::SerialPort puts a big load on your system (active polling).

The initialisation does not always work well and sometimes you have to initialize your modem manually using minicom or something like that.

>minicom -s
AT
AT+CPIN?
AT+CPIN="nnn"
AT+CSCA?
AT+CSCA="+32475161616"

+CPIN puts the pin-code in the modem; Be carefull, only 3 tries and then you have to provide the PUK code etc ...

+CSCA sets the service center address

AUTHOR

Johan Van den Brande <johan@vandenbrande.com>