1

我正在尝试使用 D-Link USB 调制解调器在计算机上接收短信。我已经在这个链接上找到了我的问题的解决方案 但是现在我面临的问题是我收到了 3 次相同的消息,就像这样

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

此外,如果程序长时间保持打开状态,那么上面给出的这些行将一次又一次地打印在屏幕上已收到。代码如下

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

        }
    }
}
4

2 回答 2

1

也解决了这个问题。骗子要杀了我。我不知道你为什么要为此编写代码,但我所做的只是将收件箱和发件箱都保存到数据库中(当入站通知首先到达时),然后我从 GSM 的收件箱中删除消息。我停止收到大量通知。它有效,但并不能真正解决问题。只是一种解决方法。

我感觉它与端口有关。也许它需要冲洗什么的。不确定,我还不是一个好的程序员。

希望解决方法有所帮助!干杯!

于 2015-08-26T03:08:49.723 回答
1

曾经我也面临同样的问题,而我的要求是保留所有传入消息的记录。因此,我在数据库中创建了表,并在数据库中插入了所有传入的消息,其中包含完整的详细信息,例如发件人号码、消息内容以及日期和时间。在数据库中,我结合日期、时间和消息内容制作了独特的记录。

现在,如果我会收到重复的消息,那么日期、时间和消息内容肯定会相同。之后,当这些值将被插入数据库时​​,重复的值将不会被插入到数据库中。因此,我们将拥有唯一的数据。

但这可能对您不起作用,因为实际上您不会多次收到消息,您只会收到一条消息,然后会多次收到通知。因为如果您将多次收到消息,那么日期和时间必须始终不同。但在我的情况下,这些总是一样的。因此,首先您应该尝试从收件箱中删除所有消息,然后您可能需要刷新接收端口。

于 2015-12-08T06:06:19.313 回答