问题
I would like to know if someone knows why I can't send sms with my E226 3g modem. I have configured the example class, I setted modem model, PIN and Smsc number.
public class SendMessage
{
public void doIt() throws Exception
{
OutboundNotification outboundNotification = new OutboundNotification();
System.out.println("Example: Send message from a serial gsm modem.");
System.out.println(Library.getLibraryDescription());
System.out.println("Version: " + Library.getLibraryVersion());
SerialModemGateway gateway = new SerialModemGateway("modem.com1", "COM4", 9600, "Huawei", "E226");
gateway.setInbound(true);
gateway.setOutbound(true);
gateway.setSimPin("1010");
// Explicit SMSC address set is required for some modems.
// Below is for VODAFONE GREECE - be sure to set your own!
gateway.setSmscNumber("+555181136200");
Service.getInstance().setOutboundMessageNotification(outboundNotification);
Service.getInstance().addGateway(gateway);
Service.getInstance().startService();
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();
// Send a message synchronously.
OutboundMessage msg = new OutboundMessage("+556199655944", "Hello from SMSLib!");
Service.getInstance().sendMessage(msg);
System.out.println(msg);
// Or, send out a WAP SI message.
//OutboundWapSIMessage wapMsg = new OutboundWapSIMessage("306974000000", new URL("http://www.smslib.org/"), "Visit SMSLib now!");
//Service.getInstance().sendMessage(wapMsg);
//System.out.println(wapMsg);
// You can also queue some asynchronous messages to see how the callbacks
// are called...
//msg = new OutboundMessage("309999999999", "Wrong number!");
//srv.queueMessage(msg, gateway.getGatewayId());
//msg = new OutboundMessage("308888888888", "Wrong number!");
//srv.queueMessage(msg, gateway.getGatewayId());
System.out.println("Now Sleeping - Hit <enter> to terminate.");
System.in.read();
Service.getInstance().stopService();
}
public class OutboundNotification implements IOutboundMessageNotification
{
public void process(AGateway gateway, OutboundMessage msg)
{
System.out.println("Outbound handler called from Gateway: " + gateway.getGatewayId());
System.out.println(msg);
}
}
public static void main(String args[])
{
SendMessage app = new SendMessage();
try
{
app.doIt();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
It outputs
run:
Example: Send message 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
0 2012-06-28 19:08:32,652 [main] INFO org.smslib.Service - 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
3 2012-06-28 19:08:32,655 [main] INFO org.smslib.Service - Version: 3.5.2
3 2012-06-28 19:08:32,655 [main] INFO org.smslib.Service - JRE Version: 1.7.0_05
5 2012-06-28 19:08:32,657 [main] INFO org.smslib.Service - JRE Impl Version: 23.1-b03
Exception in thread "Thread-3" java.lang.ExceptionInInitializerError
5 2012-06-28 19:08:32,657 [main] INFO org.smslib.Service - O/S: Windows 7 / amd64 / 6.1
8 2012-06-28 19:08:32,660 [main] DEBUG org.smslib.threading.AServiceThread - Initialized.
8 2012-06-28 19:08:32,660 [NotifyQueueManager] DEBUG org.smslib.threading.AServiceThread - Running...
8 2012-06-28 19:08:32,660 [NotifyQueueManager] DEBUG org.smslib.notify.NotifyQueueManager$NotificationQueueManager - NotifyQueueManager running...
9 2012-06-28 19:08:32,661 [main] INFO org.smslib.queues.DefaultQueueManager - Queue directory not defined. Queued messages will not be saved to filesystem.
9 2012-06-28 19:08:32,661 [main] DEBUG org.smslib.threading.AServiceThread - Initialized.
10 2012-06-28 19:08:32,662 [DelayQueueManager] DEBUG org.smslib.threading.AServiceThread - Running...
10 2012-06-28 19:08:32,662 [DelayQueueManager] DEBUG org.smslib.queues.AbstractQueueManager$DelayQueueManager - DelayQueueManager running...
10 2012-06-28 19:08:32,662 [main] DEBUG org.smslib.threading.AServiceThread - Initialized.
at org.smslib.modem.SerialModemDriver.connectPort(SerialModemDriver.java:69)
at org.smslib.modem.AModemDriver.connect(AModemDriver.java:114)
10 2012-06-28 19:08:32,662 [WatchDog] DEBUG org.smslib.threading.AServiceThread - Running...
at org.smslib.modem.ModemGateway.startGateway(ModemGateway.java:189)
11 2012-06-28 19:08:32,663 [Thread-3] INFO org.smslib.modem.ModemGateway - GTW: modem.com1: Starting gateway, using Huawei E226 AT Handler.
at org.smslib.Service$1Starter.run(Service.java:276)
Caused by: java.lang.RuntimeException: CommPortIdentifier class not found
11 2012-06-28 19:08:32,663 [Thread-3] INFO org.smslib.modem.SerialModemDriver - GTW: modem.com1: Opening: COM4 @9600
at org.smslib.helper.CommPortIdentifier.<clinit>(CommPortIdentifier.java:76)
... 4 more
15010 2012-06-28 19:08:47,662 [WatchDog] DEBUG org.smslib.threading.AServiceThread - Running...
30011 2012-06-28 19:09:02,663 [WatchDog] DEBUG org.smslib.threading.AServiceThread - Running...
45012 2012-06-28 19:09:17,664 [WatchDog] DEBUG org.smslib.threading.AServiceThread - Running...
60012 2012-06-28 19:09:32,664 [WatchDog] DEBUG org.smslib.threading.AServiceThread - Running...
75013 2012-06-28 19:09:47,665 [WatchDog] DEBUG org.smslib.threading.AServiceThread - Running...
90014 2012-06-28 19:10:02,666 [WatchDog] DEBUG org.smslib.threading.AServiceThread - Running...
That's all I get for hours. Any idea why doesn't work?
回答1:
You're missing javax.comm. The situation with javax.comm on Windows is a bit of a mess, the smslib installation instructions suggest to use rxtx instead and point to Cloudhopper's page for a Windows version. Get that library, add it as a dependency to your project and you should be all set.
回答2:
Caused by: java.lang.RuntimeException: CommPortIdentifier class not found
You are missing a library, whichever one contains CommPortIdentifier
. Figure out which library you need and include it in the classpath.
回答3:
You are missing comm library.There are two libraries which you can resolve this.
Here is the Code Snippet which throws this error:
try
{
classCommPortIdentifier = Class.forName("javax.comm.CommPortIdentifier");
}
catch (ClassNotFoundException e1)
{
try
{
classCommPortIdentifier = Class.forName("gnu.io.CommPortIdentifier");
}
catch (ClassNotFoundException e2)
{
throw new RuntimeException("CommPortIdentifier class not found");
}
}
So, make sure either javax.comm.CommPortIdentifier
of gnu.io.CommPortIdentifier
classes are in your class path.Also make sure you add native rxtxSerial.dll to {jre}/bin/
gnu.io.CommPortIdentifier
is from rxtx library which has new packaging convension.
There was package name change recently and therefore you will get confused in using RxTx library. Please get some idea from above code and make things clear to you
Here is what is mentioned on the site:
RXTX 2.1 Is the main development branch for RXTX. The namespace used is gnu.io.. Unless you have any specific reasons, this is the recommended download. If you need to be compatible with javax.comm.* then download RXTX 2.0, but note that not much development effort is provided for this branch so you will be missing out on all the fixes that the main branch is getting.*
来源:https://stackoverflow.com/questions/11253712/smslib-doesnt-send-sms-with-e226-3g-modem