2013-01-13 63 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; 
    } 
}