2017-06-22 40 views
1

私はこの問題をここで理解しようと多くの時間を費やしました。私はHIDバーコードスキャナーを使用しており、デバイス情報を取得できます。しかし、正しいデバイスIDであってもHidDeviceオブジェクトを保持することはできません。常にnullを返します。ここで私が持っているものです。HIdDevice.fromIdAsyncは常にnullを返します

var selector = Windows.Devices.HumanInterfaceDevice.HidDevice.getDeviceSelector(parseInt('0x1', 16), parseInt('0x6', 16)); 

     Windows.Devices.Enumeration.DeviceInformation.findAllAsync(selector, null).then(
       function (deviceInfoCollection) { 
        if (deviceInfoCollection.length > 0) { 
         for (var i = 0; i < deviceInfoCollection.length; i++) { 
          var id = deviceInfoCollection.getAt(i).id; 
          return Windows.Devices.HumanInterfaceDevice.HidDevice.fromIdAsync(id, Windows.Storage.FileAccessMode.readWrite); 
         } 
        } 
        else { 
         throw "No Devices Discovered."; 
        } 
       }) 
     .done(function (device) { 
      if (device != null) 
       successCallback(device.name); 
     }); 

私は私のマニフェストファイルでこれらのデバイスの機能を追加しました:

<DeviceCapability Name="humaninterfacedevice"> 
    <Device Id="any"> 
     <Function Type="usage:0001 *"/> 
    </Device> 
    </DeviceCapability> 
+0

[CustomHidDeviceAccess](https://github.com/Microsoft/Windows-universal-samples/tree/6370138b150ca8a34ff86de376ab6408c5587f5d/Samples/CustomHidDeviceAccess)のサンプルをテストしましたか?そうでない場合は、参照してください。 –

+0

ありがとうございます。私は持っていて、セレクタはSuperMUTTデバイスで動作するように設定されていたので、usageIDとusagePageIDを変更してキーボードのようなHIDデバイスを選択させました。デバイスがリストされているのを見ているうちに、デバイスに接続できませんでした。また、私はJavaScriptを使って作業しています。 – newbee8

答えて

1

私は今、同じ問題を通じてつもりです。通常

<Device Id="any"> 

、「任意の」値の作品:奇数として私を打つ、あなたのコード内で私が見る唯一のものは、次のマニフェストのタグです。しかし、ベンダーと製品IDが必要な場所で問題が発生しました。なぜ、私はそれはデバイス/ usageidの種類に基づいていると思うが、私はそれは本当によく分からない。私は、ベンダーと製品のIDをハードコーディングして、違いがあるかどうかを確認します。

もう1つの考え:スキャナがキーボードとして設定されていることを使用タグで推測しています。スキャナをキーボード以外のHIDデバイスとして設定できるかどうかを確認することができます。これは個人的に役立ちました。他のプログラムがそのデバイスを使用しているため、HidDeviceがnullとして返される問題がインターネット上の他の人に見られます。あなたのケースでは、OSはすでにキーボードを使用していて、何とかロックアウトしている可能性があります。

運が良かった!

+0

あなたのメモをありがとう、Dave。私は、デバイスの能力のためのvid/pidを与えようとしましたが、そこには運がありません。また、アプリケーションはさまざまな種類のバーコードスキャナとピンパッドをサポートする必要があります。これらのすべてがキーボードをエミュレートすることができます。しかし、バーコードスキャナーをPOSモードにして実験したところ、Microsoft POSライブラリはそれを取り上げることができました。いずれにしても、私はHidモードでデバイスの設定を簡単にするように努力しています。私たちのユースケースでは、一度に複数の周辺機器を接続することができます。 – newbee8

関連する問題