【发布时间】:2017-07-26 16:32:29
【问题描述】:
获取 COM 端口号(串行,例如:COM1,COM2,,,) 单击按钮时,我想在 UI 上显示可用的 COM 端口列表。第一次点击成功获取 COM 号,但第二次点击失败。你有什么理由吗?
这是一个测试两次点击的简单代码。
public async Task<bool> test()
{
Debug.WriteLine("Start");
var aqs = SerialDevice.GetDeviceSelector();
var dis = await DeviceInformation.FindAllAsync(aqs);
var port = await SerialDevice.FromIdAsync(dis[0].Id);
Debug.WriteLine("COM=" + port?.PortName);
var aqs2 = SerialDevice.GetDeviceSelector();
var dis2 = await DeviceInformation.FindAllAsync(aqs2);
var port2 = await SerialDevice.FromIdAsync(dis2[0].Id);
//port2 will be null
Debug.WriteLine("COM=" + port2?.PortName);
Debug.WriteLine("end");
return true;
}
public MainPage()
{
this.InitializeComponent();
Task.Run(() => this.test()).Wait();
}
并且 Package.appxmanifext 有这个代码。
<Capability Name="internetClient" />
<DeviceCapability Name="serialcommunication">
<Device Id="any">
<Function Type="name:serialPort" />
</Device>
</DeviceCapability>
</Capabilities>
这是执行结果。
Start
COM=COM15
COM=
end
This post 也指出了同样的问题。我在这里写了评论。但为了得到答案,我将其发布为新问题。
Q : 更换设备时获取COM端口列表和更新列表,我应该写什么代码?
【问题讨论】:
标签: c# xaml uwp serial-port