다음을 통해 공유


USB 인터페이스 설정 선택 방법(UWP 앱)

이 문서에서는 USB 인터페이스 내에서 설정을 변경하는 방법을 보여 줍니다. UsbInterfaceSetting 개체를 사용하여 현재 설정을 가져와서 인터페이스에서 설정을 설정합니다.

시작하기 전에

  • 디바이스를 열고 UsbDevice 개체를 가져와야 합니다. USB 디바이스에 연결하는 방법(UWP 앱)을 참조하세요.
  • 코드 예제는 CustomUSBDevice 샘플을 기반으로 합니다. 이 코드 갤러리 페이지에서 전체 샘플을 다운로드할 수 있습니다.

USB 인터페이스 설정 정보

각 USB 인터페이스는 인터페이스 설정에 그룹화된 하나 이상의 엔드포인트를 노출합니다. 이러한 설정은 디바이스 정의이며 설정 인덱스라는 숫자로 식별됩니다. 각 인터페이스에는 하나의 활성 설정 있어야 합니다. 여러 인터페이스 디바이스의 경우 각 인터페이스에 활성 설정이 있어야 합니다. 설정이 활성 상태이면 데이터를 엔드포인트로 또는 엔드포인트에서 전송할 수 있습니다. 비활성 설정의 엔드포인트는 데이터 전송에 사용할 수 없습니다.

설정은 디바이스에서 선택한 후 활성 상태라고 합니다. 기본 활성 설정은 인터페이스의 첫 번째 설정입니다.

각 설정은 UsbInterfaceSetting 개체로 표시됩니다. 개체를 사용하면 UWP 앱에서 다음 작업을 수행할 수 있습니다.

  • 인터페이스의 모든 설정을 열거하는 동안 특정 설정이 활성 상태인지 확인합니다.
  • 설정을 선택하는 요청을 시작합니다.

USB 인터페이스 설정에 대한 자세한 내용은 USB 디바이스 레이아웃을 참조하세요.

USB 인터페이스의 활성 설정 가져오기

  1. 이전에 가져온 UsbDevice 개체에서 UsbInterface 개체를 가져옵니다. 이 코드 예제에서는 USB 구성의 첫 번째 인터페이스를 가져옵니다. 다중 인터페이스 디바이스의 경우 모든 인터페이스를 열거하여 사용하려는 UsbInterface 개체를 가져올 수 있습니다. UsbConfiguration.UsbInterfaces 속성 값을 통해 해당 배열을 가져올 수 있습니다.
  2. UsbInterface.InterfaceSettings 속성 값을 가져와서 인터페이스에 정의된 모든 설정을 UsbInterfaceSetting 개체의 배열로 가져옵니다.
  3. UsbInterfaceSetting.Selected 속성을 확인하여 설정이 활성 상태인지 여부를 검사 각 반복에서 배열 및 를 열거합니다.

이 예제 코드는 기본 인터페이스에 정의된 모든 설정에 대한 설정 번호를 가져오는 방법을 보여 있습니다.

void GetInterfaceSetting (UsbDevice device)
{
        auto interfaceSettings = device.InterfaceSettings;

        for each(UsbInterfaceSetting interfaceSetting in interfaceSettings)
        {
            if (interfaceSetting->Selected)
            {
                uint8 interfaceSettingNumber = interfaceSetting.InterfaceDescriptor.AlternateSettingNumber;

                // Use the interface setting number. Not shown.

                break;
            }
        }
}

USB 인터페이스 설정

현재 활성화되지 않은 설정을 선택하려면 설정에 대한 UsbInterfaceSetting 개체를 찾아 서 UsbInterfaceSetting.SelectSettingAsync 메서드를 호출하여 비동기 작업을 시작해야 합니다. 작업은 값을 반환하지 않습니다.

private async void SetInterfaceSetting(UsbDevice device, Byte settingNumber)
{
    var interfaceSetting = device.DefaultInterface.InterfaceSettings[settingNumber];

    await interfaceSetting.SelectSettingAsync();

    MainPage.Current.NotifyUser("Interface Setting is set to " + settingNumber, NotifyType.StatusMessage);
}

참고 항목