com端口是否以独占模式打开

时间:2014-02-04 09:24:57

标签: java rxtx

我创建了使用com端口发送/接收消息的应用程序。我为此目的使用rxtx lib。当应用程序启动时,我打开com端口,如:

    String comportidentifier = "/dev/ttyS0";

            CommPortIdentifier portIdentifier = null;
            portIdentifier = CommPortIdentifier.getPortIdentifier(comportidentifier);

            if (portIdentifier.isCurrentlyOwned()) {
                JOptionPane.showMessageDialog(null, "port in use");
            } else {

                SerialPort serialPort = (SerialPort) portIdentifier.open("ReadComPort", 200);
}

当程序完成工作时我关闭它。

出乎意料的是,我发现我的comport(我打开的那个)发送了一些我的代码不发送的奇怪命令。我在我的代码中使用了几个库,我没有将com端口变量传递给它们。唯一的描述是系统中的某些东西已经打开了端口并且是发送命令。但如果我已经打开了com端口,这可能吗?我想当我打开端口时,没有人可以这样做,直到我关闭它。如何描述这种情况?

当我将端口更改为/ dev / ttyS1时,未传输意外命令。

1 个答案:

答案 0 :(得分:0)

Rxtx可能是一个小小的错误,特别是如果你使用的是库存库而不是像nrserial这样的bug修复叉之一。我不认为isCurrentlyOwned实际上在每个平台上工作,并且锁定端口不一致。关闭端口也存在问题。尽管如此,我还没有看到它在端口上生成随机数据。

您可能需要查看其中一个较新的分叉,它们包含许多修复程序。此外,rxtx邮件列表存档可能有助于查找与您看到的问题类似的其他实例。