【发布时间】:2016-12-01 02:18:39
【问题描述】:
我尝试编写的 UWP 应用存在问题。我正在连接到我已编程的自定义嵌入式 USB 批量设备(它实际上是赛普拉斯半导体的开箱即用示例)。我正在使用 WinUSB.sys 驱动程序,使用设备中的嵌入式 MS OS 字符串来允许使用设备,而无需编写自定义 INF 文件来调用 WinUSB.sys 驱动程序。
在我的代码中,我使用 UsbDevice.GetDeviceSelector 方法返回一个 AQS,然后可以将其传递给 DeviceInformation.FindAllAsync 以开始与我的应用程序中的设备进行通信。我已经确认设备显示在设备管理器中没有任何问题,并且我已经检查了注册表以确保它具有接口 GUID。我有一个来自 USBViewer 的屏幕截图来显示设备的配置。这种查找和连接 USB 设备的方法来自这个 MSDN 示例,找到了 here。
当我使用 UsbDevice.GetDeviceSelector 方法时,它返回一个与此设备无关的 GUID。它返回的 GUID 实际上与 Lumia 电话 (DEE824EF-729B-4A0E-9C14-B7117D33A817) 相关联。因此,它找不到我的设备连接到系统。
为了排除故障,我都调用了 DeviceInformation.FindAllAsync,不带任何参数来查看我的设备是否在列表中,并且它确实找到了该设备(在已连接到我的机器的 1000 多个其他设备中)。然后,我在没有 GetDeviceSelector 方法的帮助下编写了一个自定义 AQS 字符串,仅从 GUID 开始。这样做会返回 27 个设备,但是当我尝试将 VID 和 PID 添加到此 AQS 字符串时,没有返回任何内容。
我还确保我要使用的设备按其相应的 VID 和 PID 在应用清单中列出,因为这是自定义类为 0xFF 的设备所必需的。我使用了自定义 USB UWP 设备示例,它可以找到该设备,尽管它使用完全不同的方法和设备选择器,如果需要,我会使用它,但这不是我的愿望,因为它是应用程序的一部分没有那么干净的解决方案。
我已经在 MSDN 论坛here 上发布了这个问题,并提供了更多信息,但我在那里没有得到很多参与。任何帮助,将不胜感激。我知道我一定遗漏了一些简单的东西。
亚当
private async void button_Click(object sender, RoutedEventArgs e)
{
//UInt32 vid = 0x04B4;
//UInt32 pid = 0x00F0;
UInt32 vid = uint.Parse(textBox1.Text, System.Globalization.NumberStyles.HexNumber);
UInt32 pid = UInt32.Parse(textBox2.Text, System.Globalization.NumberStyles.HexNumber);
Guid winusbInterfaceGuid = new Guid("a5dcbf10-6530-11d2-901f-00c04fb951ed");
//string aqs = UsbDevice.GetDeviceSelector(vid, pid);
string aqs = UsbDevice.GetDeviceSelector(winusbInterfaceGuid);
var myDevices = await DeviceInformation.FindAllAsync(aqs, null);
//var myDevices = await DeviceInformation.FindAllAsync();
var myDevicesCount = myDevices.Count;
if (myDevicesCount >= 1)
{
textBlock2.Text = "Device Found";
} else
{
textBlock2.Text = "Searching";
await Task.Delay(1000);
textBlock2.Text = "looking for device";
}
}
【问题讨论】:
-
抱歉,我不能添加超过 2 个链接。我有两张图片要上传,但作为新用户,我受到了限制。
-
请尝试最新的CustomUsbDeviceAccess 示例。它没有使用完全不同的方法,它只是使用 `var osrFx2Selector = UsbDevice.GetDeviceSelector(OsrFx2.DeviceVid, OsrFx2.DevicePid);` 来创建 aqs。然后调用
CreateWatcher方法。请将您的 aqs 与官方样本进行比较。 -
正如你所说的官方样品可以很好地工作,意味着已经有适合你的解决方案。请检查并比较你的不同之处。
-
@Sunteen-MSFT 我刚刚检查了最新版本,但它似乎不起作用。我需要去看看我是否有旧版应用程序的本地副本,看看它是否仍然有效。我什至尝试更改我的 VID/PID 以匹配与 Mutt 设备关联的 VID/PID 之一,但没有成功。