MonoLibUsb (Linux)에서 USB 장치 핸들을 열려고하는데 장치를 열 때마다 장치 핸들에 IsInvalid == true
이 표시됩니다.MonoLibUsb에서 USB 장치가 유효하지 않습니다.
USB 장치는 내 Windows PC에 연결 했으므로 LibUsb와 확실히 호환되며 LibUsbDotNet을 사용하여 성공적으로 대화 할 수 있습니다. Mono에서 LibUsbDotNet을 사용하려고하면 응용 프로그램이 열리려고 할 때 정지되므로 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 -