"Port currently not owned"正在使用的端口



我从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。日志输出显示

TRACE[10:19:03.147]规模:72开放CPI:当前未拥有端口
错误[10:19:05.149]比例:98 COM4:端口正在被当前不属于的端口使用

第一条日志行对我来说意味着open()应该成功,但它没有成功。我以前连接过这个设备,并从中获取了数据。这是一个奇怪的新错误。有人知道是什么原因造成的吗?我的直觉告诉我,这是一件棘手的事情,因为Windows有控球问题。我对任何想法都持开放态度,如果您需要,我会提供更多信息。

我不能确切地解释为什么会发生这个奇怪的错误,但我确实找到了一些解决方案。我认为这是Windows的占有欲,这似乎是正确的。当我关机,拔下设备插头,在设备仍然拔下的情况下通电,然后连接设备时,PortInUseException消失了。

相关内容

最新更新