UWP app、シリアルデバイス(COM3など)に接続するには、以下のコードですべてのデバイスリストを取得できました。しかし、1つの点は奇妙です。デバイスにはVIDはなく、PIDはありません。UWP SerialDevice:デバイスが不良ですか? Vid、Pidと接続できません
- まず、私は私が私のシリアルデバイスを見つけることができ、 "GetDeviceSelector" を使用。そして、私はこの文字列 "\?\ FTDIBUS#VID_0403 + PID_6001 + AL03INW7A#0000#{86e0d1e0-8089-11d0-9ce4-08003e301f73}"を持っていました。私のデバイスにはVid = 0x0403、Pid = 0x6001があることが分かりました。
- 次へ "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
私はあなたがテストのために別のデバイスを持っていました、あなたのデバイスだか知っているだろう。。? ? –
私はここでデバイスを購入しました。(http://www.usconverters.com/usb-to-rs485-converter-iu100)...私は後で別のデバイスをテストします.... –
私は別のデバイスを試しました。仮想COMポートを持っています2番目のデバイスにはVid、PIdがあります... ..hmm ....私はこれをメーカーにリクエストします。私の最初のデバイスはFTDIです。 ... –