Member 11334477 Ответов: 0

Авария среда JRE, на языке Java серийный приложение с АСК в W10 окружающей среды


Я новичок в Java, и при попытке запустить следующий код с библиотекой jssc-2.8.0, при методе "serialPort.openPort()" IntelliJ IDE аварийно завершает работу и сообщает:

2020.2.2\lib\idea_rt.jar=51870:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.2.2\bin" -Dfile.encoding=UTF-8 -classpath D:\MisDesarrollos\Java\RS232-jssc\out\production\RS232-jssc;D:\MisDesarrollos\Java\RS232-jssc\lib\jssc-2.8.0.jar com.rdm.Main COM3
Opening port COM3 ...
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000007110b5db, pid=11596, tid=5204
#
# JRE version: Java(TM) SE Runtime Environment (14.0.2+12) (build 14.0.2+12-46)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (14.0.2+12-46, mixed mode, sharing, tiered, compressed oops, g1 gc, windows-amd64)
# Problematic frame:
# C  [jSSC-2.8_x86_64.dll+0xb5db]
#
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# D:\MisDesarrollos\Java\RS232-jssc\hs_err_pid11596.log
#
# If you would like to submit a bug report, please visit:
#   https://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#


Процесс завершился с кодом выхода 1

Что я уже пробовал:

== ГЛАВНЫЙ.ЯВА ====================================================================
package com.rdm;
import jssc.*;

public class Main {

    public static void main(String[] args) {

        // Pass port number thru argument
        String port = args[0];

        SerialPort serialPort = new SerialPort(port);
        try {
            System.out.println("Opening port " + port + " ...");
            serialPort.openPort();

            serialPort.setParams(SerialPort.BAUDRATE_9600,
                    SerialPort.DATABITS_8,
                    SerialPort.STOPBITS_1,
                    SerialPort.PARITY_NONE);
            serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN | SerialPort.FLOWCONTROL_RTSCTS_OUT);

            serialPort.writeString("COM3 opened !!!");

            PortReader portReader = new PortReader(serialPort);

            serialPort.addEventListener(portReader, SerialPort.MASK_RXCHAR);

            serialPort.closePort();
        } catch (Exception e) {
            System.out.println("There are an error on writing string to port т: " + e);
        }

    }
}

== PORTREADER.ЯВА ==============================================================
package com.rdm;
import jssc.*;

public class PortReader implements SerialPortEventListener {

    SerialPort serialPort;
    public PortReader(SerialPort serialPort) {
        this.serialPort = serialPort;
    }

    @Override
    public void serialEvent(SerialPortEvent event) {
        System.out.println("started");
        if (event.isRXCHAR() && event.getEventValue() > 0) {
            try {
                String receivedData = serialPort.readString(event.getEventValue());
                System.out.println("Received response: " + receivedData);
            } catch (SerialPortException ex) {
                System.out.println("Error in receiving string from COM-port: " + ex);
            }
        }
    }
}

Richard MacCutchan

Возможно, у вас нет разрешения на доступ к порту COM3. Однако предоставленной информации недостаточно, чтобы сделать больше, чем догадаться.

0 Ответов