COM端口不检测与jSSC
问题描述:
我试图通过COM端口在我的Java应用程序的帮助下实现传输数据。首先,我决定像这样创建SerialPort对象。COM端口不检测与jSSC
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]);
}
结果令人遗憾:port名字是空的。
请你给我指点一些东西。
答
我查看Windows系统的代码,这是罚款: 我的USB转串口转换器系统成为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是空的”。也许有设备驱动程序。他应该在那里检查。
答
有多种方法可以解决这个问题。
- 当应用程序启动时,循环查找可用的COM端口,而不是仅在找到端口时才打开该端口。您还可以添加延迟,因为Windows需要一些时间来检测和激活COM端口才能使用。 Windows加载驱动程序并在插入USB-UART时分配一个COM端口号。这意味着如果我们每次将COM4插入相同的模块到相同的物理端口。所以不用担心。
- 如果您想制作一些更强大的解决方案,可以编写自己的解决方案,并使用一些提供USB-UART热插拔检测的库。因此,当我们插入USB-UART模块时,该库会告诉我们分配了哪个端口号,并从我们的应用程序中打开它。我知道一个这样的图书馆是SerialPundit
这不能提供问题的答案。一旦你有足够的[声誉](https://*.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://*.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/17957314) – jotik