23. Writing SMS
Messages to Memory / Message Storage (AT+CMGW)
The
AT command +CMGW (command name in text: Write Message to Memory) is
used to write an SMS message to memory (i.e. message storage). The
memory/message storage area to which SMS messages are written is
specified by the +CPMS AT command (command line in text: Preferred
Message Storage). Details about the +CPMS AT command can be found in
the earlier section "Preferred
Message Storage (AT+CPMS)" of this SMS tutorial.
23.1. Syntax of the
+CMGW AT Command in SMS Text Mode
In
SMS text mode, the syntax of the +CMGW AT command is: (Optional
parameters are enclosed in square brackets.)
+CMGW[=address[,address_type[,message_status]]]<CR>sms_message_body<Ctrl+z>
Before
we discuss each of the parameters, let's see an example that gives
you some idea of how an actual command line should look like:
AT+CMGW="+85291234567",145,"STO
UNSENT"<CR>This is an example for illustrating the
syntax of the +CMGW AT command in SMS text mode.<Ctrl+z>
The
address Parameter
The
first parameter of the +CMGW AT command, address,
specifies the destination address to send the SMS message to. Usually
it is a mobile number formatted using the typical ISDN / telephony
numbering plan (ITU E.164/E.163). For example, "+85291234567"
and "91234567". Note that the value passed to the address
parameter should be a string, i.e. it should be enclosed in double
quotes.
The
address parameter is optional
and so it can be omitted. Later when you want to send the SMS message
out, you can specify the destination address by the +CMSS
AT command (command name
in text: Send Message from Storage).
The
address_type Parameter
The
second parameter of the +CMGW AT command, address_type,
specifies the type of the address assigned to the address
parameter. Two values are commonly used. They are 129 and 145:
129.
Meaning: The value of address
is formatted using the typical ISDN / telephony numbering plan (ITU
E.164/E.163) but it is not sure whether the value of address
is an international number, a national number or a number of other
types. Example addresses: "85291234567", "91234567".
145.
Meaning: The value of address
is formatted using the typical ISDN / telephony numbering plan (ITU
E.164/E.163) and it is an international number. Example address:
"+85291234567".
As
address_type is an optional parameter, it can be omitted. If
you do so, the GSM/GPRS modem or mobile phone will use the default
value of the address_type parameter, which is:
129
if the value of address
does not start with a "+" character. For example,
"85291234567".
145
if the value of address starts with a "+"
character. For example, "+85291234567".
The
message_status Parameter
The
third parameter of the +CMGW AT command, message_status,
specifies the status of the SMS message to be written. The SMS
specification has defined four status values:
REC
UNREAD. It refers to the
message status "received unread".
REC
READ. It refers to the message
status "received read".
STO
UNSENT. It refers to the message status "stored unsent".
This is the default value.
STO
SENT. It refers to the message status "stored sent".
Note
that the value assigned to the message_status
parameter should be a string. Thus, it should be enclosed in double
quotes.
As
message_status is an
optional parameter, it can be omitted. If you do so, the GSM/GPRS
modem or mobile phone will use the default value of the
message_status
parameter, which is "STO UNSENT".
The
<CR> Character
<CR>,
which represents the carriage return character, follows the
message_status
parameter. When the GSM/GPRS modem or mobile phone receives the
carriage return character, it will send back a prompt formed by these
four characters: the carriage return character, the linefeed
character, the ">" character and the space character. If
you don't understand what this means, don't worry. This should be
clear to you when you see the example in the section "Example
Demonstrating How to Use the +CMGW AT Command to Write SMS Text
Messages to Message Storage in SMS Text Mode".
The
sms_message_body Parameter
The
fourth parameter of the +CMGW AT command, sms_message_body,
specifies the SMS message body to be written to the memory/message
storage area. Entering the <Esc>
character will cancel the +CMGW AT command. If you don't understand
what this means, see the example in the section "Example
Demonstrating How to Use the +CMGW AT Command to Write SMS Text
Messages to Message Storage in SMS Text Mode".
The
<Ctrl+z> Character
When
you finish entering the SMS message body, you have to enter the
<Ctrl+z>
character to mark the end of the SMS message body. The GSM/GPRS modem
or mobile phone will then attempt to write the SMS message to the
memory/message storage area.
23.2. SMSC Number
Stored with the SMS Message (SMS Text Mode)
In
SMS text mode, the +CMGW AT command does not have a parameter that
allows you to specify an SMSC number. (Note that the +CMGW AT command
does have such parameter when the GSM/GPRS modem or mobile phone is
operating in SMS PDU mode.) However, when an SMS message is written
to message storage, an SMSC number is actually stored with it. The
SMSC number stored is the one specified by the +CSCA
AT command (command name in text: Service Centre Address). Later
if you send the SMS message, it will be transmitted through this
SMSC. Once an SMS message has been written to message storage, it is
not possible to change the SMSC number stored with the SMS message by
using AT commands.
Note
that it is possible that the command behavior on your mobile device
is slightly different from what was described above.
More
information about this issue is available in the "SMSC
Number to be Used by the +CMSS AT Command to Send SMS Messages"
section of this SMS tutorial.
23.3. Format of the
Information Response of the +CMGW AT Command in SMS Text Mode
If
the GSM/GPRS modem or mobile phone writes the SMS message to the
message storage area successfully, it will return an information
response to the computer / PC. In SMS text mode, the information
response of the +CMGW AT command has the following format:
+CMGW:
index
index
is an integer that tells us the memory location to which the SMS
message was written in the message storage area.
Feedback Form (ExpandCollapse)
|
|