Java串口通讯 遇到问题,求帮助!
写的上位机,涉及到串口通讯,用的是javacommon20-win32串口通讯包。遇到的问题很简单,但是我不知道我哪里有问题。正常启动程序时,程序能够得到正确的端口数目及端口号,如图,但是当我使得一些串口无效的、再点刷新的时候,端口还是之前的那几个,没有将新增或者减少的端口号更新到choice控件的列表中。
在初始化程序时,调用了setPorts()方法,得到正确端口数目极其端口号。setPorts方法如下:
public void setPorts(){
Enumeration en = null;
en = CommPortIdentifier.getPortIdentifiers();//得到所有的common端口标识
String str ="";
CommPortIdentifier portId=null;
int count=0; //累计串口数量
while (en.hasMoreElements())//遍历装有串口标识的枚举en 如果是rs232的,得到名字 拼接成string 以,分隔
{
portId = (CommPortIdentifier) en.nextElement();
/*如果端口类型是串口,则打印出其端口信息*/
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)
{ count++;
System.out.println(portId.getName());
str=str+","+(portId.getName());
}
}
//System.out.println(str);
if(count==0){ //无可用串口
JOptionPane.showMessageDialog(null, "无可用端口,请检查!");
System.exit(0);
}else{ //有可用串口,添加到Choice列表中去
str=str.substring(1, str.length());
System.out.println(str);
String[] comNames=str.split(",");//Port 名字数组
for(int i=0;i<comNames.length;i++){//添加到java.awt.Choice列表中去
choice_port.add(comNames[i]);
}
}
}
在点击刷新按钮后的actionPerformed()方法如下:
private void refreshPortActionPerformed(java.awt.event.ActionEvent evt) {
choice_port.removeAll();
setPorts();
}
在增减端口后,点击端口,choice控件列表不能得到正确更新!求解释!谢谢了 串口 --------------------编程问答-------------------- 楼主的代码只有choice_port.add(comNames[i]);
往choice里面添加端口。
那我问一下,如果刷新了之后之前添加到choice里面的端口是会全部消失还是继续存在?
如果继续存在的话就说的通了,楼主没有删,只有加。
如果全部消失的话,那我暂时也没看到哪里有错。。
多加debug测试,要不找错很难的 --------------------编程问答-------------------- 初始加是不需要清空choice的,刷新的时候了我先调用了removeAll()方法,去除所有端口了,之后才添加的。。。我一直感觉自己写的么问题。。。奇怪了。。。不过谢谢了
补充:Java , Java SE