如何選取 UWP app (USB 介面設定)
本文示範如何變更 USB 介面內的設定。 使用 UsbInterfaceSetting 物件取得目前的設定,並在介面中設定設定。
開始之前
- 您必須已開啟裝置並取得 UsbDevice 物件。 請參閱 如何連線到 USB 裝置 (UWP app) 。
- 程式代碼範例是以 CustomUSBDevice 範例為基礎。 您可以從此程式代碼庫頁面下載完整的範例。
關於USB介面設定
每個USB介面都會公開一或多個在 介面設定中分組的端點。 這些設定是裝置定義的,並以稱為 設定索引的數位加以識別。 每個介面 都必須只有一個 作用中的設定。 對於多個介面裝置,每個介面都必須有作用中的設定。 如果設定為作用中,數據可以傳送至其端點或從其端點傳輸。 非使用中設定中的端點會停用數據傳輸。
設定在裝置上選取之後即為作用中。 預設的作用中設定是介面的第一個設定。
每個設定都是以 UsbInterfaceSetting 物件表示。 藉由使用 物件,您的 UWP app 可以執行下列作業:
- 在列舉介面中的所有設定時,判斷特定設定是否為作用中。
- 起始選取設定的要求。
如需USB介面設定的相關信息,請參閱 USB裝置配置。
取得USB介面的作用中設定
- 從先前取得的 UsbDevice 物件取得 UsbInterface 物件。 此程式代碼範例會取得USB組態中的第一個介面。 針對多介面裝置,您可以列舉所有介面來取得您想要使用的 UsbInterface 物件。 您可以透過 UsbConfiguration.UsbInterfaces 屬性值取得該陣列。
- 取得 UsbInterface.InterfaceSettings 屬性值,以取得介面中定義為 UsbInterfaceSetting 物件數位的所有設定。
- 列舉陣列,並在每次反覆專案中檢查設定是否作用中,方法是檢查 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);
}