2014-12-21 6 views
1

Я пытаюсь получить sms на компьютере с помощью USB-модема D-Link. У меня есть выяснить, решение моей проблемы на этом link Но теперь вопрос я столкнулся в том, что я получаю же сообщение 3 раза, как этотSMSlib, получающий повторяющиеся сообщения

New Inbound message detected from Gateway: 923145663675 Hello 
New Inbound message detected from Gateway: 923145663675 Hello 
New Inbound message detected from Gateway: 923145663675 Hello 

Кроме того, если программа остается открытой в течение длительного времени, то они выше данных линий будет напечатано на экране снова и снова Я действительно много искал в google, а некоторые, где было предложено удалить неиспользуемое уведомление, я сделал это, но все же повторяются сообщения. код приведен ниже

public void doIt() throws Exception{     
    InboundNotification inboundNotification = new InboundNotification(); 

    try{ 

    SerialModemGateway gateway = new SerialModemGateway("modem.com4", "COM7", 921600, "", ""); 

    gateway.setProtocol(Protocols.PDU); 
    gateway.setInbound(true); 
    gateway.setSimPin("0000"); 
    Service.getInstance().setInboundMessageNotification(inboundNotification); 
    Service.getInstance().addGateway(gateway); 
    Service.getInstance().startService(); 

    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: " + msg.getOriginator() + " " + msg.getText()); 

       try { 
        gateway.deleteMessage(msg); 
       } catch (GatewayException ex) { 
        Logger.getLogger(ReadMessages.class.getName()).log(Level.SEVERE, null, ex); 
       } 

     } 
    } 
} 

ответ

1

Как только я столкнулся с одной и той же проблемой, тогда как мои требования заключались в том, чтобы вести запись всех входящих сообщений. Итак, я создаю таблицу в базе данных и вставляю все входящие сообщения в базу данных с полной информацией, например, номер отправителя, содержимое сообщения и дату и время. И в базе данных я сделал уникальные записи с комбинацией даты, времени и содержимого сообщения.

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

Но это может не сработать для вас, потому что на самом деле вы не получаете сообщение несколько раз, вы просто получаете одно сообщение, а затем уведомление, которое вы показываете несколько раз. Потому что, если вы будете получать сообщение несколько раз, то дата и время должны быть разными все время. Но в моем случае они были такими же всегда. Итак, сначала вы должны попытаться удалить все сообщения из папки «Входящие», а затем, возможно, вам нужно очистить принимающий порт.

+0

Благодарим за предоставление полезных предложений. –

1

прошли через эту проблему, а также. Одинокие меня убивали. Я не знаю, почему вы пишете код для этого, но все, что я делал для работы, состояло в том, чтобы сохранить как входящие, так и исходящие в базу данных (когда поступает входящее уведомление), и я удаляю сообщение из входящих сообщений GSM. Я перестаю получать поток уведомлений. Он работает, но на самом деле это не устраняет проблему. Просто обходной путь.

У меня такое чувство, что оно имеет какое-то отношение к порту. Может быть, ему нужно промывать или что-то еще. Не уверен, я еще не добрался до программиста.

Надеемся, что обходной путь поможет! Ура!

Смежные вопросы