使用Java检测串行COM端口

时间:2012-10-13 04:19:33

标签: java serial-port

我的Java程序未能检测到连接到计算机的串行端口设备。

我使用的是Windows 7(64位)计算机()。

串口设备是一个GPS模块,输出37860波特的文本GPS串,连接到插入笔记本电脑USB端口的串口USB转换器。

Windows控制面板/设备管理器将此设备显示为COM7。

计算机上运行的GPS应用程序“MiniGPS”可以通过GPS芯片作为COM7双向通信。

Processing中的应用程序能够检测到计算机有2个串口(com3和com7,com3是鼠标)。

我想用Java(或C ++)编写一个应用程序来从GPS串行端口收集数据。

我从某处复制了下面的代码(下面),不知道现在在哪里,相同或类似的代码已经出现在其他一些问题中。

当我运行它时, portList 枚举返回空,它根本找不到任何串口。

我知道一次只有一个程序可以看到串口,我在尝试之前关闭了设备管理器应用程序,GPS应用程序和处理应用程序,仍然没有 CommPortIdentifier <识别出串口/ em> object。

有什么建议吗?

public class SimpleRead implements Runnable, SerialPortEventListener {
static CommPortIdentifier portId;
static Enumeration portList;

InputStream inputStream;
SerialPort serialPort;
Thread readThread;

public static void main(String[] args) 
{
    System.out.println("Hello World");
    portList = CommPortIdentifier.getPortIdentifiers();

    JOptionPane.showMessageDialog(null,"portlist :"+portList.hasMoreElements());
    int numelt=0 ;
    while (portList.hasMoreElements()) 
    {
        numelt++;
        portId = (CommPortIdentifier) portList.nextElement();

3 个答案:

答案 0 :(得分:4)

我建议您使用JSSC库。

经验丰富,您的代码更简洁

答案 1 :(得分:0)

很难说肯定,但您的问题听起来像下列之一:

  • 您已在程序初始化后插入设备。

      

    根据我的经验,在初始化程序时可以识别COM端口。我的公司已经工作了几个月试图找到一种方法来监听插入的设备,但纯粹的Java看起来不可能(这让我感到困惑)。尝试插入,然后启动程序。

  • 您缺少驱动程序文件。

      

    您正在使用javax.comm,它需要文件javax.comm.properties和win32comm.dll(您可能必须在64位系统上找到不同的驱动程序)。属性文件应放在%JAVA_HOME%\ lib \目录中,dll放在%JAVA_HOME%\ bin中。

答案 2 :(得分:0)

在Windows 7中使用javax.comm有兼容性问题尝试使用支持Windows 7的RxTx API。