我正在寻找可以获取UWP应用程序中串行端口列表的API。 由于System.IO.Ports不适用于UWP,您能否提供以下代码的替代方案。
string[] ports = SerialPort.GetPortNames();
答案 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);
}