I got this error using the code posted:

java.lang.StringIndexOutOfBoundsException: String index out of range: -12
at java.lang.String.substring(String.java:1911)
at java.lang.String.substring(String.java:1911)

How to solve this problem, the code of SendMessage.java is working.


On Monday, December 29, 2014 at 7:36:30 PM UTC+8, ABHISHEK BEESONY wrote:
>
> *here is the output that i get from netbeans*
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *run: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 <http://smslib.org>Version: 
> 3.5.3log4j: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 
> <http://logging.apache.org/log4j/1.2/faq.html#noconfig> for more info.>>> 
> Gateway Status change for modem.com8, OLD: STOPPED -> NEW: STARTING>>> 
> Gateway Status change for modem.com8, OLD: STARTING -> NEW: STARTEDModem 
> Information:  Manufacturer: Nokia  Model: Nokia 310  Serial No: 
> 354598058700969  SIM IMSI: ** MASKED **  Signal Level: 53 dBm  Battery 
> Level: 0%Now Sleeping - Hit <enter> to stop service.>>> New call detected 
> from Gateway: modem.com8 : 59517747>>> New call detected from Gateway: 
> modem.com8 : 59517747>>> New call detected from Gateway: modem.com8 : 
> 59517747>>> New call detected from Gateway: modem.com8 : 59517747>>> New 
> call detected from Gateway: modem.com8 : 59517747here is my code*
>
>
>
>
>
>
>
>
> *// 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) Runpackage examples.modem;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 ReadMessages{ 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("modem.com8", "COM9",9600, "Nokia", "310"); // 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("+306948494037", 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>(); 
> Service.getInstance().readMessages(msgList, MessageClasses.ALL); 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) { 
> 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[]) { ReadMessages app 
> = new ReadMessages(); try { app.doIt(); } 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/msgid/smslib/18d9dbd8-ec82-49d3-a49e-2436a31d0c4e%40googlegroups.com.

Reply via email to