1

我已按照http://www.jcontrol.org/download/readme_rxtx_en.html的说明在 Windows 上设置 rxtx 。

我所做的就是将 rxtxSerial.dll 复制到“C:\Program Files\Java\jdk1.6.0_07\jre\bin”,并将 RXTXcomm.jar 复制到“C:\Program Files\Java\jdk1.6.0_07\jre\ lib\ext"(我的 JAVA_HOME 变量设置为 C:\Program Files\Java\jdk1.6.0_07\jre)

我还将 RXTXcomm.jar 添加到我的 Eclipse 项目中。

但是当我运行它时,它仍然显示“NoSuchPortException”

开发库
==========================================
本机库版本 = RXTX-2.0-7pre1
Java 库版本 = RXTX-2.0-7pre1
java.lang.ClassCastException:gnu.io.RXTXCommDriver 无法转换为 gnu.io.CommDriver 在加载 gnu.io.RXTXCommDriver 时抛出
gnu.io.NoSuchPortException
    在 gnu.io.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:218)
    在 TwoWaySerialComm.connect(TwoWaySerialComm.java:20)
    在 TwoWaySerialComm.main(TwoWaySerialComm.java:107)

在我的 java 文件中,我告诉它:

        尝试
        {
            (new TwoWaySerialComm()).connect("COM4");
        }

我也尝试过 Java Comm API。两者都无法识别我的串行端口,但我确信我正确地遵循了说明。那里有文件。

有人知道它可能是什么吗?

4

10 回答 10

1

试着放进rxtxSerial.dll

C:\Program Files\Java\jdk1.6.0_07\jre\lib\bin
                                      ^^^
于 2008-11-08T02:37:12.090 回答
1

我对RXTX不太熟悉,但这正常吗?

java.lang.ClassCastException: gnu.io.RXTXCommDriver cannot be cast to gnu.io.CommDriver thrown while loading gnu.io.RXTXCommDriver

否则,问题可能不在于端口本身,而在于类本身?只是一个猜测。

于 2009-04-14T08:44:20.323 回答
1

您可以使用 CommPortIdentifier.getPortIdentifiers()

识别系统找到的所有可能的端口。

于 2008-11-10T07:18:13.020 回答
1

您还可以尝试专门为 Windows 实施的替代解决方案。应该有很多可用的,您可以从http://www.caerustech.com/JCommWin32.php获得其中之一

舒尔茨

于 2010-01-25T12:08:23.167 回答
0

可能是您的系统没有定义 COM4 或无法访问。很难猜测可能出了什么问题,因为您还没有发布您的端口初始化代码 - 您发布的内容看起来像包装器代码。

这是我使用 javax.comm API(但使用来自 serialio.com 的 SerialPort)的工作初始化代码:

// name comes from config and is "COM1", "COM2", ...
SerialPort port=(SerialPort)CommPortIdentifier.getPortIdentifier(name).open("YourPortOwnerIdHere",5000);      // owner and ms timeout
port.setSerialPortParams(bau,dtb,stb,par);
port.setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN|SerialPort.FLOWCONTROL_RTSCTS_OUT);
port.enableReceiveTimeout(1000);

希望这会为您指明正确的方向。

于 2008-11-08T06:46:59.667 回答
0

在 serialEvent 函数中关闭 serialPort 时,我也遇到了问题。也许这是一个死锁问题,close方法永远等待serialEvent的锁被释放。启动一个新线程来关闭端口对我有用。

于 2009-09-10T19:51:24.637 回答
0

对于您的问题,我的代码如下:

if (idPuerto == null)
{
            formulario = form;
            boolean encontrado = false;


            listaPuertos = CommPortIdentifier.getPortIdentifiers();

            while( listaPuertos.hasMoreElements() && encontrado == false )
            {
              idPuerto = (CommPortIdentifier)listaPuertos.nextElement();
              //System.out.println(idPuerto.getName());

              if( idPuerto.getPortType() == CommPortIdentifier.PORT_SERIAL )
              {
                if( idPuerto.getName().equals(RFIDBascApp.ComBasc) )
                {        
                    encontrado = true;
                    logger.AddInfoUser("Puerto serie encontrado");

                  }
                }
              }
于 2010-04-29T10:40:39.157 回答
0

我同意你的问题看起来像 ClassCastException 而不是另一个。

对于 Windows,我在http://www.engidea.com/blog/informatica/winjcom/winjcom.html使用“Windows Java Serial Com Port Driver”,而且设置起来要容易得多。

无论哪种情况,您都需要 BIN 目录中的 DLL,而不是建议的 LIB\BIN。至少这对我有用。我正在使用 NetBeans,我还发现将 jar 和 dll 放入 JDK 中的各种 bin 和 lib\ext 文件夹中很有帮助。

请注意,如果您的机器上有多个版本的 JRE,您可能没有使用您认为正在使用的那个。此外,作为一个实际问题,我发现将 jar 和 dll 都复制到各种 bin 和 lib\ext 文件夹中更有帮助。使它只是一个粘贴,粘贴,粘贴操作。

对于 Windows,我推荐“Windows Java Serial Com Port Driver”,因为它解决了我的 USB 串口问题。我适合 RXTX,因为拔下 USB 时它会崩溃。winjcom 也解决了这个问题和其他问题。它有非常有用的错误异常。

此外,请确保您的串行驱动程序是最新的。下载更新修复了我的另一个错误。-斯托什

于 2009-04-21T01:26:51.700 回答
0

你有NoSuchPortException,所以首先迭代所有可用的端口!

import gnu.io.CommPortIdentifier;        
import java.util.Enumeration;  

public class ListAvailablePorts {  

    public void list() {  
        Enumeration ports = CommPortIdentifier.getPortIdentifiers();  

        while(ports.hasMoreElements()){  
            CommPortIdentifier port = (CommPortIdentifier) ports.nextElement();
            System.out.println(port.getName());
        }
    }  

    public static void main(String[] args) {  
        new ListAvailablePorts().list();  
    }  
} 
于 2011-02-08T15:46:58.827 回答
-1

@Pinheiro 你可能想看看这个

于 2010-12-30T07:04:03.003 回答