Невозможно открыть порт UART в Windows IoT с помощью Raspberry Pi 3 - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть ноль в последовательном порте после того, как я открываю SerialDevice в C # на Windows IoT Core 10, работающей на Raspberry Pi 3.

Вот код:

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

serialPort это null.

di.Id равно: Id "\\\\?\\ACPI#BCM2836#0#{86e0d1e0-8089-11d0-9ce4-08003e301f73}" string

list.Count равно 1

Вот две записи из запроса /api/devicemanager/devices GET, относящиеся к UART:

{
  "Class": "Ports",
  "Description": "BCM283x Mini UART Serial Device",
  "ID": "ACPI\\BCM2836\\0",
  "Manufacturer": "Microsoft",
  "ParentID": "ACPI_HAL\\PNP0C08\\0",
  "ProblemCode": 0,
  "StatusCode": 25182218
},
{
  "Class": "System",
  "Description": "ARM PL011 UART Device Driver",
  "ID": "ACPI\\BCM2837\\4",
  "Manufacturer": "Microsoft",
  "ParentID": "ACPI_HAL\\PNP0C08\\0",
  "ProblemCode": 0,
  "StatusCode": 25165834
},

Я пытался как замкнуть Rx и Tx, так и не замкнуть его, он не работает ...

ОБНОВЛЕНИЕ

Если я разделю указанный идентификатор, у меня будет Invalid data исключение.

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

string id = "{86e0d1e0-8089-11d0-9ce4-08003e301f73}";
try { serialPort = await SerialDevice.FromIdAsync(id); } catch(Exception e) { Debug.WriteLine(e.Message); }
id = "\\\\?\\ACPI#BCM2836#0#";
try { serialPort = await SerialDevice.FromIdAsync(id); } catch(Exception e) { Debug.WriteLine(e.Message); }
id = di.Id;
try { serialPort = await SerialDevice.FromIdAsync(id); } catch(Exception e) { Debug.WriteLine(e.Message); }
if (serialPort == null) { Debug.WriteLine("No device"); return; }

Вывод:

Исключение: «System.Exception» в mscorlib.ni.dll
Данные неверны.(Исключение из HRESULT: 0x8007000D)
Данные недействительны.(Исключение из HRESULT: 0x8007000D)
Нет устройства

1 Ответ

0 голосов
/ 12 февраля 2019

Как сказал Grim , решение здесь: SerialDevice.FromIdAsync () возвращает нулевой последовательный порт

Необходимо добавить:

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

в теге <Capabilities> в файле Package.appxmanifest.

...