gpt4 book ai didi

java - 从 RXTX 添加和获取通信端口

转载 作者:行者123 更新时间:2023-12-01 10:40:42 26 4
gpt4 key购买 nike

我目前正在开发一个项目,该项目需要与连接在通讯端口上的设备进行通信。我下面有一个函数,它搜索串行端口,将它们添加到 HashMap ,然后返回 HashMap 。我注意到一个问题,每当我尝试从 HashMap 中获取某些内容时,它都会给出 java.lang.nullPointerException 我是否试图从 map 中错误地获取端口?如果我需要发布更多代码,请告诉我。

private Enumeration ports = null;
public HashMap<String, CommPortIdentifier> searchForPorts() {
ports = CommPortIdentifier.getPortIdentifiers();
while (ports.hasMoreElements()) {
CommPortIdentifier curPort = (CommPortIdentifier) ports.nextElement();
if (curPort.getPortType() == CommPortIdentifier.PORT_SERIAL) {
System.out.println("Adding: " + curPort.getName() + "-" + curPort);
portMap.put(curPort.getName(), curPort);
System.out.println(portMap.get(curPort.getName())); //works: prints out gnu.io.CommPortIdentifier@9f116cc
}
}
log.fine("Successfully looked for ports");
Iterator it = portMap.entrySet().iterator();
String s="";
while (it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
s = pair.getKey().toString();
System.out.println(s); //prints out COM24 like it should
it.remove();
}
System.out.println(portMap.get(s)); //Prints out null??
return portMap;
}

此代码的部分内容取自here .

最佳答案

您可以使用 it.remove() 删除 map 中的元素,如 javadoc 中所述。 :从底层集合中删除此迭代器返回的最后一个元素

要使用迭代器访问下一个元素,您只需使用 it.next() (假设还有剩余元素)。

另一个解决方案是使用 foreach 循环,如下所示:

for(Map.Entry pair : portMap.entrySet()){
s = pair.getKey().toString();
System.out.println(s);
}

关于java - 从 RXTX 添加和获取通信端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34422854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com