API Javax.comm в 64-разрядной версии Windows

Я использую API javax.comm, чтобы помочь моей программе взаимодействовать с оборудованием через последовательный порт. Я использую Windows 7 и NetBeans IDE 9.

Я использовал обычную программу Java для проверки доступных портов на моем ПК. Программа скомпилировалась и запустилась без ошибок. Однако это ничего не вернуло.

Что я могу сделать, чтобы использовать API javax.comm в Windows? Кажется, что win32com.dll не работает с 64-битной операционной системой.


person Nathi    schedule 18.10.2010    source источник


Ответы (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.

Теперь запустите вашу программу, и она должна работать.

person Alan    schedule 06.09.2012

Последние версии 2.2pre RXTX включают двоичные файлы для 64-битных окон. Я думаю, что последний источник информации о RXTX изменился на этот: http://rxtx.qbang.org вместо http://www.rxtx.org.

В какой-то момент библиотека RXTX включала в себя поддержку использования API javax.comm. Я не уверен, что это все еще так, но основным изменением в использовании «родной» упаковки RXTX было, прежде всего, просто изменение имени пакета.

person kaliatech    schedule 18.10.2010
comment
Вы говорите, что пакет rxtx имеет те же классы и методы, что и javax.comm? я не уверен, смогу ли я использовать ту же самую процедуру, что и на javax.comm. - person Nathi; 21.10.2010
comment
В более старых версиях RXTX да. Вы можете использовать пакеты и классы Java COMM API javax.comm, а RXTX будет простой заменой реализации. В более новых версиях RXTX вам нужно будет изменить импортированные пакеты с javax.comm.* на gnu.io.*. Кроме этого, классы и API, вероятно, будут одинаковыми на 99%. Сравните два API здесь: rxtx.qbang.org/wiki/index.php/Development< /а> . - person kaliatech; 21.10.2010

кажется, что win32com.dll не работает с 64-битной операционной системой

Я думаю, что это правильно. Фактически, согласно соответствующей странице загрузки, Oracle больше не поддерживает javax.comm API для любой платформы Windows.

Однако среди другие вещи.

ИЗМЕНИТЬ

Путем поразительного исследования (то есть следуя ссылкам и читая материал) я нашел страницу загрузки для последнего RXTX, который утверждает, что имеет двоичные файлы для различных платформ. Если вашей платформы там нет, попробуйте собрать из исходников. Если это не сработает, подумайте о том, чтобы приложить усилия, чтобы заставить это работать.

person Stephen C    schedule 18.10.2010
comment
Спасибо, Стивен, я посетил ссылку euclideanspace.com/software/language/java/comm. вы упомянули, и я вижу, что этот пакет предназначен для Linux. Однако я хотел пакет для окон. - person Nathi; 21.10.2010

Я интегрировал библиотеки RXTX в некоторые из своих более ранних проектов и обнаружил эту ошибку при работе с коммуникационными портами под Windows, поэтому вы можете сначала проверить это, прежде чем приступать к серьезному дизайну приложения. Связь работает нормально, с этим никогда не было проблем, но как только вы открываете порт, вы не можете закрыть его и снова открыть, если вы используете метод, предусмотренный для закрытия порта, ваше приложение просто зависает, никаких исключений и ничего. Позже я обнаружил такое же поведение, описанное пользователями в Интернете, но так и не нашел решения этой проблемы. Опять же, это может помочь вам сэкономить время, сначала проверьте его.

Последняя версия, а именно: http://rxtx.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip, этой проблемы больше нет. К сожалению, я думаю, что это решено только для Windows, оно все еще есть в двоичных файлах Linux, и я не пробовал его на Mac.

person Lazar    schedule 22.10.2011

Вы видели RXTX? Я думаю, что он все еще активен.

person PeterMmm    schedule 18.10.2010
comment
Привет, Питер. У меня есть RXTX, но у меня проблемы с его использованием. Я хотел бы получить несколько примеров кода, использующего RXTX. - person Nathi; 21.10.2010

У меня была эта проблема... на 64-битной машине... под управлением Windows 7

устаревшее приложение, разработанное в jdk 1.4, для 32-битных окон... и использующее двоичный файл win32 comm api

я попробовал двоичный файл RXTX для 64-битной версии, и я смог общаться со своим устройством на некотором уровне... но... были другие проблемы, поскольку мое приложение ссылалось на версию библиотеки jpos, которая внутренне использовала comm-api ( имел import javax.comm.*... в каком-то классе Serial...Listener)....

Я установил 32-битный jdk и настроил двоичные файлы comm-api для 32-битных окон, как указано здесь...настройка API связи в Windows

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

person wilkanah    schedule 27.07.2011

Вас может заинтересовать альтернативная библиотека, которую я создал: http://code.google.com/p/jperipheral/

person Gili    schedule 05.10.2011