繁体   English   中英

jSSC未检测到COM端口

[英]Com ports are not detected with 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为空。

请给我一些建议。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM