none
在metro开发中 怎么连接usb设备? RRS feed

  • 问题

  • 我在开发metro 的时候 发现连接不上usb 设备,我是参照代码http://msdn.microsoft.com/zh-cn/library/windows/apps/bg182882.aspx#one开发的

    下面是我的代码:

     private async void EnumerateHidDevices()
            {
                UInt16 vendorId = 0x2047;
                UInt16 productId = 0x0301;
                UInt16 usagePage = 0x008C;
                UInt16 usageId = 0x0001;
    
                // Create a selector that gets a HID device using VID/PID and a 
                // VendorDefined usage.
                string selector = HidDevice.GetDeviceSelector(usagePage, usageId,
                                  vendorId, productId);
    
                // Enumerate devices using the selector.
                var devices = await DeviceInformation.FindAllAsync(selector);
    
                if (devices.Count > 0)
                {
    
                    // Open the target HID device at index 0.
                    HidDevice device = await HidDevice.FromIdAsync(devices.ElementAt(0).Id,
                                      FileAccessMode.ReadWrite);
    
                    if (device != null)
                    {
                        string msg = string.Format("You say: {0}.", this.tbInput.Text);
                        MessageDialog dialg = new MessageDialog(msg, "Hello world");
                        dialg.ShowAsync();
                    }
    
                    // At this point the device is available to communicate with,
                    // so we can send/receive HID reports from it or 
                    // query it for control descriptions.
                }
                else
                {
                    // There were no HID devices that met the selector criteria.
                   // this.NotifyUser("MUTT HID device not found");
                }
            }
    现在的问题是:
               var devices = await DeviceInformation.FindAllAsync(selector);
    
                if (devices.Count > 0)

    当我执行到这的时候: device.count = 1;表示找到了这个设备

                    HidDevice device = await HidDevice.FromIdAsync(devices.ElementAt(0).Id,
                                      FileAccessMode.ReadWrite);
    
                    if (device != null)

    当执行打开设备的时候,device 老是等于 null, 不知道什么什么原因导致的,求解答。

    注: 在非 metro 测试程序的时候 可以正常调用usb 设备,说明 usb设备 没有问题。

    2015年1月14日 2:06

答案

  • 你好 lu JL

    你代码中的vendorID或者其他几个变量是根据当前您的设备改动过了吗?

    另外您需要参考下: http://msdn.microsoft.com/zh-cn/library/windows/apps/bg182882.aspx#limitations_of_the_hid_api 看看是否您的HID设备是被限制的。

    --James


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 lu JL 2015年1月23日 5:36
    2015年1月14日 3:19
    版主
  • 你好 lujl,

    我手边没有HID设备可以做测试,不过一般来说设备本身肯定是能获取到的,只需要填写正确的ID即可,不过设备的使用应该是在核心代码层就被限制掉的,比如说Page页面的访问。

    如果你需要更详细的测试的话,我建议你可以通过付费支持来获得对应设备的结果。多谢理解。

    --James


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    2015年1月20日 6:23
    版主

全部回复

  • 你好 lu JL

    你代码中的vendorID或者其他几个变量是根据当前您的设备改动过了吗?

    另外您需要参考下: http://msdn.microsoft.com/zh-cn/library/windows/apps/bg182882.aspx#limitations_of_the_hid_api 看看是否您的HID设备是被限制的。

    --James


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 lu JL 2015年1月23日 5:36
    2015年1月14日 3:19
    版主
  • 你好 James

     设备变量已经改过了。 

    我的HID USB设备上显示是:符合HID标准的条形码标记读取器;

    我看了一下不知道是不是因为我的设备是属于他所阻止的几个usage_page中之一:HID_USAGE_PAGE_MAGNETIC_STRIPE_READER

    • 已标记为答案 lu JL 2015年1月23日 5:36
    • 取消答案标记 lu JL 2015年1月23日 5:36
    2015年1月14日 6:22
  • 对,如果你的设备是在限制列表中的,是不可以被访问的。

    --James


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年1月14日 9:09
    版主
  • 你好 James

    感谢你上一次的回答,我这边得再次确定一下是不是因为设备是在限制列表中这个原因,决定到下面项目的进行。我现在设备硬件信息如下

    HID\VID_2047&PID_0301&REV_0300
    HID\VID_2047&PID_0301
    HID_DEVICE_UP:008C_U:0001
    HID_DEVICE

    参照我上面的代码,我这边发现我的设备信息都能获取到,就是打开设备返回为Null。

    帮忙看一下是不是因为被限制了?如果被限制的话是属于哪个限制页?如果需要更多设备信息的话我提供,再次麻烦你了。

    -- lujl

    2015年1月19日 8:37
  • 你好 lujl,

    我手边没有HID设备可以做测试,不过一般来说设备本身肯定是能获取到的,只需要填写正确的ID即可,不过设备的使用应该是在核心代码层就被限制掉的,比如说Page页面的访问。

    如果你需要更详细的测试的话,我建议你可以通过付费支持来获得对应设备的结果。多谢理解。

    --James


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    2015年1月20日 6:23
    版主
  • 你好 james

    谢谢你的回答

    -- lujl

    2015年1月23日 5:36