0

我从 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 的占有问题来说是一件棘手的事情。我对任何想法持开放态度,如果您需要,我会提供更多信息。

4

1 回答 1

1

我无法确切说明为什么会发生这个奇怪的错误,但我确实找到了一些解决方案。看来我假设它是 Windows 占有欲是正确的。当我关闭,拔下我的设备,在设备仍然拔出的情况下打开电源,然后连接设备,PortInUseException 消失了。

于 2013-07-19T16:38:35.410 回答