Java Runtime异常:USB到RS232串行通信使用JSSC Maven软件包

发布于 2025-02-03 04:58:59 字数 2779 浏览 2 评论 0原文

我使用Javafx和Maven依赖管理器开发了一个桌面应用程序。我使用Java 8和JSSC软件包使用USB与串行端口进行通信。那个时候正常工作。但是现在,当我尝试运行该项目时,它向我展示了以下例外并关闭了该应用程序。

# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000007110b5db, pid=9452, tid=0x0000000000002384
#
# JRE version: OpenJDK Runtime Environment (8.0_332-b08) (build 1.8.0_332-b08)
# Java VM: OpenJDK 64-Bit Server VM (25.332-b08 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C  [jSSC-2.8_x86_64.dll+0xb5db]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\Users\Sincos\Desktop\HomeOffice\Java\FDH-Relay\hs_err_pid9452.log
#
# If you would like to submit a bug report, please visit:
#   https://github.com/corretto/corretto-8/issues/
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

Process finished with exit code 1

当我启动过程时,触发以下功能。

public void open() throws SerialPortException {
    port = new SerialPort(comPort);
    port.openPort();//Open serial port
    port.setParams(Integer.parseInt(baudRate), Integer.parseInt(dataSize), Integer.parseInt(stopBit), Integer.parseInt(parity));
    port.addEventListener(new SerialPortEventListener() {
        public void serialEvent(SerialPortEvent serialPortEvent) {
            try {
                int length = 0;
                buffer= port.readString();

                if (buffer != null){
                    length = buffer.length();
                }

                for (int i=0;i<length;i++){
                    queue.add((int)buffer.charAt(i));
                }
            } catch (SerialPortException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    });
}

我设置了端口,鲍德拉特,datasize,stopbit和奇偶校验。

这是我在项目中使用的Maven依赖性。

<!-- https://mvnrepository.com/artifact/org.scream3r/jssc -->
<dependency>
    <groupId>org.scream3r</groupId>
    <artifactId>jssc</artifactId>
    <version>2.8.0</version>
</dependency>

这是我初始化数据的另一个变量和构造函数。

String comPort;
public static Queue<Integer> queue = new LinkedList<>();
SerialPort port;
java.lang.String buffer;
String baudRate, dataSize, stopBit, parity;
public ExternalSerialConnection(String comport, String baudRate, String dataSize, String stopBit, String parity) {
    this.comPort=comport;
    this.baudRate=baudRate;
    this.stopBit=stopBit;
    this.dataSize=dataSize;
    this.parity=parity;
}

有没有人可以帮助我解决这个问题?

I developed a desktop application using JavaFX and Maven dependency manager. I used Java 8 and JSSC package to communicate with a serial port using USB. That time it was working as I expected. But now when I try to run the project, it's showing me the following exception and shutdown the app.

# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000007110b5db, pid=9452, tid=0x0000000000002384
#
# JRE version: OpenJDK Runtime Environment (8.0_332-b08) (build 1.8.0_332-b08)
# Java VM: OpenJDK 64-Bit Server VM (25.332-b08 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C  [jSSC-2.8_x86_64.dll+0xb5db]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\Users\Sincos\Desktop\HomeOffice\Java\FDH-Relay\hs_err_pid9452.log
#
# If you would like to submit a bug report, please visit:
#   https://github.com/corretto/corretto-8/issues/
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

Process finished with exit code 1

When I start the process, the following function is triggered.

public void open() throws SerialPortException {
    port = new SerialPort(comPort);
    port.openPort();//Open serial port
    port.setParams(Integer.parseInt(baudRate), Integer.parseInt(dataSize), Integer.parseInt(stopBit), Integer.parseInt(parity));
    port.addEventListener(new SerialPortEventListener() {
        public void serialEvent(SerialPortEvent serialPortEvent) {
            try {
                int length = 0;
                buffer= port.readString();

                if (buffer != null){
                    length = buffer.length();
                }

                for (int i=0;i<length;i++){
                    queue.add((int)buffer.charAt(i));
                }
            } catch (SerialPortException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    });
}

I set up the port, baudRate, dataSize, stopBit, and parity.

Here is the maven dependency that I used in the project.

<!-- https://mvnrepository.com/artifact/org.scream3r/jssc -->
<dependency>
    <groupId>org.scream3r</groupId>
    <artifactId>jssc</artifactId>
    <version>2.8.0</version>
</dependency>

Here is the other variable and constructor where I initialize the data.

String comPort;
public static Queue<Integer> queue = new LinkedList<>();
SerialPort port;
java.lang.String buffer;
String baudRate, dataSize, stopBit, parity;
public ExternalSerialConnection(String comport, String baudRate, String dataSize, String stopBit, String parity) {
    this.comPort=comport;
    this.baudRate=baudRate;
    this.stopBit=stopBit;
    this.dataSize=dataSize;
    this.parity=parity;
}

Is there anyone who can help me to solve this issue?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文