我已经编写了一个Windows应用商店应用来测试通过WINUsb与设备的通信。它适用于开发笔记本电脑(Windows 8.1 Preview,VS2013),但不适用于Surface。
设备在设备管理器中出现(在通用串行总线设备下),但我的程序找不到它。
我在Surface上安装了VS2013进行测试。这是一段代码:
var selector = "System.Devices.InterfaceClassGuid:=" + "{DEE824EF-729B-4A0E-9C14-B7117D33A817}" + " AND System.Devices.InterfaceEnabled:=System.StructuredQueryType.Boolean#True AND System.DeviceInterface.WinUsb.UsbVendorId:=1250 AND System.DeviceInterface.WinUsb.UsbProductId:=5136";
ObservableCollection<string> propertiesToRetrieve = new ObservableCollection<string>();
propertiesToRetrieve.Add("System.Devices.InterfaceClassGuid");
propertiesToRetrieve.Add("System.Devices.ContainerId");
var interfaces = await DeviceInformation.FindAllAsync(selector, propertiesToRetrieve);
foreach (DeviceInformation deviceInterface in interfaces)
{
//device = await UsbDevice.FromIdAsync(deviceInterface.Id);
var pt = deviceInterface.Properties.GetEnumerator();
while (pt.MoveNext())
{
if (pt.Current.Value != null)
tbMsg.Text += string.Format("{0}{1}", (pt.Current.Key + "=" + pt.Current.Value), Environment.NewLine);
}
}
我尝试了“选择器”的不同变体,但仍无法找到设备。
有什么想法吗?
非常感谢,
谢里
答案 0 :(得分:0)
AQS过滤字符串需要与设备接口上的属性匹配。如果不这样做,则过滤掉设备信息对象。显然,表面平板电脑上的某些属性与其他PC相比有所不同。
我会请求您在过滤器选择器中使用的所有属性,删除选择器,或者删除子句,它会找到您要查找的接口,然后查看属性。
一旦您看到您尝试查找的界面上有哪些属性值,然后在逻辑上评估过滤器。有些值必须与您预期的不同。
萨姆