Как узнать номер телефона при входящем звонке по модему PCI
Я хочу построить Java-приложение, как приложение CallerID.
При поступлении входящего звонка это приложение покажет номер телефона в текстовом поле.
Я использую функцию serialEvent и обнаруживаю при поступлении. Но я только что получил сообщение RING.
public synchronized void serialEvent(SerialPortEvent oEvent) {
if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
String inputLine=input.readLine();
System.out.println(inputLine);
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
Как мы можем получить номер телефона?
PS: я использую PCI модем
1 ответ
Возможно, вам придется отправить модему последовательную команду и подождать, пока он ответит. Оглядываясь в Интернете, я нашел это:
AT commands are issued to the modem to control the modems operation
and software configuration. The basic command syntax is as follows:
<command><parameter>
The <command> is a combination of the attention prefix (AT) followed by
the AT command.
И затем эти конкретные команды (которые, кажется, нуждаются в этом "AT" вещь):
I10, I11 Displays connection information. If the modem has not
connected with a remote DCE the ATI 11 commands returns -
No Previous Call.
Поэтому кажется, что если вы отправите модем "ATI10" или "ATI11", он сообщит вам о своем статусе, который может включать номер телефона, к которому он подключен.
Есть также эти команды, которые могут включить печать входящего номера на последовательный порт:
+VCID=<value> Caller ID
Use this command to enable or disable caller ID.
+VCID=0 Disable caller ID.
+VCID=1 Enable caller ID with formatted presentation.
+VCID=2 Enable caller ID with out formatting.
Опять же, я думаю, что нужен префикс AT.
У меня нет возможности протестировать любой из них, но это руководство, похоже, дает хорошее описание многих последовательных команд и откуда я беру свою информацию: