Какие есть библиотеки для работы с последовательным COM портом из Java

Играюсь с ардуинкой. Поэтому хочу наладить общение своей ардуинки с компьютером через последовательный порт. Так как я работаю на джаве, то выбор пал на джаву, а не на C# или библиотеку для работы с портами Qt. Но беда: нормальных библиотек для работы с COM портом из джавы я не нашел. Посоветуйте, пожалуйста, библиотеку, ее файлы и гайд по работе с ней. Желательно самое современное и стабильное.

Нашел библиотеку JSSC, но при открытии порта COM3 при помощи нее вываливается ошибка:

A fatal error has been detected by the Java Runtime Environment:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000007110b5db, pid=18676, tid=11844

JRE version: OpenJDK Runtime Environment (16.0.1+9) (build 16.0.1+9) Java VM: OpenJDK 64-Bit Server VM (16.0.1+9, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, 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:

Код, который я запускаю:

public class Main
{
    private static SerialPort port = new SerialPort("COM3");

    public static void main(String[] args)
    {
        try
        {
            port.openPort();
            port.setParams(SerialPort.BAUDRATE_9600,
                    SerialPort.DATABITS_8,
                    SerialPort.STOPBITS_1,
                    SerialPort.PARITY_NONE);
            port.setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN | SerialPort.FLOWCONTROL_RTSCTS_OUT);
            port.addEventListener(new PortReader());
        }
        catch (SerialPortException e)
        {
            System.out.println(e);
        }
    }

    private static class PortReader implements SerialPortEventListener
    {
        @Override
        public void serialEvent(SerialPortEvent evt)
        {
            if (evt.isRXCHAR() && evt.getEventValue() > 0)
            {
                try
                {
                    String data = port.readString(evt.getEventValue());
                    port.writeString("Got data");
                }
                catch (SerialPortException e)
                {
                    System.out.println(e);
                }
            }
        }
    }
}

Ответы (0 шт):