DeviceInformation.FindAllAsync (SerialDevice.GetDeviceSelector ()) Имя порта пусто - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь получить имя порта некоторых работающих адаптеров USB-to-Serial, подключенных к устройству Windows IoT RPi.Я все еще могу открыть, и я получаю экземпляр serialDevice, который работает.Я могу отправлять и получать данные о порте, но объект PortName показывает «», поэтому я понятия не имею, является ли его COM1 или COM2 и т. Д. Это не будет проблемой, за исключением того, что я подключаю несколько адаптеров и мне нужен способ определитьадаптер однозначно.Кто-нибудь еще видел это?

Код, который я использую для запроса и открытия портов:

 Dim dis = Await DeviceInformation.FindAllAsync(SerialDevice.GetDeviceSelector())
 Dim Count As Integer = 0
    Do Until Count = dis.Count
        Debug.WriteLine("UART Port: " & dis(Count).Name & ", " & dis(Count).Id)
        If dis(Count).Id.Contains("FTDI") Or dis(Count).Id.Contains("FT232") Then
            serialPort = Await SerialDevice.FromIdAsync(dis(Count).Id)
        End If
        Count += 1
    Loop

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете получить действительный SerialDevice.PortName на рабочем столе, но не на устройстве Windows Io Core.Для назначения COM-номера последовательному устройству необходим системный функциональный драйвер, такой как Serial.sys и т. Д. .Но эти драйверы не предоставляются на устройстве Windows IoT Core.Вы можете проверить его в C:\Windows\System32\drivers path.

Чтобы идентифицировать несколько устройств, есть обходной путь, который использует VID (идентификатор поставщика) и PID (идентификатор продукта),Они считаются уникальными.

Так что вместо SerialDevice.GetDeviceSelector() вы можете использовать SerialDevice.GetDeviceSelectorFromUsbVidPid(vid, pid).Вы можете найти VID и PID в DeviceInformation.Id.Это понравится:

\\?\USB#VID_10C4&PID_EA60#0001#{86e0d1e0-8089-11d0-9ce4-08003e301f73}

...