2013-01-13 30 views
3

我正在用Java编写一个程序来发送和接收SMS文本消息。我正在使用AT命令和蓝牙连接与我的诺基亚套装。我写了一个类来发送消息。但我不知道如何获得Java串行事件通知我,当我收到一条短信。如何使用Javax.Comm串行事件监听器接收SMS消息

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

我真的更喜欢使用串行事件处理传入消息。任何有关如何执行此操作的信息或Java代码都将受到极大的赞赏。

回答

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