This is usually due to some message that SMSLib cannot read, like mms, 
vcards, etc.
Check if there are any such messages in your modem's memory.

On Sunday, July 1, 2012 2:02:55 PM UTC+3, Sandaru wrote:
>
>
>
> im using sample codes for configure the smslib.. sending sms is ok but the 
> problem is receiving sms.. it always generating following exception....
>
> test 01
> Example: Read messages from a serial gsm modem.
> SMSLib: A Java API library for sending and receiving SMS via a GSM modem 
> or other supported gateways.
> This software is distributed under the terms of the Apache v2.0 License.
> Web Site: http://smslib.org
> Version: 3.5.2
> log4j:WARN No appenders could be found for logger (smslib).
> log4j:WARN Please initialize the log4j system properly.
> log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for 
> more info.
> >>> Gateway Status change for sandaru, OLD: STOPPED -> NEW: STARTING
> >>> Gateway Status change for sandaru, OLD: STARTING -> NEW: STARTED
>
> Modem Information:
>   Manufacturer: ZTE CORPORATION
>   Model: MF100
>   Serial No: 353164042495652
>   SIM IMSI: ** MASKED **
>   Signal Level: -91 dBm
>   Battery Level: 100%
>
> count >>>>>>>>>>>>>>> 0
> java.lang.StringIndexOutOfBoundsException: String index out of range: 
> -12String index out of range: -12
>
>     at java.lang.String.substring(String.java:1938)
>     at org.smslib.modem.ModemGateway.readMessagesPDU(ModemGateway.java:545)
>     at org.smslib.modem.ModemGateway.readMessages(ModemGateway.java:210)
>     at org.smslib.Service.readMessages(Service.java:500)
>     at org.smslib.Service.readMessages(Service.java:388)
>     at org.smslib.Service.readMessages(Service.java:411)
>     at messenger.ReadMessage.doIt(ReadMessage.java:102)
>     at messenger.ReadMessage.main(ReadMessage.java:165)
> >>> Gateway Status change for sandaru, OLD: STARTED -> NEW: STOPPING
> >>> Gateway Status change for sandaru, OLD: STOPPING -> NEW: STOPPED
> test 01
>
>
> what is the reason for this im university student and im doing my project 
> with this i need immediate help pls.......... refer the following 
> codes... those are the codes changed by my self
>
>
> package messenger;
>
> import java.util.ArrayList;
> import java.util.List;
> import javax.crypto.spec.SecretKeySpec;
> import org.smslib.AGateway;
> import org.smslib.AGateway.GatewayStatuses;
> import org.smslib.AGateway.Protocols;
> import org.smslib.ICallNotification;
> import org.smslib.IGatewayStatusNotification;
> import org.smslib.IInboundMessageNotification;
> import org.smslib.IOrphanedMessageNotification;
> import org.smslib.InboundMessage;
> import org.smslib.InboundMessage.MessageClasses;
> import org.smslib.Library;
> import org.smslib.Message.MessageTypes;
> import org.smslib.Service;
> import org.smslib.crypto.AESKey;
> import org.smslib.modem.SerialModemGateway;
>
> public class ReadMessage
> {
>     public void doIt() throws Exception
>     {
>         
>         // Define a list which will hold the read messages.
>         List<InboundMessage> msgList;
>         // Create the notification callback method for inbound & status 
> report
>         // messages.
>         InboundNotification inboundNotification = new 
> InboundNotification();
>         // Create the notification callback method for inbound voice calls.
>         CallNotification callNotification = new CallNotification();
>         //Create the notification callback method for gateway statuses.
>         GatewayStatusNotification statusNotification = new 
> GatewayStatusNotification();
>         OrphanedMessageNotification orphanedMessageNotification = new 
> OrphanedMessageNotification();
>         try
>         {
>             System.out.println("Example: Read messages from a serial gsm 
> modem.");
>             System.out.println(Library.getLibraryDescription());
>             System.out.println("Version: " + Library.getLibraryVersion());
>             // Create the Gateway representing the serial GSM modem.
>             SerialModemGateway gateway = new 
> SerialModemGateway("sandaru","COM4",115200,"zte","MF100");
>             // Set the modem protocol to PDU (alternative is TEXT). PDU is 
> the default, anyway...
>             gateway.setProtocol(Protocols.PDU);
>             // Do we want the Gateway to be used for Inbound messages?
>             gateway.setInbound(true);
>             // Do we want the Gateway to be used for Outbound messages?
>             gateway.setOutbound(true);
>             // Let SMSLib know which is the SIM PIN.
>             gateway.setSimPin("0000");
>             // Set up the notification methods.
>            
>  Service.getInstance().setInboundMessageNotification(inboundNotification);
>             Service.getInstance().setCallNotification(callNotification);
>            
>  Service.getInstance().setGatewayStatusNotification(statusNotification);
>            
>  
> Service.getInstance().setOrphanedMessageNotification(orphanedMessageNotification);
>             // Add the Gateway to the Service object.
>             Service.getInstance().addGateway(gateway);
>             // Similarly, you may define as many Gateway objects, 
> representing
>             // various GSM modems, add them in the Service object and 
> control all of them.
>             // Start! (i.e. connect to all defined Gateways)
>             Service.getInstance().startService();
>             // Printout some general information about the modem.
>             System.out.println();
>             System.out.println("Modem Information:");
>             System.out.println("  Manufacturer: " + 
> gateway.getManufacturer());
>             System.out.println("  Model: " + gateway.getModel());
>             System.out.println("  Serial No: " + gateway.getSerialNo());
>             System.out.println("  SIM IMSI: " + gateway.getImsi());
>             System.out.println("  Signal Level: " + 
> gateway.getSignalLevel() + " dBm");
>             System.out.println("  Battery Level: " + 
> gateway.getBatteryLevel() + "%");
>             System.out.println();
>             // In case you work with encrypted messages, its a good time 
> to declare your keys.
>             // Create a new AES Key with a known key value. 
>             // Register it in KeyManager in order to keep it active. 
> SMSLib will then automatically
>             // encrypt / decrypt all messages send to / received from this 
> number.
>            
>  Service.getInstance().getKeyManager().registerKey("+94714969763", new 
> AESKey(new SecretKeySpec("0011223344556677".getBytes(), "AES")));
>             
>             // Read Messages. The reading is done via the Service object 
> and
>             // affects all Gateway objects defined. This can also be more 
> directed to a specific
>             // Gateway - look the JavaDocs for information on the Service 
> method calls.
>             msgList = new ArrayList<InboundMessage>();
>             System.out.println("count >>>>>>>>>>>>>>> 
> "+Service.getInstance().getInboundMessageCount());
>             
> Service.getInstance().readMessages(msgList,MessageClasses.UNREAD);//ERROR>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<
> //I think Error is in here
>             for (InboundMessage msg : msgList)
>                 System.out.println(msg);
>             // Sleep now. Emulate real world situation and give a chance 
> to the notifications
>             // methods to be called in the event of message or voice call 
> reception.
>             System.out.println("Now Sleeping - Hit <enter> to stop 
> service.");
>             System.in.read();
>             System.in.read();
>         }
>         catch (Exception e)
>         {
>             System.out.println(e.getMessage());
>             e.printStackTrace();
>         }
>         finally
>         {
>             Service.getInstance().stopService();
>         }
>     }
>
>     public class InboundNotification implements IInboundMessageNotification
>     {
>         public void process(AGateway gateway, MessageTypes msgType, 
> InboundMessage msg)
>         {
>             if (msgType == MessageTypes.INBOUND) System.out.println(">>> 
> New Inbound message detected from Gateway: " + gateway.getGatewayId());
>             else if (msgType == MessageTypes.STATUSREPORT) 
> System.out.println(">>> New Inbound Status Report message detected from 
> Gateway: " + gateway.getGatewayId());
>             System.out.println(msg);
>         }
>     }
>
>     public class CallNotification implements ICallNotification
>     {
>         public void process(AGateway gateway, String callerId)
>         {
>             System.out.println(">>> New call detected from Gateway: " + 
> gateway.getGatewayId() + " : " + callerId);
>         }
>     }
>
>     public class GatewayStatusNotification implements 
> IGatewayStatusNotification
>     {
>         public void process(AGateway gateway, GatewayStatuses oldStatus, 
> GatewayStatuses newStatus)
>         {
>             System.out.println(">>> Gateway Status change for " + 
> gateway.getGatewayId() + ", OLD: " + oldStatus + " -> NEW: " + newStatus);
>         }
>     }
>
>     public class OrphanedMessageNotification implements 
> IOrphanedMessageNotification
>     {
>         public boolean process(AGateway gateway, InboundMessage msg)
>         {
>             System.out.println(">>> Orphaned message part detected from " 
> + gateway.getGatewayId());
>             System.out.println(msg);
>             // Since we are just testing, return FALSE and keep the 
> orphaned message part.
>             return false;
>         }
>     }
>
>     public static void main(String args[])
>     {
>         ReadMessage app = new ReadMessage();
>         try
>         {
>             System.out.println("test 01");
>             app.doIt();
>             System.out.println("test 01");
>         }
>         catch (Exception e)
>         {
>             e.printStackTrace();
>         }
>     }
> }
>  

-- 
You received this message because you are subscribed to the Google Groups 
"SMSLib Discussion Group" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/smslib/-/D_NTOh2ODVcJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/smslib?hl=en.

Reply via email to