使用jSSC未检测到COM端口

时间:2017-09-02 21:16:04

标签: java port jssc

我试图在我的java应用程序中使用Com端口实现传输数据。首先,我决定像这样创建SerialPort对象。

 SerialPort serialPort = new SerialPort("COM1");

 try {
        serialPort.openPort();
 } catch (SerialPortException ex) {
        ex.printStackTrace();
 }

但是有一个jssc.SerialPortException:端口名称 - COM1;方法名称 - openPort();异常类型 - 未找到端口。

然后我试着确定,我有什么COM端口:

 String[] portNames = SerialPortList.getPortNames();
    for (int i = 0; i < portNames.length; i++) {
        System.out.println(portNames[i]);
    }

结果令人遗憾:portNames为空。

请你给我一些建议。

2 个答案:

答案 0 :(得分:0)

我在Windows中查看此代码,它很好: 我的USB到COM适配器成为系统中的COM4

import jssc.SerialPort;
import jssc.SerialPortException;
import jssc.SerialPortList;

public class Main {
    public static void main(String[] args) {
        SerialPort serialPort;
        serialPort = new SerialPort("COM4");

        try {
            serialPort.openPort();
        } catch (SerialPortException ex) {
            ex.printStackTrace();
        }

        String[] portNames = SerialPortList.getPortNames();
        for (int i = 0; i < portNames.length; i++) {
            System.out.println(portNames[i]);
        }
    }
}

我也去设备管理器检查COM端口。再次,如果主题启动器的“portNames为空”。也许是设备驱动程序。他应该在那里检查。

答案 1 :(得分:0)

有多种方法可以解决这个问题。

  1. 当应用程序启动时,循环查找可用的COM端口,而不是仅在找到端口时才打开端口。您还可以添加延迟,因为Windows需要一些时间来检测并激活COM端口以供使用。当我们插入USB-UART时,Windows会加载驱动程序并分配COM端口号。这意味着如果我们每次获得COM4时将相同的模块插入相同的物理端口。所以不用担心。
  2. 如果您想制作更强大的解决方案,请自行编写并使用一些提供USB-UART热插拔检测的库。因此,当我们插入USB-UART模块时,该库将告诉我们分配了哪个端口号,并从我们的应用程序中打开它。我知道的一个这样的图书馆是SerialPundit