我从 javax.comm 库中得到了一些奇怪的结果。我正在运行这个构造函数:
SerialPort port;
public Scale(String porttotry) {
CommPortIdentifier cpi = null;
try {
cpi = CommPortIdentifier.getPortIdentifier(porttotry);
//Open Port and establish stream
log.trace("Opening CPI: {}", cpi.getCurrentOwner());
port = (SerialPort) cpi.open("My Application", 2000);
log.trace("CPI opened");
//... configuration stuff
} catch (PortInUseException ex) {
log.error("{}: Port in use by {}", porttotry, cpi.getCurrentOwner());
} catch (NoSuchPortException ex) {
log.error("No such port as {}", porttotry);
}
}
真正奇怪的是,当端口不使用时,它CommPortIdentifier.open(String, int)
似乎正在抛出一个事实。PortInUseException
日志输出说
跟踪 [10:19:03.147] 比例:72 开放 CPI:当前未拥有的端口
错误 [10:19:05.149] 比例:98 COM4:当前未拥有的端口正在使用的端口
第一个日志行对我来说意味着open()
应该成功,但它没有。我之前已经连接到该设备并从中获取数据。这是一个奇怪的新错误。有谁知道是什么原因造成的?我的直觉告诉我,这对于 Windows 的占有问题来说是一件棘手的事情。我对任何想法持开放态度,如果您需要,我会提供更多信息。