【问题标题】:Detecting serial COM port using Java使用 Java 检测串行 COM 端口
【发布时间】:2012-10-03 21:48:08
【问题描述】:

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

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

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

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

在计算机上运行的 GPS 应用程序“MiniGPS”能够与作为 COM7 的 GPS 芯片进行双向通信。

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

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

我从某个地方复制了以下代码(下面),现在不确定在哪里,相同或相似的代码已经出现在一堆其他问题中。

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

我知道一次只有一个程序可以看到串口,我在尝试之前关闭了设备管理器应用程序、GPS 应用程序和处理应用程序,但 CommPortIdentifier 对象。

有什么建议吗?

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();

【问题讨论】:

  • 您必须在启动应用程序时加载 win32com.dll。你这样做了吗??

标签: java serial-port


【解决方案1】:

很难确定,但您的问题听起来像以下之一:

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

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

  • 您缺少驱动程序文件。

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

【讨论】:

  • 第一个建议没有帮助。 GPS 设备一直插入并运行。在Java程序检测不到任何串口后,我可以返回并运行GPS应用程序并确认串口和输入数据仍然有效。
  • 第二个建议的可能性更大。我有 DLL,但我需要弄清楚计算机上的十几个 JRE 中的哪一个实际上正在被使用。
  • 第二个建议似乎已经解决了这个问题。 dll文件需要放到jdk目录下的jre中。我现在可以看到数据流,虽然它是加扰的。我可以做更多的工作。
【解决方案2】:

我建议你使用JSSC 库。

经验丰富,你的代码会更简洁

【讨论】:

    【解决方案3】:

    在 windows 7 上使用 javax.comm 存在兼容性问题,请尝试使用支持 windows 7 的 RxTx API。

    【讨论】:

      猜你喜欢
      • 2015-09-15
      • 1970-01-01
      • 2018-02-11
      • 2013-11-03
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      相关资源
      最近更新 更多