2017-07-27 7 views
0

UWP app、シリアルデバイス(COM3など)に接続するには、以下のコードですべてのデバイスリストを取得できました。しかし、1つの点は奇妙です。デバイスにはVIDはなく、PIDはありません。UWP SerialDevice:デバイスが不良ですか? Vid、Pidと接続できません

USB-RS485 convertor

  1. まず、私は私が私のシリアルデバイスを見つけることができ、 "GetDeviceSelector" を使用。そして、私はこの文字列 "\?\ FTDIBUS#VID_0403 + PID_6001 + AL03INW7A#0000#{86e0d1e0-8089-11d0-9ce4-08003e301f73}"を持っていました。私のデバイスにはVid = 0x0403、Pid = 0x6001があることが分かりました。
  2. 次へ "GetDeviceSelectorFromUsbVidPid(0x0403、0x6001)"を使用している場合。 UWPがデバイスを検出できません...

なぜですか?

最初はテストコードです。

public MainPage()                             
     {                               
      this.InitializeComponent();                        

      Task.Run(() => this.test()).Wait();                      

     }                               

     public async Task test()                         
     {                               
      try                              
      {                              
       // Not Work                           
       // var DeviceSelector = SerialDevice.GetDeviceSelectorFromUsbVidPid(0x0403, 0x6001); //        

       // Work                            
       var DeviceSelector = SerialDevice.GetDeviceSelector();               
       var DeviceInformations = await DeviceInformation.FindAllAsync(DeviceSelector);          

       for (int i = 0; i < DeviceInformations.Count; i++)                 
       {                             
        var d = DeviceInformations[i];                     
        SerialDevice port = await SerialDevice.FromIdAsync(d.Id);              

        Debug.WriteLine(String.Format("{0}\n{1}\n{2}\n{3}\n{4}\n{5}\n---------------------",       
         d.Name,                          
         d.Id,                          
         d.IsEnabled,                        
         port?.PortName,                        
         port?.UsbProductId.ToString("X4"),                    
         port?.UsbVendorId.ToString("X4")                    
         ));                           


       }                             
      }                              
      catch (Exception ex)                         
      {                              
       Debug.WriteLine("SerialController/ListAvailablePorts/Exception/" + ex.Message);          
      }                              

      return;                             
     }                               

Package.appxmanifestにもこの値が必要です。

<Capabilities> 
    <Capability Name="internetClient" /> 
    <DeviceCapability Name="serialcommunication"> 
     <Device Id="any"> 
     <Function Type="name:serialPort" /> 
     </Device> 
    </DeviceCapability> 
    </Capabilities> 
</Package> 

これはGetDeviceSelectorの結果です。

FT232R USB UART 
\\?\FTDIBUS#VID_0403+PID_6001+AL03INW7A#0000#{86e0d1e0-8089-11d0-9ce4-08003e301f73} 
True 
COM12 
0000 
0000 

最後の2つのゼロ値を参照してください。 VID、PIDはゼロのように見えます。なにが問題ですか ?

アップデート1

Sunteenウー(ありがとう)のアドバイスで、私は他のデバイスを使用しようとしました。次のデバイスはRS232-USBデバイスです。どちらのデバイスも仮想COMポートです。私は同じコードを試した。 2番目のデバイスにはVid、Pidがあります!うーん.....私のデバイスは、それは私のデバイスの障害である.....

ATEN USB to Serial Bridge (COM13) 
\\?\USB#VID_0557&PID_2008#8&1d38065f&1&4#{86e0d1e0-8089-11d0-9ce4-08003e301f73} 
System.Runtime.InteropServices.WindowsRuntime.ReadOnlyDictionaryValueCollection`2[System.String,System.Object] 
COM13 
2008 
0557 

enter image description here

+0

私はあなたがテストのために別のデバイスを持っていました、あなたのデバイスだか知っているだろう。。? ? –

+0

私はここでデバイスを購入しました。(http://www.usconverters.com/usb-to-rs485-converter-iu100)...私は後で別のデバイスをテストします.... –

+0

私は別のデバイスを試しました。仮想COMポートを持っています2番目のデバイスにはVid、PIdがあります... ..hmm ....私はこれをメーカーにリクエストします。私の最初のデバイスはFTDIです。 ... –

答えて

0

間違っていました。私はそれを製造のために報告した。私は彼らがビッド、ピッド将来を追加することを願っています。 詳細については、私の質問の「更新」をお読みください。購入前に

は、それを知る方法は...ありません:(

私は彼らの製品が好きそれはとても良いことだ

関連する問題