UWP SerialCommunication: ожидает SerialDevice.FromIdAsync не возвращает SerialDevice

#c# #uwp #async-await #serial-communication

#c# #uwp #async-ожидает #последовательная связь

Вопрос:

Простой фрагмент кода для возврата информации о порту:

 private async void GetPortNames()
{
   string deviceSelector = SerialDevice.GetDeviceSelector();

   DeviceInformationCollection deviceCollection = await 
      DeviceInformation.FindAllAsync(deviceSelector);

   List<string> portNamesList = new List<string>();
   foreach (var item in deviceCollection)
   {
     SerialDevice serialDevice = await SerialDevice.FromIdAsync(item.Id);
     string portName = serialDevice.PortName;
     portNamesList.Add(portName);
   }
}
  

По какой-либо причине «ожидает SerialDevice.FromIdAsync (элемент.Идентификатор)» никогда не возвращает SerialDevice. Я использую Win10 v.1809, и я также проверил, что в манифесте пакета упоминается последовательная связь.

Вот некоторые другие вещи, которые я пробовал: я создал библиотеку Net Standard 2.0 с помощью Microsoft.Windows.Совместимость и сослался на нее в моем приложении UWP. UWP не позволил бы мне использовать SerialPort.GetPortNames() метод. Я также пытался реализовать RJCP.IO . Это тоже не сработало.

Есть идеи?

** Обновить **

Это может быть архитектурной проблемой с Panasonic Toughbook FZ-M1: как я упоминал ранее, «SerialDevice.FromIdAsync (элемент.Идентификатор)» не возвращает SerialDevice. На самом деле он возвращает null. Версия элемента от Panasonic.Идентификатор указывает на нужную вещь в реестре, но элемент.Вместо «COM###» возвращается Name = «DESKTOP-QR####» (то есть имя компьютера).

Комментарии:

1. Под «никогда не возвращает SerialDevice», я полагаю, вы имеете в виду, что оно зависает, когда вы это делаете await SerialDevice.FromIdAsync(item.Id) ?

2. Когда я прогнал свой фрагмент кода через отладчик, он выглядит как ожидающее SerialDevice. FromIdAsync выполняется, но приложение не зависает. Я все еще могу перемещаться по своему приложению и выполнять другие функции. Возможно, лучшее описание — await SerialDevice . FromIdAsync ожидает вечно? @IanKemp