WWW Codeproject Com
WWW Codeproject Com
WWW Codeproject Com
Sign in
home help
articles
quick answers
discussions
features
community
Search fo r articles, qu estio n s, tip s
Next
Article Browse Code Stats Revisions Alternatives Comments & Discussions (907)
About Article
SMS Client - Server Software is used for sending, reading, deleting messages. It uses GSM modem for sending SMS. It listens for incoming messages to arrive, processes the read message and takes action accordingly. This SMS software requires GSMComm Library which you can also download. Type Licence First Posted Views Downloads Article Apache 10 Sep 2007 2,010,779 51,604
Sign Up to vote
Tweet 1
Top News
Tim Cook slams Android, citing low usage
Introduction
SMS client and server is an application software which is used for sending and receiving messages(SMS). It listens for incoming messages to arrive, processes the message if it's in a valid format. Note the processing of arrived messages depends on the application which will be discussed later. I am going to explain the following things: 1. 2. 3. 4. 5. Communication Port Settings Receive Incoming Message Send Messages Read All Messages (Sent by the users) Delete Messages (One or All)
Related Videos
I have used the GSMComm Library for Sending and Receiving SMS. You require a GSM modem or phone for sending an SMS.
public class CommSetting { public static int Comm_Port=0; public static Int64 Comm_BaudRate=0; public static Int64 Comm_TimeOut=0; public static GsmCommMain comm; public CommSetting() { // // TODO: Add constructor logic here // } }
Comm is an object of type GsmCommMain which is required for sending and receiving messages. We have to set the Comm port, Baud rate and time out for our comm object of type GsmCommMain. Then try to open
with the above settings. We can test the Comm port settings by clicking on the Test button after selecting the Comm port, baud rate and Time out. Sometimes if the comm port is unable to open, you will get a
converted by Web2PDFConvert.com
message "No phone connected". This is mainly due to Baud rate settings. Change the baud rate and check again by clicking the Test button until you get a message "Successfully connected to the phone." Before creating a GSMComm object with settings, we need to validate the port number, baud rate and Timeout. The EnterNewSettings() does validation, returns true if valid, and will invoke SetData(port,baud,timeout) for comm setting. The following block of code will try to connect. If any problem occurs "Phone not connected" message appears and you can either retry by clicking on the Retry button or else Cancel.
Co llap se | Co p y Co de
on Windows mobile Server pinger and SMS reporter via GSM Modem AT COMMAND Serial Communication in C# How to send SMS using Java with a HSDPA Dongle. Using VB.NET to Decode PDU string
GsmCommMain comm = new GsmCommMain(port, baudRate, timeout); try { comm.Open(); while (!comm.IsConnected()) { Cursor.Current = Cursors.Default; if (MessageBox.Show(this, "No phone connected.", "Connection setup", MessageBoxButtons.RetryCancel, MessageBoxIcon.Exclamation) == DialogResult.Cancel) { comm.Close(); return; } Cursor.Current = Cursors.WaitCursor; } // Close Comm port connection (Since it's just for testing // connection) comm.Close(); } catch(Exception ex) { MessageBox.Show(this, "Connection error: " + ex.Message, "Connection setup", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } // display message if connection is a success. MessageBox.Show(this, "Successfully connected to the phone.", "Connection setup", MessageBoxButtons.OK, MessageBoxIcon.Information);
private void MessageReceived() { Cursor.Current = Cursors.WaitCursor; string storage = GetMessageStorage(); DecodedShortMessage[] messages = CommSetting.comm.ReadMessages (PhoneMessageStatus.ReceivedUnread, storage); foreach(DecodedShortMessage message in messages) { Output(string.Format("Message status = {0}, Location = {1}/{2}", StatusToString(message.Status), message.Storage, message.Index)); ShowMessage(message.Data); Output(""); } Output(string.Format("{0,9} messages read.", messages.Length.ToString())); Output(""); }
The above code will read all unread messages from SIM memory. The method ShowMessage is used for displaying the read message. The message may be a status report, stored message sent/un sent, or a received message.
3) Send Message
converted by Web2PDFConvert.com
You can send an SMS by keying in the destination phone number and text message. If you want to send a message in your native language (Unicode), you need to check in Send as Unicode(UCS2). GSMComm object comm has a SendMessage method which will be used for sending SMS to any phone. Create a PDU for sending messages. We can create a PDU in straight forward version as:
Co llap se | Co p y Co de
An extended version of PDU is used when you are sending a message in Unicode.
Co llap se | Co p y Co de
try { // Send an SMS message SmsSubmitPdu pdu; bool alert = chkAlert.Checked; bool unicode = chkUnicode.Checked; if (!alert && !unicode) { // The straightforward version pdu = new SmsSubmitPdu (txt_message.Text, txt_destination_numbers.Text,""); } else { // The extended version with dcs byte dcs; if (!alert && unicode) dcs = DataCodingScheme.NoClass_16Bit; else if (alert && !unicode) dcs = DataCodingScheme.Class0_7Bit; else if (alert && unicode) dcs = DataCodingScheme.Class0_16Bit; else dcs = DataCodingScheme.NoClass_7Bit; pdu = new SmsSubmitPdu (txt_message.Text, txt_destination_numbers.Text, "", dcs); } // Send the same message multiple times if this is set int times = chkMultipleTimes.Checked ? int.Parse(txtSendTimes.Text) : 1; // Send the message the specified number of times for (int i=0;i<times;i++) { CommSetting.comm.SendMessage(pdu); Output("Message {0} of {1} sent.", i+1, times); Output(""); } } catch(Exception ex) { MessageBox.Show(ex.Message); } Cursor.Current = Cursors.Default;
converted by Web2PDFConvert.com
You can read all messages from the phone memory of SIM memory. Just click on "Read All Messages" button. The message details such as sender, date-time, text message will be displayed on the Data Grid. Create a new row for each read message, add to Data table and assign the Data table to datagrid's source
Co llap se | Co p y Co de
private void BindGrid(SmsPdu pdu) { DataRow dr=dt.NewRow(); SmsDeliverPdu data = (SmsDeliverPdu)pdu; dr[0]=data.OriginatingAddress.ToString(); dr[1]=data.SCTimestamp.ToString(); dr[2]=data.UserDataText; dt.Rows.Add(dr); dataGrid1.DataSource=dt; }
The above code will read all unread messages from SIM memory. The method ShowMessage is used for displaying the read message. The message may be a status report, stored message sent/un sent, or a received message. The only change in processing Received message and Read message is the first parameter.
All messages which are sent by the users will be stored in SIM memory and we are going to display them in the Data grid. We can delete a single message by specifying the message index number. We can delete all messages from SIM memory by clicking on "Delete All" button. Messages are deleted based on the index. Every message will be stored in memory with a unique index. The following code will delete a message based on index:
Co llap se | Co p y Co de
// Delete the message with the specified index from storage CommSetting.comm.DeleteMessage(index, storage);
converted by Web2PDFConvert.com
Applications
Here are some interesting applications where you can use and modify this software.
2) Astrology
You can implement as astrology software. The user will send an SMS with his zodiac sign. The SMS server will maintain an Astrology Database with zodiac sign and a text description which contains a message for the day. The Database is required to be updated daily for all zodiac signs. Message Format which will be used by the user to get message of the day:
Zodiac Sign
Conclusion
This project wouldn't be completed unless I thank the GSMComm Lib developer "Stefan Mayr". I customized my application using this Library. You can download the sample project, library from the web link which I provided under the Reference section.
Reference
http://www.scampers.org/steve/sms/index.htm
License
This article, along with any associated source code and files, is licensed under The Apache License, Version 2.0
Profile Around 8 years of professional software development experience in analysis, design, development, testing and implementation of enterprise web applications for healthcare domain with good exposure to object-oriented design, software architectures, design patterns, test-driven development and agile practices. In Brief Analyse and create High Level , Detailed Design documents. Use UML Modelling and create Use Cases , Class Diagram , Component Model , Deployment Diagram, Sequence Diagram in HLD. Area of Working : Dedicated to Microsoft .NET Technologies
converted by Web2PDFConvert.com
Experience with : C# , J2EE , J2ME, Windows Phone 8, Windows Store App Proficient in: C# , XML , XHTML, XML, HTML5, Javascript, Jquery, CSS, SQL, LINQ Software Development Database: Microsoft SQL Server, FoxPro Development Frameworks: Microsoft .NET 1.1, 2.0, 3.5, 4.5 UI: Windows Forms, Windows Presentation Foundation, ASP.NET Web Forms and ASP.NET MVC3, MVC4 Coding: WinForm , Web Development, Windows Phone, WinRT Programming Healthcare Domain Experience CCD, CCR, QRDA, HIE, HL7 V3, Healthcare Interoperability Others: TTD, BDD Education B.E (Computer Science) CodeProject Contest So Far: 1. Windows Azure Developer Contest - HealthReunion - A Windows Azure based healthcare product , link - http://www.codeproject.com/Articles/582535/HealthReunion-A-Windows-Azurebased-healthcare-pro 2. DnB Developer Contest - DNB Business Lookup and Analytics , link http://www.codeproject.com/Articles/618344/DNB-Business-Lookup-and-Analytics 3. Intel Ultrabook Contest - Journey from development, code signing to publishing my App to Intel AppUp , link - http://www.codeproject.com/Articles/517482/Journey-from-developmentcode-signing-to-publishin Article Top
Message service error 500 occurred - Error Pin make a voice call with dongle comment Re: comment Re: comment Error vb.net error message service error 331 CMS error 500
Last Visit: 31-Dec-99 18:00 Last Update: 3-Oct-13 7:21 General News Suggestion Question Bug
ahmadomar dushman40 Member 10220821 Ranjan.D Member 10220821 Ravi Kumar almofi KanavKathuria SoftMise Le@rner Refresh Answer
29-Sep-13 1:54 5-Sep-13 3:16 31-Aug-13 23:47 2-Sep-13 0:43 2-Sep-13 1:16 12-Aug-13 2:01 28-Jul-13 7:12 11-Jul-13 21:55 7-Jul-13 5:38 2-May-13 1:45
Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.
Permalin k | Advertise | Privacy | Mo b ile W eb 02 | 2.6.1309030.1 | Last U p dated 10 Sep 2007 Layo u t: fixed | flu id Article Co p yrigh t 2007 b y Ran jan .D Ever yth in g else Co p yrigh t Co dePro ject, 1999-2013 Terms o f U se
converted by Web2PDFConvert.com