
var selector = SerialDevice.GetDeviceSelector("COM14");
var informations = await DeviceInformation.FindAllAsync(selector);
if (informations.Any())
{
var port = await SerialDevice.FromIdAsync(informations.First().Id);
}informations.Any()为false
我的错误在哪里?
发布于 2017-01-23 22:14:30
我还没有在UWP上尝试过,但是当访问10或更大的COM端口时有一个Windows quirk:你需要从用户模式指定完整的符号设备名。即,在前面加上\\.\
var selector = SerialDevice.GetDeviceSelector(@"\\.\COM14");发布于 2018-06-26 18:05:25
Microsoft SerialCommuncation文档站点描述了当前不支持系统内部端口:Microsoft Docs about windows.devices.serialcommunication
我不明白为什么不,他们可能会在未来添加此功能。
一种解决方法是:
C#使用标准的.NET System.IO.Ports.SerialPort类(除了GetPortNames()),所有东西都可以在UWP 6.1.5的.NET中运行。作为GetPortNames的替代品,你可以使用GetCommPorts。
Windows ++/winrt使用新的Windows10RS3/4API调用OpenCommPort。请参阅函数原型的Windows头文件,因为此函数当前未在MS文档中记录。
另请注意,请确保您的应用程序在.appxmanifest文件中“声明”了对串行端口的访问权限:
<DeviceCapability Name="serialcommunication">
<Device Id="any">
<Function Type="name:serialPort" />
</Device>
</DeviceCapability>https://stackoverflow.com/questions/41799889
复制相似问题