Java USB 56k 调制解调器获取来电显示



我正在开发一个Windows应用程序,我正在尝试检索调用方ID。

我有一个56k USB调制解调器连接到我的笔记本电脑,它连接到电话插座。如何通过 java 代码与调制解调器(在 COM5 上连接(进行通信?

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("ATZrn");
//serialPort.readString();
System.out.println(serialPort.readString());

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

上面的代码是我目前拥有的代码。向串行端口发送命令后如何检索响应?

提前谢谢。

如果要检索响应,则需要像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

记下 SerialPortEventListener 的示例 3。使用侦听器是管理缓冲区的最佳方式。

相关内容

  • 没有找到相关文章

最新更新