我从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有一些占有问题,这是一件棘手的事情。我愿意接受任何想法,如果您需要,我会提供更多信息。
答案 0 :(得分:0)
我不能说出为什么这个奇怪的错误发生了,但我确实找到了一些解决方案。似乎我认为Windows是占有欲是正确的。当我关闭,拔掉我的设备,打开电源时设备仍然拔掉,然后连接设备,PortInUseException消失了。