我正在通过USB与ESP 301电机控制器进行通信(或尝试)。 See here for documentation if needed(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:
调整UsbDevice.GetDeviceSelector
调用以使用常量文件中定义的GUID,如下所示:
string aqs = UsbDevice.GetDeviceSelector(Constants.ESPGUID);
似乎也没有改变任何东西。
我知道容器是空的,因为我打印到控制台的计数是0,而且我也超出了范围异常。
我正在打印的aqs字符串如下所示:
System.Devices.InterfaceClassGuid:= “{DEE824EF-729B-4A0E-9C14-B7117D33A817}” 和 System.Devices.InterfaceEnabled:= System.StructuredQueryType.Boolean#真 和 System.DeviceInterface.WinUsb.DeviceInterfaceClasses:〜= “{4D36E978-E325-11CE-BFC1-08002BE10318}”
我尽量提供尽可能多的信息,我们将非常感谢您提供的任何帮助。谢谢。