3

USB 経由で ESP 301 モーター コントローラーと通信しています (または通信しようとしています)。資料が必要な方はこちら(PDF)

これを行うために、私はC#で作業しており、次の機能を持っています:

private async void connectDevice()
{
    string aqs = UsbDevice.GetDeviceSelector(Constants.ESPVENDORID,Constants.ESPPRODUCTID);
    Console.WriteLine(aqs);
    var myDevices = await DeviceInformation.FindAllAsync(aqs);
    Console.WriteLine(myDevices.Count);
    try
    {
        esp301 = await UsbDevice.FromIdAsync(myDevices[0].Id);
        Console.WriteLine("SUCCESSFULLY OPENED DEVICE FOR COMMUNICATION");
        initialized = true;
    }
    catch (Exception exception)
    {
        Console.WriteLine("ERROR:");
        Console.WriteLine(exception.Message.ToString());
    }

}

ただし、DeviceInformation.FindAllAsync(aqs)呼び出しは空のコンテナーを返します。

以下を含むようにアプリ マニフェストを変更しました。

<Capabilities>
    <DeviceCapability Name="usb">
      <Device Id="vidpid:104D3001">
      </Device>
    </DeviceCapability>
  </Capabilities>

これは私が最も不確かな点であり、これに関する多くの情報を見つけるのに苦労しています.

別の定数クラスでは、次のように定義しています。

public static Guid ESPGUID { get { return new Guid("{4d36e978-e325-11ce-bfc1-08002be10318}"); } }
public static uint ESPVENDORID { get { return 0x104D; } }
public static uint ESPPRODUCTID { get { return 0x3001; } }

これはすべて正しいようです。Microsoft が配布する USB View アプリケーションを使用して、ベンダーと製品 ID を確認しました。

USB ビュー

UsbDevice.GetDeviceSelector次のように、定数ファイルで定義された GUID を使用するように呼び出しを調整します。

string aqs = UsbDevice.GetDeviceSelector(Constants.ESPGUID);

も何も変わらないようです。

コンソールに出力しているカウントが 0 であるため、コンテナが空であることがわかり、範囲外の例外も発生します。

私が印刷している aqs 文字列は次のようになります。

System.Devices.InterfaceClassGuid:="{DEE824EF-729B-4A0E-9C14-B7117D33A817}" AND System.Devices.InterfaceEnabled:=System.StructuredQueryType.Boolean#True AND System.DeviceInterface.WinUsb.DeviceInterfaceClasses:~="{4D36E978- E325-11CE-BFC1-08002BE10318}"

できるだけ多くの情報を提供するように努めました。ありがとうございました。

4

0 に答える 0