#java #macos #javax.comm
#ява #macos #javax.comm #java
Вопрос:
Я хотел бы создать Java-приложение, которое взаимодействует с последовательным устройством (ручной сканер), чтобы приложение не зависело от платформы. Я нашел несколько примеров кода, и когда я копирую их в Eclipse, он говорит, что javax.comm.* отсутствует. Как мне установить это на свой Mac? И как мне добавить эту библиотеку в мое приложение, чтобы пользователям не нужно было ничего устанавливать?
Я хочу иметь возможность предоставлять пользователям файл jar и устройство, и они должны иметь возможность запускать его в Windows / Mac / Linux без небольшой настройки или вообще без нее.
Я нашел загрузку, где я мог бы загрузить javax.comm.jar файл, но загрузка включала win32comm.dll это зависело от некоторых способов — по крайней мере, это была ошибка, которую я получил, когда добавил файл jar в свой проект.
Error loading win32com: java.lang.UnsatisfiedLinkError: no win32com in java.library.path
Ответ №1:
Это Java Communications API. Вы можете получить его здесь, но это вам не поможет. Поддерживаемые платформы — Solaris SPARC, Solaris x86 и Linux x86.
Для Mac и Linux, если последовательный порт уже настроен, вы можете открыть /dev/ttyS0, /dev/ttyS1, /dev /ttyS2 и т.д. в виде файла и прочитать / записать в него. В Windows, если последовательный порт уже настроен, вы можете открыть «COM1», «COM2» и т.д. и читать и записывать в него.
К сожалению, javax.comm (как указано в эталонной реализации) не является кроссплатформенным, поэтому вам придется либо прибегнуть к объединению дополнительных собственных библиотек и поддерживающих классов, либо использовать зависящий от платформы способ настройки последовательного порта. В Windows это может быть команда «mode», а в Mac / Linux это может быть команда stty.
Комментарии:
1. Таким образом, на самом деле нет независимого от платформы способа связи с serialport???
2. Я этого не говорил. Просто ссылочная реализация javax.comm / Java Communications API не зависит от платформы. В API J2SE не существует независимого от платформы способа связи с последовательным портом.
Ответ №2:
Я бы рекомендовал RXTX. Он не использует javax.comm
пакет, но следует тому же API (с некоторыми полезными дополнениями).
E1: Как оказалось, RXTX 2.0 действительно использует javax.comm
пакет. Вы можете найти его на той же странице загрузки.