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
- onError
- onReceived
- onMediaStateChange
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();
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);
Event listener is added like this:
//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);
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.lock (gxSMS1.SyncRoot) { gxSMS1.Open(); ... gxSMS1.Close(); }