5

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

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

串行端口设备是一个 GPS 模块,它以 37860 波特输出文本 GPS 字符串,连接到插入笔记本电脑 USB 端口的串行 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();
4

3 回答 3

4

我建议你使用JSSC库。

根据经验,它很有效,您的代码会更简洁

于 2012-12-24T10:50:51.480 回答
0

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

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

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

  • 您缺少驱动程序文件。

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

于 2012-10-13T04:39:21.377 回答
0

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

于 2013-02-12T06:06:02.943 回答