如何在UWP中获得可用的串口?

时间:2018-01-29 05:48:48

标签: c# uwp window

我正在寻找可以获取UWP应用程序中串行端口列表的API。 由于System.IO.Ports不适用于UWP,您能否提供以下代码的替代方案。

string[] ports = SerialPort.GetPortNames();

2 个答案:

答案 0 :(得分:1)

首先在你的ptoject中的 Package.appxmanifest 中添加这些项目,右键单击Package.appxmanifest并在Capabilities标签中选择查看代码

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

之后,将所有串行设备连接到您的电脑,然后选中 PortName

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

答案 1 :(得分:0)

@Parsa Karami 提供的代码的补充:

如果你在执行代码后尝试打开串口,它会抛出 System.IO.IOException。所以,我建议你在获取端口名称后添加 Dispose() 调用。

string aqs = SerialDevice.GetDeviceSelector();
var deviceCollection = await DeviceInformation.FindAllAsync(aqs);
List<string> portNamesList = new List<string>();
foreach (var result in deviceCollection)
{
    var serialDevice = await SerialDevice.FromIdAsync(result.Id);
    var portName = serialDevice.PortName;
    serialDevice.Dispose(); // Addition
    portNamesList.Add(portName);
}