DeviceInformation.FindAllAsync(SerialDevice.GetDeviceSelector()) 端口名称为空
DeviceInformation.FindAllAsync(SerialDevice.GetDeviceSelector()) Portname is empty
我正在尝试获取一些连接到 Windows IoT RPi 单元的 USB 转串口适配器的端口名称。我仍然能够打开,并且我得到了一个可用的实例化 serialDevice。我能够在端口上发送和接收数据,但 PortName 对象显示“”,所以我不知道它是 COM1 还是 COM2 等。这不是问题,除非我连接多个适配器并且需要一种方法来识别适配器独一无二。还有其他人看到了吗?
我用来查询和打开端口的代码是:
Dim dis = Await DeviceInformation.FindAllAsync(SerialDevice.GetDeviceSelector())
Dim Count As Integer = 0
Do Until Count = dis.Count
Debug.WriteLine("UART Port: " & dis(Count).Name & ", " & dis(Count).Id)
If dis(Count).Id.Contains("FTDI") Or dis(Count).Id.Contains("FT232") Then
serialPort = Await SerialDevice.FromIdAsync(dis(Count).Id)
End If
Count += 1
Loop
您可以在台式机上获得有效的 SerialDevice.PortName
,但不能在 Windows IoT Core 设备上获得。给串口设备分配一个COM号需要系统提供的函数驱动程序,如Serial.sys etc。但是 Windows IoT Core 设备上未提供这些驱动程序。你可以在C:\Windows\System32\drivers
路径下查看。
要识别多个设备,有一个解决方法是使用 VID(供应商 ID)和 PID(产品 ID)。它们被认为是独一无二的。
所以您可以使用 SerialDevice.GetDeviceSelectorFromUsbVidPid(vid, pid)
而不是 SerialDevice.GetDeviceSelector()
。您可以在 DeviceInformation.Id
中找到 VID 和 PID。它会像这样:
\?\USB#VID_10C4&PID_EA60#0001#{86e0d1e0-8089-11d0-9ce4-08003e301f73}
我正在尝试获取一些连接到 Windows IoT RPi 单元的 USB 转串口适配器的端口名称。我仍然能够打开,并且我得到了一个可用的实例化 serialDevice。我能够在端口上发送和接收数据,但 PortName 对象显示“”,所以我不知道它是 COM1 还是 COM2 等。这不是问题,除非我连接多个适配器并且需要一种方法来识别适配器独一无二。还有其他人看到了吗?
我用来查询和打开端口的代码是:
Dim dis = Await DeviceInformation.FindAllAsync(SerialDevice.GetDeviceSelector())
Dim Count As Integer = 0
Do Until Count = dis.Count
Debug.WriteLine("UART Port: " & dis(Count).Name & ", " & dis(Count).Id)
If dis(Count).Id.Contains("FTDI") Or dis(Count).Id.Contains("FT232") Then
serialPort = Await SerialDevice.FromIdAsync(dis(Count).Id)
End If
Count += 1
Loop
您可以在台式机上获得有效的 SerialDevice.PortName
,但不能在 Windows IoT Core 设备上获得。给串口设备分配一个COM号需要系统提供的函数驱动程序,如Serial.sys etc。但是 Windows IoT Core 设备上未提供这些驱动程序。你可以在C:\Windows\System32\drivers
路径下查看。
要识别多个设备,有一个解决方法是使用 VID(供应商 ID)和 PID(产品 ID)。它们被认为是独一无二的。
所以您可以使用 SerialDevice.GetDeviceSelectorFromUsbVidPid(vid, pid)
而不是 SerialDevice.GetDeviceSelector()
。您可以在 DeviceInformation.Id
中找到 VID 和 PID。它会像这样:
\?\USB#VID_10C4&PID_EA60#0001#{86e0d1e0-8089-11d0-9ce4-08003e301f73}