有时我将无法访问正在编程的硬件,或者调试不好。所以这就是为什么我想让我的生活更轻松一些并使用虚拟串行端口。
我选择使用 com0com 是因为它的设置非常简单,而且它是免费的。
我的问题是我的 UWP 应用确实找到了端口但无法连接到它。
我正在使用的代码是:
public async Task<string> Init()
{
try
{
if (_serialPort == null)
{
var aqs = SerialDevice.GetDeviceSelector("COM7");
var devices = await DeviceInformation.FindAllAsync(aqs, null);
if (devices.Any())
{
await OpenPort(devices[0].Id);
return "found port";
}
}
else
{
return "port already configured";
}
return "whatever";
}
catch (Exception ex)
{
return ex.Message;
}
}
private async Task OpenPort(string deviceId)
{
try
{
_serialPort = await SerialDevice.FromIdAsync(deviceId);
if (_serialPort != null)
{
_serialPort.WriteTimeout = TimeSpan.FromMilliseconds(1000);
_serialPort.ReadTimeout = TimeSpan.FromMilliseconds(1000);
_serialPort.BaudRate = 19200;
_serialPort.Parity = SerialParity.None;
_serialPort.StopBits = SerialStopBitCount.One;
_serialPort.DataBits = 8;
_serialPort.Handshake = SerialHandshake.None;
}
}
catch (Exception ex)
{
throw ex;
}
}
我知道代码本身正在工作,因为我将它与这样的硬件一起使用。我唯一改变的是我直接搜索COM7端口。
当我调试我的代码时,我可以看到该端口已找到并加载到“设备 [0]”中,但是当我运行该FromIdAsync
方法时它没有加载到“设备”中。
我做错了什么还是 UWP 不适用于虚拟端口?