IAsyncOperation <SerialDevice>FromIdAsync (строка deviceId) возвращает ноль - PullRequest
1 голос
/ 13 марта 2019

У меня Windows IoT Core 10 17744 под управлением Raspberry Pi 3.
Я пытаюсь инициализировать COM-порт из приложения UWP, используя следующий код:

string aqs = SerialDevice.GetDeviceSelector();
DeviceInformationCollection devices = await DeviceInformation.FindAllAsync(aqs);
List<DeviceInformation> list = devices.ToList();
DeviceInformation di = list.First();
_serial_port = await SerialDevice.FromIdAsync(di.Id);

У меня есть di.Id -> \\?\ACPI#BCM2836#0#{86e0d1e0-8089-11d0-9ce4-08003e301f73}
Полная перестановка переменной di следующим образом:

-       di  {Windows.Devices.Enumeration.DeviceInformation} Windows.Devices.Enumeration.DeviceInformation
        EnclosureLocation   null    Windows.Devices.Enumeration.EnclosureLocation
        Id  "\\\\?\\ACPI#BCM2836#0#{86e0d1e0-8089-11d0-9ce4-08003e301f73}"  string
        IsDefault   false   bool
        IsEnabled   true    bool
        Kind    DeviceInterface Windows.Devices.Enumeration.DeviceInformationKind
        Name    "MINWINPC"  string
-       Pairing {Windows.Devices.Enumeration.DeviceInformationPairing}  Windows.Devices.Enumeration.DeviceInformationPairing
        CanPair false   bool
+       Custom  {Windows.Devices.Enumeration.DeviceInformationCustomPairing}    Windows.Devices.Enumeration.DeviceInformationCustomPairing
        IsPaired    false   bool
        ProtectionLevel None    Windows.Devices.Enumeration.DevicePairingProtectionLevel
        Native View To inspect the native object, enable native code debugging. 
+       Properties  {System.__ComObject}    System.Collections.Generic.IReadOnlyDictionary<string, object> {System.__ComObject}
        Native View To inspect the native object, enable native code debugging. 

Но после операции await у меня ноль в _serial_port.

UPDATE

Это null, даже если я подключаю интерфейс Raspberry UART к рабочему узлу:
8-й контакт как TX к спаренной линии RX.
10-й штырь как RX к парной линии TX.

UPDATE

У меня есть DeviceCapability в манифесте:

<DeviceCapability Name="serialcommunication">
  <Device Id="any">
    <Function Type="name:serialPort" />
  </Device>
</DeviceCapability>

1 Ответ

0 голосов
/ 14 марта 2019

Вам необходимо добавить возможность последовательного устройства в Package.appxmanifest :

<DeviceCapability Name="serialcommunication">
  <Device Id="any">
    <Function Type="name:serialPort" />
  </Device>
</DeviceCapability>

Это значение равно нулю, даже если я подключаю интерфейс Raspberry UART к рабочему узлу: 8-ой контакт как TX к спаренной линии RX. 10-й штырь как RX к парной линии TX.

Это не требуется для успеха SerialDevice.FromIdAsync (). Даже если вы не подключите эти контакты, SerialDevice.FromIdAsync () может получить действительное устройство, если код и настройки установлены правильно. Вы можете обратиться к Последовательный образец UART .

...