CelerCOM, библиотека Java
CelerCOM — это бесплатная минималистичная библиотека Java для взаимодействия с внешними устройствами через COM-порты, например: USB, виртуальный COM. Библиотеку также можно использовать для взаимодействия с файлами TTY и FIFO.
Главные особенности:
- Драйвер для Linux не зависит от системных или сторонних библиотек, даже от libc. Это позволяет использовать CelerCOM в минималистичных средах, таких как встроенные системы. Например, библиотека совместима с Raspberry Pi.
- Поддерживаются все версии Windows.
- В случае отсутствия драйвера для текущей операционной системы (ОС) и архитектуры процессора, CelerCOM автоматически переключается на API RandomAccessFile (RAF). Драйвер RAF поддерживает ограниченную совместимость с внешними устройствами. Преимущества нативных драйверов описаны ниже.
- Библиотека и нативные драйверы объединены в один JAR. CelerCOM загружает соответствующий драйвер автоматически.
Нативные драйверы поддерживаются для следующих систем:
Windows | Linux | |
---|---|---|
x86 (32-бит) | ✓ | ✓ |
AMD64 (64-бит) | ✓ | ✓ |
ARM (32-бит) | ✓ |
Мультиплатформенная API RAF используется в качестве запасного варианта. Нативные драйверы предпочтительнее:
- Нативный драйвер может автоматически восстанавливать соединение в случае ошибок связи.
- Отключение системного кеша операций ввода-вывода для совместимости с некоторыми внешними устройствами.
- Операция чтения осуществляется с задержкой не более 200 мс при использовании нативного драйвера. API RAF блокирует чтение на неопределенный срок при «зависании» устройства.
Как использовать
Просто добавьте CelerCOM.jar в список classpath. API описана в документации javadoc.
Библиотеку CelerCOM также можно использовать как простой терминал TTY. Просто запустите CelerCOM.bat в Windows или CelerCOM.sh в Linux или Unix, чтобы запустить TTY. Идентификатор COM-порта следует указать в единственном параметре конфигурации внутри скрипта: COM_PORT.
В Windows требуется добавить префикс «\\.\», если номер порта больше 9. Например:
COM9 \\.\COM10
Типичное имя USB-порта в Linux:
/dev/ttyUSB0
Учтите, что доступ к USB или другим портам в Linux может быть ограничен. Обычно доступ открыт только для группы dialout и для root. На TTY и FIFO такие ограничения могут не распространяться.
Терминал TTY попытается открыть указанный COM-порт и начнет отправлять и получать текстовые команды. Если устройство поддерживает AT-команды, такие команды можно отправлять непосредственно через данный терминал.
Примеры
Примеры доступны в нашем репозитории GitHub.