Как получить имя порта в C #? - PullRequest
2 голосов
/ 18 мая 2011

Как получить имя порта в c #?

Я знаю, что мы можем получить все имена портов с помощью метода

System.IO.Ports.SerialPort.GetPortNames()

. Но этот метод возвращает все имя порта, а также всеИмена виртуальных COM-портов.

Например, один из моих компьютеров не имеет COM-порта, но имеет четыре USB-порта.Так что теперь функция возвращает количество портов как четыре.Но все порты являются виртуальными COM-портами.

Итак, как мне узнать имена портов, есть ли для этого функции InBuilt.

Ответы [ 3 ]

2 голосов
/ 18 мая 2011

Виртуальные COM-порты предназначены для имитации реального COM-порта, и, насколько я знаю, не существует стандартного способа определить, что это виртуальный COM-порт.

Если на компьютерах, на которые устанавливается приложение, все будут иметь одинаковые виртуальные порты, вы можете сделать что-то нестандартное, посмотрев документацию на драйвер для виртуального com-порта.

Если бы вы могли гарантировать, что все имена содержат слово virtual, вы могли бы сделать:

System.IO.Ports.SerialPort.GetPortNames().Where( x => !x.Contains("Virtual")).Count();
1 голос
/ 13 сентября 2011

Если вам нужно получить все доступные порты в C #, вы можете использовать этот код.Это помещает порты в выпадающий список.

// Get the valid COM ports and insert them into the portCombo.
Array ports = System.IO.Ports.SerialPort.GetPortNames();
for(int x=0; x< ports.Length;
   portCombo.Items.Add( ports.GetValue(x)); 
0 голосов
/ 18 мая 2011

Если вы имеете в виду, что хотите прочитать имя подключенного устройства, вам нужно сделать это через реестр. Дайте мне знать, если вам нужно больше деталей.

import _winreg as winreg
import itertools

def enumerate_serial_ports():
    """ Uses the Win32 registry to return an
        iterator of serial (COM) ports
        existing on this computer.
    """
    path = 'HARDWARE\\DEVICEMAP\\SERIALCOMM'
    try:
        key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, path)
    except WindowsError:
        raise IterationError

    for i in itertools.count():
        try:
            val = winreg.EnumValue(key, i)
            yield str(val[1])
        except EnvironmentError:
            break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...