rxtx com порт - PullRequest
       19

rxtx com порт

1 голос
/ 19 мая 2009

Я использую API RXTX для чтения данных с устройства GPS через ком-порт. Прямо сейчас я нахожу правильный com-порт, читая файл конфигурации и ища порт в списке. Проблема, с которой я столкнулся, заключается в том, что, если устройство отключено, com-порт может измениться, тогда пользователь должен знать, чтобы изменить файл конфигурации. Я написал приложение, похожее на это, на c # и смог перечислить имя устройства Windows вместо com-порта, и я переключался через com-порты, пока имя устройства не совпадало с именем в файле конфигурации. При использовании этого метода ничего в конфигурационном файле не должно меняться, даже если используемый com-порт изменяется. Есть ли способ сделать это с API RXTX?

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 27 мая 2009

Если кому-то интересно ...

Я создал службу Windows в C #, которая контролирует сокет. Если клиент подключается к этому сокету, служба собирает имя порта и идентификатор устройства, который находится на этом порту, и отправляет данные в строку через com-порт, а затем клиент может проанализировать строку, чтобы получить необходимые ему данные.

В моем случае передаваемая строка: "ACPI \ PNP0501 * PNP0501, COM1, PCI \ VEN_8086 & DEV_29B7 & SUBSYS_02111028 & REV_02 PCI \ VEN_8086 & DEV_29B7 & SUBSYS_02111028 PCI \ VEN_8086 & DEV_29B7 & CC_070002 PCI \ VEN_8086 & DEV_29B7 & CC_0700, COM3, USB \ Vid_067b & Pid_2303 & Rev_0400 USB \ Vid_067b & Pid_2303, СОМ5"

Когда я анализирую его, я вижу, что ACPI \ PNP0501 * PNP0501 - это идентификатор устройства для COM 1, для COM3 есть три идентификатора устройства и два для COM5.

Возможно, это не лучший способ справиться с этим, но он достаточно хорош для моих нужд и спас меня от JNI. :)

0 голосов
/ 20 мая 2009

Если вы хотите получить имя, связанное с устройством, на COM-порту (особенно, если для его установки установлен драйвер), вам нужно будет сделать это с чуть-чуть страшным Java-> Native Interface, чтобы поговорить к API-интерфейсам Windows, которые собирают эту информацию. C # хорош тем, что эта информация собирается и предоставляется вам, но в Java вы должны выполнить этот дополнительный шаг.

Обнаружение функции Windows может оказаться полезным. Я не уверен, какой именно API предоставляет эту функциональность.

0 голосов
/ 20 мая 2009

CommPortIdentifier.getPortIdentifiers перечисляет все порты в системе, которые могут использоваться API Javacomm. Просмотрите их, чтобы найти порт, к которому подключено ваше устройство.

...