Java USB 56k модем получить идентификатор звонящего

Я разрабатываю приложение для Windows и пытаюсь получить идентификатор звонящего.

У меня есть ноутбук 56k usb, подключенный к моему ноутбуку, который подключен к телефонной розетке. Как я могу обмениваться данными с модемом (который подключен в COM5) через код Java?

import jssc.SerialPort;
import jssc.SerialPortEvent;
import jssc.SerialPortEventListener;
import jssc.SerialPortException;
import jssc.SerialPortList;

public class ComControl {

    static SerialPort serialPort;
    private static Object line;

    public static void main(String[] args) {

          //Method getPortNames() returns an array of strings. Elements of the array is already sorted.
        String[] portNames = SerialPortList.getPortNames();
        for(int i = 0; i < portNames.length; i++){
            System.out.println(portNames[i]);           
        }

        serialPort = new SerialPort("COM5"); 
        try {
            serialPort.openPort();
            serialPort.setParams(9600, 8, 1, 0);

            serialPort.writeString("ATZ\r\n");
            //serialPort.readString();
            System.out.println(serialPort.readString());


        }
        catch (SerialPortException ex) {
            System.out.println(ex);
        }
    }

Приведенный выше код - это то, что у меня есть на данный момент. Как получить ответ после отправки команды на последовательный порт?

Заранее спасибо.

1 ответ

Если вы хотите получить ответ, то вам нужно прочитать с порта, как это serialPort.readBytes(bufferLength);, В зависимости от длины буфера вам нужно будет прочитать несколько раз, чтобы получить полный результат и собрать его вместе.

Вот пример с официальной страницы примера:

import jssc.SerialPort; import jssc.SerialPortException;

public class Main {
    public static void main(String[] args) {
        SerialPort serialPort = new SerialPort("COM1");
        try {
            serialPort.openPort();//Open serial port
            serialPort.setParams(9600, 8, 1, 0);//Set params.
            byte[] buffer = serialPort.readBytes(10);//Read 10 bytes from serial port
            serialPort.closePort();//Close serial port
        }
        catch (SerialPortException ex) {
            System.out.println(ex);
        }
    }
}

Официальный Javadoc, кажется, не в сети, но вы можете найти немного информации здесь: https://www.java-forums.org/new-java/36167-serial-port-communication-via-jssc.html

Обратите внимание на пример 3 для SerialPortEventListener. Использование слушателя - лучший способ управления буфером.

Другие вопросы по тегам