API Javax.comm в 64-битной Windows
Я использую API javax.comm, чтобы помочь моей программе взаимодействовать с оборудованием через последовательный порт. Я использую Windows 7 и среду IDE NetBeans 9.
Я использовал обычную Java-программу для проверки доступных портов на моем ПК. Программа скомпилирована и запущена без ошибок. Однако ничего не вернулось.
Что я могу сделать, чтобы использовать API javax.comm в Windows? Похоже, win32com.dll не работает с 64-разрядной операционной системой.
7 ответов
Вот как я заставил это работать.
Я протестировал его с помощью JDK 1.6 (32-битная версия) на моей 64-битной машине с Windows 7.
- Установите 32-битный JDK.
- Скопируйте файл win32com.dll в JDK_HOME\jre\bin.
- Скопируйте javax.comm.properties в JDK_HOME\jre\lib.
- Скопируйте файл comm.jar в JDK_HOME\jre\lib\ext.
Теперь запустите вашу программу, и она должна работать.
Последние версии 2.2pre RXTX включают двоичные файлы для 64-битных окон. Я думаю, что последний источник информации RXTX изменился на это: http://rxtx.qbang.org/ вместо http://www.rxtx.org/.
В какой-то момент библиотека RXTX включала поддержку для использования API javax.comm. Я не уверен, что это все еще происходит, но главное изменение использования "родной" упаковки RXTX было в первую очередь просто изменением имени пакета.
кажется, win32com.dll не работает с 64-разрядной операционной системой
Я думаю, что это правильно. На самом деле, согласно соответствующей странице загрузки, Oracle больше не поддерживает javax.comm
API для любой платформы Windows.
Тем не менее, я нашел эту страницу, которая имеет 64-битную сборку DLL, среди прочего.
РЕДАКТИРОВАТЬ
Благодаря поразительным исследованиям (например, по ссылкам и материалам для чтения) я нашел страницу загрузки последней версии RXTX, которая утверждает, что имеет двоичные файлы для различных платформ. Если вашей платформы нет, попробуйте собрать из исходного кода. Если это не сработает, подумайте о том, чтобы приложить усилия, чтобы это сработало.
Я интегрировал библиотеки RXTX в некоторые из моих ранних проектов и обнаружил эту ошибку, возникающую при работе с коммуникационными портами под Windows, поэтому вы можете сначала проверить это, прежде чем приступать к серьезному проектированию приложений. Связь работает нормально, с этим проблем никогда не было, но как только вы откроете порт, вы не сможете закрыть его и открыть снова, если вы используете метод, предусмотренный для закрытия порта, ваше приложение просто зависает, без исключений, без ничего. Позже я обнаружил такое же поведение, описанное пользователями в сети, но так и не нашел решения этой проблемы. Опять же, это может помочь вам сэкономить время, сначала проверьте это.
Последний выпуск, а именно этот http://rxtx.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip, больше не имеет этой проблемы. К сожалению, я думаю, что он решен только для Windows, он все еще там в бинарных файлах Linux, и я не пробовал это на Mac.
Вас может заинтересовать альтернативная библиотека, которую я создал: http://code.google.com/p/jperipheral/
У меня была эта проблема... на 64-битной машине.. работает Windows 7
устаревшее приложение, разработанное в jdk 1.4, для 32-битных окон... и использующее win32 comm api
я попробовал двоичный файл RXTX для 64-битной системы, и я смог установить связь с моим устройством на некотором уровне... но... были другие проблемы, так как мое приложение ссылалось на версию библиотеки jpos, которая внутренне использовала comm-api (пришлось импортировать javax.comm.*... в некоторый класс Serial...Listener)....
Я установил 32-битный jdk и настроил бинарные файлы comm-api для 32-битных окон, как указано здесь... setup comm api на windows
потом все было хорошо