【问题标题】:Error in loading serial port shared library using java使用java加载串口共享库出错
【发布时间】:2014-02-17 07:38:26
【问题描述】:

我必须将数据发送到串口,javax.comm 也包括在内,但它给出了错误 “在加载驱动程序 gnu.io.RXTXCommDriver 时捕获 java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path 加载 SolarisSerial 时出错:java.lang.UnsatisfiedLinkError:java.library.path 中没有 SolarisSerialParallel 在加载驱动程序 com.sun.comm.SolarisDriver 时捕获 java.lang.UnsatisfiedLinkError: com.sun.comm.SolarisDriver.readRegistrySerial(Ljava/util/Vector;Ljava/lang/String;)I"

我在stackoverflow中访问了所有与串口数据读写相关的问题,但没有找到任何解决方案

你帮帮我

代码如下:

package serial;
import java.io.*;
import java.util.*;
import javax.comm.SerialPort;
import javax.comm.CommPortIdentifier;
import javax.comm.UnsupportedCommOperationException;
import javax.comm.PortInUseException;

public class SimpleWrite {
static Enumeration portList;
static CommPortIdentifier portId;
static String messageString = "Hello, world!\n";
static SerialPort serialPort;
static OutputStream outputStream;

public static void main(String[] args) {
    portList = CommPortIdentifier.getPortIdentifiers();

    while (portList.hasMoreElements()) {
        portId = (CommPortIdentifier) portList.nextElement();
        if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
             if (portId.getName().equals("COM6")) {
            //if (portId.getName().equals("/dev/term/a")) {
                try {
                    serialPort = (SerialPort)
                        portId.open("SimpleWriteApp", 2000);
                } catch (PortInUseException e) {}
                try {
                    outputStream = serialPort.getOutputStream();
                } catch (IOException e) {}
                try {
                    serialPort.setSerialPortParams(9600,
                        SerialPort.DATABITS_8,
                        SerialPort.STOPBITS_1,
                        SerialPort.PARITY_NONE);
                } catch (UnsupportedCommOperationException e) {}
                try {
                    outputStream.write(messageString.getBytes());
                } catch (IOException e) {}
            }
        }
    }
}

}

【问题讨论】:

  • 你设置库路径的位置了吗?
  • 我将 javax.comm 的新库放在 C:\java_comm\lib 中,netbeans 安装在 C:\Program Files (x86)\NetBeans 7.0.1 中,但我也在项目属性中添加了库

标签: java serial-port serial-communication javax.comm


【解决方案1】:

确保已设置串行库的库路径。试试这个

java -Djava.library.path=C:\java_comm\lib SimpleWrite 

您似乎正在运行 32 位版本的 Netbeans 和(通过扩展)Java。所以保证你有对应的32bit版本的rxtxserial,可以找here

【讨论】:

  • 现在将项目文件夹放入 C:\java_comm\lib 文件夹,但错误相同,请帮助,我知道你很忙,但我非常感谢你给男人的一些时间
  • 您使用的是 32 位 rxtxSerial.dll(好像您使用的是 32 位 NetBeans + JDK)?
  • 先生,您提供您的电子邮件地址,我发给您文件,您检查它是否是 32 位的,我下载并添加到库中,该库中没有提到任何关于 32 或64 位
  • SO 不是这样工作的。这是一个问答网站。现在回到库 - 没有简单的方法来检查库,所以最快的方法就是重新下载适当的库 - 请参阅添加的链接
  • 费了好大劲才下载的,请给我链接/
猜你喜欢
  • 2015-03-02
  • 2011-05-29
  • 2017-11-05
  • 2014-12-09
  • 2022-01-04
相关资源
最近更新 更多