当我尝试使用com端口列表填充枚举时,枚举为空

时间:2014-06-16 04:37:13

标签: enumeration javax.comm

我在我的com端口连接了一个设备,我正在尝试获取它的值,但我在第一步陷入困境。

我无法获得现有的COM端口。在下面的代码中,枚举似乎是空的,因为程序根本不进入while循环。任何人都可以请帮助

public class connectnow implements Runnable, SerialPortEventListener {

    static CommPortIdentifier portId;
    static Enumeration portList;

    InputStream inputStream;
    SerialPort serialPort;
    Thread readThread;
    byte[] readBuffer;

    public static void main(String[] args) {

        portList = CommPortIdentifier.getPortIdentifiers();
        System.out.println("portList... " + portList);

        while (portList.hasMoreElements()) {
            System.out.println("yes");
        }
    }

1 个答案:

答案 0 :(得分:0)

这似乎对我有用。

我必须从http://mfizz.com/oss/rxtx-for-java安装x64版本的RXTX。包是gnu.io(这就是你看到导入的原因)。你可能需要做些不同的事情。

请注意,getPortIdentifiers()返回需要一些时间。给它时间。

import gnu.io.*;
import java.util.Enumeration;
import java.io.InputStream;

public class connectnow implements Runnable, SerialPortEventListener {

    static CommPortIdentifier portId;
    static Enumeration portList;

    InputStream inputStream;
    SerialPort serialPort;
    Thread readThread;
    byte[] readBuffer;

    public static void main(String[] args) {

        portList = CommPortIdentifier.getPortIdentifiers();
        System.out.println("portList=" + portList);

        while (portList.hasMoreElements()) {
            System.out.println("yes");
            CommPortIdentifier portId = (CommPortIdentifier)portList.nextElement();
            System.out.println("portId=" + portId);
        }
    }

    public void run() {
    }

    public void serialEvent(SerialPortEvent ev) {
    }
}