SMSLib doesn't send SMS with E226 3G modem

匿名 (未验证) 提交于 2019-12-03 09:13:36

问题:

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.*



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!