EMS stands for Enhance Message Services. EMS messages are just SMS messages with a twist.
EMS messages make use of the User Data Header to add some meta data to the SMS message being sent. This meta data is separate from the actual text and devices that don’t understand some or any of the EMS features will easily skip over them and just render the text.
The uses of EMS are many:
So far I’ve show how to send a text message in PDU mode. There is nothing special about this. There are a number of things you can do in PDU mode, that you can’t do in text mode.
A first example is a flash SMS message.
A flash SMS message is an SMS message that, instead of being stored in the SIM or memory of the receiving phone, pops-up on the receiving phone’s screen, without the user taking any action. When dismissed the message is usually gone.
Here is an example AT command to send a flash SMS message in PDU mode:
Here is what the individual octets represent:
As discussed in an earlier post, you can connect to a GSM modem and use AT commands to send SMS messages. There are 2 possible methods: text mode and PDU mode.
It turns out that most devices support PDU mode, but only a few support text mode.
Here is an example AT command to submit a PDU:
As explained before the size (24) is the number of octets in the PDU. he PDU itself is passed as a hex representation of those octets (48 characters). Here is what the individual octets represent:
PDU mode is a lot more interesting than text mode. There are all kinds of things that can be done with SMS messages, all leveraging special formatting that is only available if you use PDU mode:
The formatting of these PDU’s is a little more complicated and requires some bit manipulations that are hard to do by hand.
The GSM modem is put into PDU mode with the command ‘AT+CMGF=0’. Once in PDU mode a PDU can be sent using the ‘AT+CMGS’ command:
As explained in a prevous post in this series, a GSM modem can let you send SMS messages from a PC. There are two basic ways to do this: text mode and PDU mode.
You can play around with your GSM modem using a terminal program like HyperTerminal (which came with Windows XP, but is no longer there in Windows Vista). The commands I mention can just be entered in the terminal window when connected to the modem. You can try the following basic commands, any modem should support these:
||Returns general modem identification
||Dials the phone number you supplied (don’t enter the <> brackets)
||Hang-up the phone (useful after the previous command).
The following commands are specific for GSM modems. If you get an error response (e.g. ‘+ERR’), your modem probably isn’t a GSM modem or it doesn’t support the extensions specific for GSM modems. Read More…
Sending an SMS from a PC to a GSM phone can be done in many ways.
The first method I discuss requires a GSM phone attached to your PC.
The GSM phone (or GMS card) can be connected to your PC in different ways; using BlueTooth, infrared (IrDA) or a serial cable. The way the phone is connected is irrelevant, what counts is that the GSM is available as a modem. On windows PCs this means that it will be available as a TAPI modem.
Programs make modems do things by sending them so called AT commands. E.g.
ATD5551234 makes the modem dial a connection to the number 5551234.
ATA makes the modem answer an incoming call. All your modem’s features are available using commands like these.