I think this it is closely related to this thread (the last posted message):

http://groups.google.com/group/smslib/browse_thread/thread/9b1c1264e2ed53cb

2010/3/19 Moderator <[email protected]>

> Hi Lovely people,
>
> I am using Huawei E160 modem to test the sample program included in
> smslib project.
> While running ReadMessages.java whose code is below, I can read the
> messages already stored in the simcard of the modem with no error,
> but when a new incoming message arrives, the following error occurs
>
> 65406 [SMSLib-AsyncMessageProcessor : modem.com1] ERROR smslib - GTW:
> modem.com1: Unhandled SMS in inbox, skipping...
> java.lang.NumberFormatException: For input string: "+C"
>        at
> java.lang.NumberFormatException.forInputString(NumberFormatException.java:
> 48)
>        at java.lang.Integer.parseInt(Integer.java:447)
>        at
> org.ajwcc.pduUtils.gsm3040.PduUtils.pduToBytes(PduUtils.java:1009)
>        at
> org.ajwcc.pduUtils.gsm3040.PduParser.parsePdu(PduParser.java:169)
>        at
> org.smslib.modem.ModemGateway.readMessagesPDU(ModemGateway.java:552)
>        at
> org.smslib.modem.ModemGateway.readMessages(ModemGateway.java:207)
>        at org.smslib.modem.AModemDriver
> $AsyncMessageProcessor.run(AModemDriver.java:858)
> 65406 [SMSLib-AsyncMessageProcessor : modem.com1] ERROR smslib - GTW:
> modem.com1: ERROR PDU: +CMGL: 0,1,,30
> Exception in thread "SMSLib-AsyncMessageProcessor : modem.com1"
> java.lang.StringIndexOutOfBoundsException: String index out of range:
> -1
>        at java.lang.String.substring(String.java:1938)
>        at
> org.smslib.modem.ModemGateway.readMessagesPDU(ModemGateway.java:539)
>        at
> org.smslib.modem.ModemGateway.readMessages(ModemGateway.java:207)
>        at org.smslib.modem.AModemDriver
> $AsyncMessageProcessor.run(AModemDriver.java:858)
>
> here is the java class
>
> // ReadMessages.java - Sample application.
> //
> // This application shows you the basic procedure needed for reading
> // SMS messages from your GSM modem, in synchronous mode.
> //
> // Operation description:
> // The application setup the necessary objects and connects to the
> phone.
> // As a first step, it reads all messages found in the phone.
> // Then, it goes to sleep, allowing the asynchronous callback handlers
> to
> // be called. Furthermore, for callback demonstration purposes, it
> responds
> // to each received message with a "Got It!" reply.
> //
> // Tasks:
> // 1) Setup Service object.
> // 2) Setup one or more Gateway objects.
> // 3) Attach Gateway objects to Service object.
> // 4) Setup callback notifications.
> // 5) Run
>
>
> import java.util.ArrayList;
> import java.util.List;
> import javax.crypto.spec.SecretKeySpec;
> import org.smslib.ICallNotification;
> import org.smslib.IGatewayStatusNotification;
> import org.smslib.IInboundMessageNotification;
> import org.smslib.IOrphanedMessageNotification;
> import org.smslib.InboundMessage;
> import org.smslib.Library;
> import org.smslib.Service;
> import org.smslib.AGateway.GatewayStatuses;
> import org.smslib.AGateway.Protocols;
> import org.smslib.InboundMessage.MessageClasses;
> import org.smslib.Message.MessageTypes;
> import org.smslib.crypto.AESKey;
> import org.smslib.modem.SerialModemGateway;
>
> public class ReadMessages
> {
>        Service srv;
>
>        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 new Service object - the parent of all and
> the main
> interface
>                        // to you.
>                        this.srv = new Service();
>                         System.out.println("1");
>                        // Create the Gateway representing the serial GSM
> modem.
>                        SerialModemGateway gateway = new
> SerialModemGateway("modem.com1",
> "COM7", 115200, "Huawei", "E160");
>
> gateway.getATHandler().setStorageLocations("SMMTME");
>                        // 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);
>                        System.out.println("2");
>                        // Let SMSLib know which is the SIM PIN.
>                        //gateway.setSimPin("0000");
>
>                        // Set up the notification methods.
>
>  this.srv.setInboundMessageNotification(inboundNotification);
>                        //this.srv.setCallNotification(callNotification);
>
>  //this.srv.setGatewayStatusNotification(statusNotification);
>                        //
> this.srv.setOrphanedMessageNotification(orphanedMessageNotification);
>
>                        // Add the Gateway to the Service object.
>                        this.srv.addGateway(gateway);
>                        System.out.println("3");
>                        // 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)
>                        this.srv.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() +
> "%");
>                        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.
>
>  //this.srv.getKeyManager().registerKey("+254721663208", 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>();
>                        this.srv.readMessages(msgList, MessageClasses.ALL);
>
> System.out.println("msgList.size(2)="+msgList.size());
>                        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.printStackTrace();1");
>                        e.printStackTrace();
>                }
>                finally
>                {
>                        this.srv.stopService();
>                }
>        }
>
>        public class InboundNotification implements
> IInboundMessageNotification
>        {
>
>            public void process(String gatewayId, MessageTypes
> msgType, InboundMessage msg)
>                {
>                System.out.println("bbbbbbbbbbbbbbb");
>                        if (msgType == MessageTypes.INBOUND)
> System.out.println(">>> New
> Inbound message detected from Gateway: " + gatewayId);
>                        else if (msgType == MessageTypes.STATUSREPORT)
> System.out.println(">>> New Inbound Status Report message detected
> from Gateway: " + gatewayId);
>                        System.out.println(msg);
>                }
>        }
>
>        public class CallNotification implements ICallNotification
>        {
>                public void process(String gatewayId, String callerId)
>                {
>                        System.out.println(">>> New call detected from
> Gateway: " +
> gatewayId + " : " + callerId);
>                }
>        }
>
>        public class GatewayStatusNotification implements
> IGatewayStatusNotification
>        {
>                public void process(String gatewayId, GatewayStatuses
> oldStatus,
> GatewayStatuses newStatus)
>                {
>                        System.out.println(">>> Gateway Status change for "
> + gatewayId +
> ", OLD: " + oldStatus + " -> NEW: " + newStatus);
>                }
>        }
>
>        public class OrphanedMessageNotification implements
> IOrphanedMessageNotification
>        {
>                public boolean process(String gatewayId, InboundMessage msg)
>                {
>                        System.out.println(">>> Orphaned message part
> detected from " +
> gatewayId);
>                        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[])
>        {
>                ReadMessages app = new ReadMessages();
>                try
>                {
>                        app.doIt();
>                }
>                catch (Exception e)
>                {
>                        System.out.println("e.printStackTrace();2");
>                        e.printStackTrace();
>                }
>        }
> }
>
> --
> You received this message because you are subscribed to the Google Groups
> "SMSLib User Group" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<smslib%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/smslib?hl=en.
>
>


-- 
Pozdrawiam,
Tomek Jurkiewicz

-- 
You received this message because you are subscribed to the Google Groups 
"SMSLib User Group" group.
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