Вопрос

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

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

Это было полезно?

Решение

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

Я создал службу 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 ,COM5"

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top