23.4. Example Demonstrating How to Use the +CMGW AT Command to Write SMS Text Messages to Message Storage in SMS Text Mode
Now let's see a more detailed example that demonstrates how to use the +CMGW AT command to write SMS text messages to message storage in SMS text mode and how the +CMGW AT command should be used together with other AT commands.
Instructing the GSM/GPRS Modem or Mobile Phone to Operate in SMS Text Mode
First, enter the command line "AT+CMGF=1" in a terminal program (for example, HyperTerminal in Microsoft Windows) to instruct the GSM/GPRS modem or mobile phone to operate in SMS text mode. This step is necessary because the default mode is SMS PDU mode. Below shows the response returned from Nokia 6021 to HyperTerminal after the execution of the command line "AT+CMGF=1":
AT+CMGF=1
OK
The final result code OK indicates the +CMGF AT command was executed successfully. If the final result code ERROR is returned, it is likely that the GSM/GPRS modem or mobile phone does not support SMS text mode. To check whether the GSM/GPRS modem or mobile phone supports SMS text mode, enter the command line "AT+CMGF=?" in the terminal program. Here is the response returned from Nokia 6021 to HyperTerminal:
AT+CMGF=?
+CMGF:
(0,1)
OK
The values in the parentheses indicate the modes that the GSM/GPRS modem or mobile phone can operate in. The value 0 represents SMS PDU mode and the value 1 represents SMS text mode. From the above response, we know that Nokia 6021 can operate in either SMS PDU mode or SMS text mode. See the section titled "Selecting the Operating Mode (AT+CMGF)" of this SMS tutorial if you want to learn further details about the +CMGF AT command.
Selecting the Message Storage Area to Write SMS Text Messages to
Second, use the AT command +CPMS (command name in text: Preferred Message Storage) to select the message storage area to write SMS text messages to. For example, to instruct the GSM/GPRS modem or mobile phone to use the message storage area in the SIM card for the AT command +CMGW, assign the string value "SM" to the second parameter of the +CPMS AT command, like this:
AT+CPMS="ME","SM"
The first parameter of the +CPMS AT command is used to select the message storage area for reading and deleting SMS messages. It has no use to us here. So, it does not matter what value is assigned to the first parameter.
Now press the Enter key on the keyboard and you should see something similar to this:
AT+CPMS="ME","SM"
+CPMS:
2,150,2,10,4,160
OK
Detailed information about the +CPMS AT command is available in the earlier section "Preferred Message Storage (AT+CPMS)" of this SMS tutorial.
Setting the SMSC Number to be Stored with the SMS Text Message
Third, use the AT command +CSCA (command name in text: Service Centre Address) to set the SMSC number to be stored with the SMS text message. Later if you send the SMS text message, it will be transmitted via the SMSC at this number. Usually the default setting is correct and you do not need to make any changes. Below demonstrates how to use the +CSCA AT command to set "+85290000000" as the SMSC number:
AT+CSCA="+85290000000"
OK
Detailed information about the +CSCA AT command can be found in the "Setting or Reading the Service Center Address / SMSC Address (AT+CSCA)" section of this SMS tutorial.
Writing Text Messages
Fourth, you can now use the +CMGW AT command to write a text message to the message storage area. Suppose you want the destination mobile phone number to be +85291234567 and the message status to be "stored unsent", you should enter something like this in the terminal program:
AT+CMGW="+85291234567",145,"STO UNSENT"
Then, press the Enter key of the keyboard to send a carriage return character to the GSM/GPRS modem or mobile phone. The GSM/GPRS modem or mobile phone will send back a prompt formed by four characters. They are the carriage return character, the linefeed character, the ">" character and the space character. If all characters are to be displayed, the characters you have sent to and received from the GSM/GPRS modem or mobile phone so far are:
AT+CMGW="+85291234567",145,"STO
UNSENT"<CR>
<CR><LF>><Space>
However, the carriage return character and linefeed character have special meanings to a terminal program. When a terminal program sees a carriage return character, it moves the cursor to the beginning of the current line. When it sees a linefeed character, it moves the cursor to the same position on the next line. So, here is what you will actually see in a terminal program such as HyperTerminal:
AT+CMGW="+85291234567",145,"STO
UNSENT"
>
If you want to cancel the write command at this point, press the Esc key on the keyboard. The GSM/GPRS modem or mobile phone will then return the OK final result code. Here shows the response returned from Nokia 6021:
AT+CMGW="+85291234567",145,"STO
UNSENT"
>
OK
Some mobile devices return a slightly different response. One example is Philips 598:
AT+CMGW="+85291234567",145,"STO
UNSENT"
>
OK
If you do not want to cancel the write command, enter the body of the SMS text message that you want to write to the message storage area. Press Enter on the keyboard if you want to start a new line. When finished, press Ctrl+z on the keyboard. The GSM/GPRS modem or mobile phone then attempts to write the text message to the message storage area and returns a response to the computer / PC. Suppose the SMS text message is "It is easy to write text messages.". Below shows what you should see in a terminal program:
AT+CMGW="+85291234567",145,"STO
UNSENT"
> It is easy to write text messages.
+CMGW:
3
OK
The value in the information response is the index that indicates the location where the SMS text message is stored in the message storage area. In the above example, the information response tells us that the SMS text message "It is easy to write text messages." has been written to the memory location at index 3.
The final result code OK tells us the execution of the +CMGW AT command is successful. If it fails, the GSM/GPRS modem or mobile phone will return either the final result code ERROR or +CMS ERROR. For example, if the message storage area is out of storage space, the GSM/GPRS modem or mobile phone will return +CMS error 322, like this:
AT+CMGW="+85291234567",145,"STO
UNSENT"
> It is easy to write text messages.
+CMS
ERROR: 322
Previous Page | Page 40 of 65 | Next Page |
- 1. Introduction to SMS Messaging
- 2. What Makes SMS Messaging So Successful Worldwide?
- 3. Example Applications of SMS Messaging
- 4. What is an SMS Center / SMSC?
- 5. Basic Concepts of SMS Technology
- 6. Intra-operator SMS Messages
- 7. Inter-operator SMS Messages
- 8. International SMS Messages
- 9. What is an SMS Gateway?
- 10. How to Send SMS Messages from a Computer / PC?
- 11. How to Receive SMS Messages Using a Computer / PC?
- 12. Introduction to GSM / GPRS Wireless Modems
- 13. How to Use Microsoft HyperTerminal to Send AT Commands to a Mobile Phone or GSM/GPRS Modem?
- 14. Introduction to AT Commands
- 15. General Syntax of Extended AT Commands
- 16. Result Codes of AT Commands
- 17. AT Command Operations: Test, Set, Read and Execution
- 18. Testing the Communication between the PC and GSM/GPRS Modem or Mobile Phone
- 19. Checking if the GSM/GPRS Modem or Mobile Phone Supports the Use of AT Commands to Send, Receive and Read SMS Messages
- 20. Operating Mode: SMS Text Mode and SMS PDU Mode
- 21. Setting or Reading the Service Center Address / SMSC Address (AT+CSCA)
- 22. Preferred Message Storage (AT+CPMS)
- 23. Writing SMS Messages to Memory / Message Storage (AT+CMGW)
- 24. Deleting SMS Messages from Message Storage (AT+CMGD)
- 25. Sending SMS Messages from a Computer / PC Using AT Commands (AT+CMGS, AT+CMSS)
- 26. Reading SMS Messages from a Message Storage Area Using AT Commands (AT+CMGR, AT+CMGL)
- 27. Appendix A: How to Choose an SMS Service Provider (SMS Gateway Provider, SMS Reseller, SMS Broker)?
- 28. Appendix B: Comparison Table of SMS Service Providers (SMS Gateway Providers, SMS Resellers, SMS Brokers)
- 29. Appendix C: Free Software/Tools and Libraries for Sending and Receiving SMS Messages with a Computer / PC
- 30. Appendix D: GSM 7-bit Default Alphabet Table (with Character Codes of ISO 8859 Latin 1)