2016-06-06 3 views
1

Я пишу программу java, и прямо сейчас у меня есть установочный файл, который содержит номер COM-порта. который должен быть изменен, если устройство изменит номер COM-порта.Java - получить COM-порт id

Это не очень удобный. Поэтому я хочу иметь возможность получить список идентификаторов COM-порта и позволить пользователю выбрать подходящее устройство по его идентификатору. Я пробовал искать, но без особого успеха.

По идентификатору я имею в виду, если вы проверите диспетчер устройств: «Идентификатор COM-порта (COM < #>)». Проверьте с обозначенной красным цветом текста показано на следующем рисунке:

enter image description here

Я попытался следующие библиотеки:

  • javax.comm - CommPortIdentifier, getPortIdentifiers();
  • jssc - SerialPortList.getPortNames();

Но мне не удалось выяснить, возможно ли получить идентификатор COM-порта, поскольку два вышеуказанных метода просто возвращают номер COM-порта. Кто-нибудь знает, как получить идентификаторы COM-порта?

+0

Я в настоящее время не на компьютере, на котором у меня есть код, но, насколько я помню, он просто вернул «COM #». Я хочу получить имя элемента, подключенного к этому порту. – Zeliax

+0

вы можете попробовать прочитать эту информацию из [реестра] (http://stackoverflow.com/questions/6362775/getting-device-driver-information-related-to-a-com-port) - но это, конечно, будет работает только в Windows. – TmTron

+0

Странно, JSSC работает как шарм. Не стесняйтесь загрузить этот код, https://github.com/enriquezrene/javafx-arduino. Я показываю COM-порты, и пользователь выбирает его, а затем я использую его для работы. Надеюсь, он вам поможет. –

ответ

2

Я использовал rxtxcomm.jar и rxtxSerial.dll для связи с Arduino. Этот фрагмент кода вы должны получить доступные порты:

@SuppressWarnings("unchecked") 
Enumeration<CommPortIdentifier> portEnum = CommPortIdentifier.getPortIdentifiers(); 

while (portEnum.hasMoreElements()) { 
    CommPortIdentifier currPortId = portEnum.nextElement(); 
    System.out.println(currPortId.getName() + " - " + currPortId.getCurrentOwner()); 
} 

Вот статья с некоторыми более подробной информации: https://blog.henrypoon.com/blog/2010/12/25/installing-rxtx-for-serial-communication-with-java/

+0

Проблема в том, что я Не подключайтесь к устройству с помощью кода, но я использую дополнительный API для завершения соединения и передачи необходимых данных. – Zeliax