Я пытаюсь открыть дескриптор устройства USB в MonoLibUsb (в Linux), но каждый раз, когда я его открываю, я получаю IsInvalid == true
на дескрипторе устройства.Устройство USB не действует в MonoLibUsb
USB-устройство, безусловно, совместимо с LibUsb, поскольку я подключил его к компьютеру с ОС Windows и могу успешно использовать LibUsbDotNet, чтобы поговорить с ним. Если я попытаюсь использовать LibUsbDotNet в Mono, приложение зависает при попытке открыть его, поэтому я решил, что LibUsbDotNet предназначен для Windows, а MonoLibUsb для Mono (имя типа отдает его). Однако даже MonoLibUsb не может правильно использовать устройство.
Так почему же дескриптор устройства недействителен?
Код
private void UsbInit() {
var sessionHandle = new MonoUsbSessionHandle();
var profileList = new MonoUsbProfileList();
profileList.Refresh(sessionHandle);
List<MonoUsbProfile> usbList = profileList.GetList().FindAll(MyVidPidPredicate);
foreach(MonoUsbProfile profile in usbList) {
var deviceHandle = profile.OpenDeviceHandle();
if (deviceHandle.IsInvalid) {
Console.WriteLine(string.Format("IsInvalid: {0} - {1}", MonoUsbSessionHandle.LastErrorCode, MonoUsbSessionHandle.LastErrorString));
}
}
}
private bool MyVidPidPredicate(MonoUsbProfile profile) {
if (profile.DeviceDescriptor.VendorID == 0xabcd && profile.DeviceDescriptor.ProductID == 0x1234)
return true;
return false;
}
Выход
IsInvalid: Success -