写的上位机,涉及到串口通讯,用的是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控件的列表中。在初始化程序时,调用了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控件列表不能得到正确更新!求解释!谢谢了 串口
解决方案 »
- jdbc分页问题?
- ?求助此程序哪错了???
- java中菜单被挡住的问题
- 谁能给一个文件下载多线程的例子,一个线程用来下载文件,另一个线程用来显示下载的进度。
- 我想利用JComboBox对image包中的4副BMP文件的读取,求实现的代码。谢谢!!
- 没有错误,但是数据库不更新?????
- 手动提交模式,怎样用一个preparedStatement往两个结构不同的表里写大量记录?
- StringBuffer有没有类似String的 trim()方法?
- java 技术概观~期待你的参与!
- 继承问题,子类继承父类的方法,子类不可以调用,父类可以调用
- 需要取当前页面上一段HTML存放到seesion中
- 如何在一个JTabbedPane加一个竖直的滚动条
往choice里面添加端口。
那我问一下,如果刷新了之后之前添加到choice里面的端口是会全部消失还是继续存在?
如果继续存在的话就说的通了,楼主没有删,只有加。
如果全部消失的话,那我暂时也没看到哪里有错。。
多加debug测试,要不找错很难的