2012-06-28 1 views
1

Я хотел бы узнать, знает ли кто-нибудь, почему я не могу отправить sms с модемом E226 3g. Я настроил класс класса, я установил модель модема, номер PIN и номер Smsc.SMSLib не отправляет SMS с модемом E226 3G

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(); 
     } 
    } 
} 

Он выводит

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

Это все я в течение нескольких часов. Любая идея почему не работает?

ответ

2

Вам не хватает javax.comm. Ситуация с javax.comm на Windows немного путаница, smslib installation instructions предлагает вместо этого использовать rxtx и указать на Cloudhopper's page для версии Windows. Получите эту библиотеку, добавьте ее как зависимость от вашего проекта, и вы должны быть настроены.

+0

Я пробовал javacomm, но он не поддерживает Win 7 64 бит, библиотека rxtx с страницы Cloudhopper имеет 64-битную версию, которая хорошо работает. Спасибо – dextervip

+0

У меня такая же проблема, но в моем случае я уже делал все эти шаги. Итак, если вы знаете другую проблему, которая может вызвать это, пожалуйста, поделитесь мне. –

+1

@MuhammedRefaat, пожалуйста, создайте новый вопрос для своей проблемы, не применяйте его к какому-то другому вопросу в качестве комментария. Прочитайте сообщение [как спросить] (http://stackoverflow.com/help/how-to-ask), чтобы понять, как создать хороший вопрос, на который, без сомнения, будет дан ответ быстро. Удачи! – fvu

3
Caused by: java.lang.RuntimeException: CommPortIdentifier class not found 

Вы пропускаете библиотеки, в зависимости от того один содержит CommPortIdentifier. Выясните, какая библиотека вам нужна и включите ее в путь к классам.

+0

Каково ваше предложение, если я включу все библиотеки и все еще имею ту же проблему? –

0

Вы не компилируете библиотеку. Есть две библиотеки, которые вы можете решить.

Вот фрагмент кода, который выдает эту ошибку:

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"); 
      } 
     } 

Итак, убедитесь, что либо javax.comm.CommPortIdentifier из gnu.io.CommPortIdentifier классов в классе path.Also убедитесь, что вы добавляете родной rxtxSerial.dll к {JRE }/bin/

gnu.io.CommPortIdentifier от RXTX библиотека, которая имеет новую упаковку convension.

В последнее время произошло изменение имени пакета, поэтому вы будете путать с использованием библиотеки RxTx. Пожалуйста, получите некоторое представление от выше кода и сделать вещи ясно,

Вот что упоминается на site:

RXTX 2,1 Является ли основной отраслью развития для RxTx. Используемое пространство имен - gnu.io.. Если у вас нет особых причин, это рекомендуемая загрузка. Если вам нужно быть совместимым с javax.comm. *, То скачайте RXTX 2.0, но обратите внимание, что для этой ветки не требуется много усилий по разработке, поэтому вы будете упускать все исправления, которые получает главная ветка. *

+0

У меня такая же проблема, но я сделал все необходимые шаги, и проблема все еще существует, даже если я попробую ваш фрагмент и побежал правильно, не поймав что-либо, будет использовать другое решение, пожалуйста? –

+0

Вы получаете какие-то исключения? то, пожалуйста, опубликуйте его. –

+0

Нет, я не делаю, нормально работает –