“当前未拥有的港口”使用的港口

时间:2013-07-12 15:52:21

标签: java javax.comm

我从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有一些占有问题,这是一件棘手的事情。我愿意接受任何想法,如果您需要,我会提供更多信息。

1 个答案:

答案 0 :(得分:0)

我不能说出为什么这个奇怪的错误发生了,但我确实找到了一些解决方案。似乎我认为Windows是占有欲是正确的。当我关闭,拔掉我的设备,打开电源时设备仍然拔掉,然后连接设备,PortInUseException消失了。