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.

  1. Установите 32-битный JDK.
  2. Скопируйте файл win32com.dll в JDK_HOME\jre\bin.
  3. Скопируйте javax.comm.properties в JDK_HOME\jre\lib.
  4. Скопируйте файл 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.

У вас есть взгляд на RXTX? Я думаю, что это все еще активно.

Вас может заинтересовать альтернативная библиотека, которую я создал: 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

потом все было хорошо

Другие вопросы по тегам