如何使用Javax.Comm串行事件侦听器接收SMS消息

时间:2013-01-13 17:42:52

标签: java serial-port sms

我正在用Java编写程序来发送和接收短信。我正在使用AT命令和我​​的诺基亚设备的蓝牙连接。我写了一个发送消息的类。但是,当我收到短信时,我无法弄清楚如何让java串行事件通知我。

为了在我正在向手机写入相应的AT命令时接收消息,然后我写了一个类,每隔10秒向手机发送一行换行语句,显示任何新消息。

我更喜欢使用串行事件处理传入的消息。任何有关如何执行此操作或Java代码的信息都将非常受欢迎。

1 个答案:

答案 0 :(得分:1)

看看org.smslib:http://smslib.org/

此处使用该库的示例: https://groups.google.com/forum/#!topic/smslib/6b4dR5pJjBY

或者,如果您确实需要单独使用javax.commm,那么可以使用一些示例代码:

http://www.java2s.com/Code/JavaAPI/javax.comm/SerialPortaddEventListenerSerialPortEventListenerarg0.htm

特别是:

你需要打电话 SerialPort.addEventListener(SerialPortEventListener arg0)然后serialPort.notifyOnDataAvailable(true);

设置完成后,您可以按照SerialPortEventListener的回调操作:

public void serialEvent(SerialPortEvent event) {
  switch (event.getEventType()) {
  case SerialPortEvent.BI:
  case SerialPortEvent.OE:
  case SerialPortEvent.FE:
  case SerialPortEvent.PE:
  case SerialPortEvent.CD:
  case SerialPortEvent.CTS:
  case SerialPortEvent.DSR:
  case SerialPortEvent.RI:
  case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
    break;
  case SerialPortEvent.DATA_AVAILABLE:
    byte[] readBuffer = new byte[20];

    try {
      while (inputStream.available() > 0) {
        int numBytes = inputStream.read(readBuffer);
      }   
      System.out.print(new String(readBuffer));
    } catch (IOException e) {
    }   
    break;
  }   
}