Skip to main content
Home
for DLMS smart meters

Main navigation

  • Home
  • Products
  • About us
  • Open Source
  • Community
  • Forum
  • Downloads
  • Gurux Club
User account menu
  • Log in

Breadcrumb

  1. Home
  2. Gurux.SMS

Gurux.SMS

gxdn
Profile picture for user Administrator
By Administrator, 24 November, 2015
Gurux SMS Component for C# and Java
View releasesView issues
Join the Gurux Community or follow @Gurux for project updates.

With Gurux.SMS component you can send Short Messages with your mobile phone.

Open Source Gurux SMS media component is a part of GXMedias set of media components, which programming interfaces help you implement communication by chosen connection type. Gurux media components also support the following connection types: Network, Terminal, Serial port.

You can get source codes and examples from http://www.github.com/gurux or if you use Maven add this to your POM-file:

  org.gurux
  gurux.sms
  1.0.3


If you have problems you can ask your questions in Gurux Forum.

Note!
It's important to listen OnError event. Connection might break and it's the only way to get info from it.

Simple example

Before use you must set following settings:
  • PhoneNumber
  • Pin code
  • PortName
  • BaudRate
  • DataBits
  • Parity
  • StopBits

It is also good to add listener to listen following events.

  • onError
  • onReceived
  • onMediaStateChange

  • Java
  • C#
GXSMS cl = new GXSMS();
cl.setPhoneNumber("Phone Number");
cl.setPINCode("PIN Code");
cl.setPortName(gurux.serial.GXSerial.getPortNames()[0]);
cl.setBaudRate(9600);
cl.setDataBits(8);
cl.setParity(Parity.ODD);
cl.setStopBits(StopBits.ONE);
cl.open();
GXSMS cl = new GXSMS();
cl.PhoneNumber = "Phone Number";
cl.setPINCode = "PIN Code";
cl.PortName = Gurux.Serial.GXSerial.GetPortNames()[0];
cl.BaudRate = 9600;
cl.DataBits = 8;
cl.Parity = System.IO.Ports.Parity.Odd;
cl.StopBits = System.IO.Ports.StopBits.One;
cl.Open();

Data is send with send command:

  • Java
  • C#
GXSMSMessage msg = new GXSMSMessage();
msg.setData("Hello World!");
msg.setNumber("Phone Number");
cl.send(msg);
GXSMSMessage msg = new GXSMSMessage();
msg.Data = "Hello World!";
msg.Number = "Phone Number";
cl.Send(msg);

In default mode received data is coming as asynchronously from OnReceived event.
Event listener is added like this:

  • Java
  • C#
//1. Add class that you want to use to listen media events and derive class from IGXMediaListener
*/
 Media listener.
*/
class GXMediaListener implements IGXMediaListener
{
    /** 
    Represents the method that will handle the error event of a Gurux component.
    @param sender The source of the event.
    @param ex An Exception object that contains the event data.
    */
    @Override
    void onError(Object sender, RuntimeException ex)
    {
    }

    /** 
     Media component sends received data through this method.

     @param sender The source of the event.
     @param e Event arguments.
    */
    @Override
    void onReceived(Object sender, ReceiveEventArgs e)
    {

    }

    /** 
     Media component sends notification, when its state changes.
     @param sender The source of the event.    
     @param e Event arguments.
    */
    @Override
    void onMediaStateChange(Object sender, MediaStateEventArgs e)
    {

    }

    /** 
     Called when the Media is sending or receiving data.
     @param sender
     @param e
     @see IGXMedia.Trace
    */
    @Override
    void onTrace(Object sender, TraceEventArgs e)
    {

    }

    // Summary:
    //  Event raised when a property is changed on a component.
    @Override
    void onPropertyChanged(Object sender, PropertyChangedEventArgs e)
    {

    }
}

//2. Listener is registered calling addListener method.
cl.addListener(this);
cl.OnReceived += new ReceivedEventHandler(this.OnReceived);

Data can be also send as syncronous if needed.

  • Java
  • C#
synchronized (cl.getSynchronous())
{
    String reply = "";    
    ReceiveParameters<byte[]> p = new ReceiveParameters<byte[]>(byte[].class);    
    //End of Packet.
    p.setEop('\n'); 
    //How long reply is waited.   
    p.setWaitTime(1000);          
    cl.send("Hello World!", null);
    if (!cl.receive(p))
    {
        throw new RuntimeException("Failed to receive response..");
    }
}
lock (cl.Synchronous)
{
    string reply = "";
    ReceiveParameters<string> p = new ReceiveParameters<string>()
    //ReceiveParameters<byte[]> p = new ReceiveParameters<byte[]>()
    {
       //Wait time tells how long data is waited.
       WaitTime = 1000,
       //Eop tells End Of Packet charachter.
       Eop = '\r'
    };
    cl.Send("Hello World!", null);
    if (cl.Receive(p))
    {
        reply = Convert.ToString(p.Reply);
    }
}

Thread safety

Only c# version from Gurux.SMS is thread safety. It's recommended that component is used only one thread.

  • C#
lock (gxSMS1.SyncRoot)
{
    gxSMS1.Open();
    ...
    gxSMS1.Close();
}

  • Create new account
  • Reset your password

Hire Us!

Latest Releases

Fri, 03/24/2023 - 14:22
gurux.dlms.c 20230324.1
Thu, 03/23/2023 - 11:01
GXDLMSDirector 9.0.2303.2301
Thu, 03/23/2023 - 09:10
Gurux.DLMS.Python 1.0.142
Wed, 03/22/2023 - 13:51
Gurux.DLMS.Net 9.0.2303.2201
Wed, 03/22/2023 - 10:15
gurux.dlms.c 20230322.1

Open bugs

Gurux.DLMS.AMI4
1
Gurux.DLMS.Android
1
gurux.dlms.c
3
gurux.dlms.cpp
3
gurux.dlms.delphi
1
RSS feed
Privacy FAQ GXDN Issues Contact
Follow Gurux on Twitter Follow Gurux on Linkedin