Using AT commands to send and read SMS
Article Metadata
Contents |
Introduction
This article discusses how to use AT commands to send and receive SMS. It can be used to create a PC application that send SMS from the phone. This kind of application is useful, for example, in automating test cases related to SMS.
Note that not all phones support all SMS AT commands. For example, some phones may support send command only and not support read command. See also links at the end of this article to find more about AT commands, including complete list of SMS AT commands on Nokia's GSM and WCDMA products.
Message Format
There are basically two modes to work with SMS, i.e.:
- PDU (Protocol Data Unit)
- Text mode.
A mobile phone internally uses PDU format. Developers normally uses text mode because it is easier to use. AT+CMGF is the command to set the mode.
AT+CMGF=0
sets the format to PDU mode.
AT+CMGF=1
sets the format to text mode.
AT+CMGF?
queries the current format.
Sending SMS
Although you can send SMS in PDU or text mode, it is easier to use text mode to type the message.
The following commands change the message format to text mode and send a text message.
AT+CMGF=1
OK
AT+CMGS="7789952010"
> Hello World�<Ctrl>+<Z>
+CMGS: 44
OK
Note that <Ctrl>+<Z> has to be entered at the end of message to send the message.
Reading SMS
Use the following command to read the list of all messages on the phone:
AT+CMGL="ALL"
+CMGL: 123,"REC READ","+123456789"
Hello World
OK
Use the following command to read a message with has index of 123:
AT+CMGR=123
+CMGR: "REC READ","+17789975545","08/09/05,17:46:49-12"
Hello World
OK



Wheateus - Help
Hi, I'm doing a similar project using a GSM modem to send a text message. The problem is that I have written the correct commands in HyperTerminal but I now wish to convert them directly to a ASCII code so that I can send it from an IC, can you provide any assistance. Wheateus
PS My code is similar to yours with little difference so that you have an idea of what I'm programming.Wheateus 14:57, 17 September 2011 (EEST)
Hamishwillee - @Wheateus - suggest you try the discussion boards
The article was written in 2008 and the author may not be monitoring it. Posting a query on the discussion board is more likely to get the right people to help you. If you discover an error in this article as a result of your discussion then it would be great if you could come back and udpate the article.hamishwillee 04:55, 21 September 2011 (EEST)