Énumération des appareils PointofService
Cette rubrique montre comment définir un sélecteur d’appareil utilisé pour interroger des appareils disponibles sur le système et utiliser ce sélecteur pour énumérer les appareils de point de service à l’aide de l’une des méthodes suivantes :
Méthode 1 : Utiliser un sélecteur d’appareils
Affichez une interface utilisateur du sélecteur d’appareil et que l’utilisateur choisit un appareil connecté. Cette méthode gère la mise à jour de la liste lorsque les appareils sont attachés et supprimés, et est plus simple et plus sûr que d’autres méthodes.
Méthode 2 : Obtenir le premier appareil disponible
Utilisez GetDefaultAsync pour accéder au premier appareil disponible dans une classe d’appareil point de service spécifique.
Méthode 3 : Capture instantanée des appareils
Énumérez une instantané des appareils de point de service présents sur le système à un moment donné. Cela est utile lorsque vous souhaitez créer votre propre interface utilisateur ou avoir besoin d’énumérer des appareils sans afficher une interface utilisateur à l’utilisateur. FindAllAsync conserve les résultats jusqu’à ce que l’énumération entière soit terminée.
Méthode 4 : Énumérer et regarder
DeviceWatcher est un modèle d’énumération plus puissant et flexible qui vous permet d’énumérer les appareils actuellement présents et de recevoir des notifications lorsque les appareils sont ajoutés ou supprimés du système. Cela est utile lorsque vous souhaitez conserver une liste actuelle d’appareils en arrière-plan pour l’affichage dans votre interface utilisateur plutôt que d’attendre qu’un instantané se produise.
Définir un sélecteur d’appareil
Un sélecteur d’appareil vous permet de limiter les appareils que vous recherchez lors de l’énumération des appareils. Cela vous permet d’obtenir uniquement des résultats pertinents et de réduire le temps nécessaire pour énumérer les appareils souhaités.
Vous pouvez utiliser la méthode GetDeviceSelector pour le type d’appareil que vous recherchez et obtenez le sélecteur d’appareil pour ce type. Par exemple, l’utilisation de PosPrinter.GetDeviceSelector vous fournira un sélecteur pour énumérer tous les PosPrinters attachés au système, notamment les imprimantes USB, réseau et Pos POS Bluetooth.
using Windows.Devices.PointOfService;
string selector = POSPrinter.GetDeviceSelector();
Les méthodes GetDeviceSelector pour les différents types d’appareils sont les suivantes :
- BarcodeScanner.GetDeviceSelector
- CashDrawer.GetDeviceSelector
- LineDisplay.GetDeviceSelector
- MagneticStripeReader.GetDeviceSelector
- PosPrinter.GetDeviceSelector
À l’aide d’une méthode GetDeviceSelector qui prend une valeur PosConnectionTypes en tant que paramètre, vous pouvez restreindre votre sélecteur pour énumérer les appareils POS locaux, réseau ou Bluetooth, ce qui réduit le temps nécessaire à la fin de la requête. L’exemple ci-dessous montre une utilisation de cette méthode pour définir un sélecteur qui prend uniquement en charge les imprimantes POS attachées localement.
using Windows.Devices.PointOfService;
string selector = POSPrinter.GetDeviceSelector(PosConnectionTypes.Local);
Conseil
Consultez Créer un sélecteur d’appareil pour créer des chaînes de sélecteur plus avancées.
Méthode 1 : Utiliser un sélecteur d’appareils
La classe DevicePicker vous permet d’afficher un menu volant de sélecteur qui contient une liste d’appareils que l’utilisateur doit choisir. Vous pouvez utiliser la propriété Filter pour choisir les types d’appareils à afficher dans le sélecteur. Cette propriété est de type DevicePickerFilter. Vous pouvez ajouter des types d’appareils au filtre à l’aide de la propriété SupportedDeviceClasses ou SupportedDeviceSelectors.
Lorsque vous êtes prêt à afficher le sélecteur d’appareils, vous pouvez appeler la méthode PickSingleDeviceAsync, qui affiche l’interface utilisateur du sélecteur et retourne l’appareil sélectionné. Vous devez spécifier un Rect qui détermine l’emplacement du menu volant. Cette méthode retourne un objet DeviceInformation, afin de l’utiliser avec les API point de service, vous devez utiliser la méthode FromIdAsync pour la classe d’appareil spécifique souhaitée. Vous transmettez la propriété DeviceInformation.Id comme paramètre deviceId de la méthode et obtenez une instance de la classe d’appareil comme valeur de retour.
L’extrait de code suivant crée un DevicePicker, ajoute un filtre de scanneur de code-barres à celui-ci, l’utilisateur sélectionne un appareil, puis crée un objet BarcodeScanner en fonction de l’ID de l'appareil :
private async Task<BarcodeScanner> GetBarcodeScanner()
{
DevicePicker devicePicker = new DevicePicker();
devicePicker.Filter.SupportedDeviceSelectors.Add(BarcodeScanner.GetDeviceSelector());
Rect rect = new Rect();
DeviceInformation deviceInformation = await devicePicker.PickSingleDeviceAsync(rect);
BarcodeScanner barcodeScanner = await BarcodeScanner.FromIdAsync(deviceInformation.Id);
return barcodeScanner;
}
Méthode 2 : Obtenir le premier appareil disponible
La façon la plus simple d’obtenir un appareil point de service consiste à utiliser GetDefaultAsync pour obtenir le premier appareil disponible dans une classe d’appareil point de service.
L’exemple ci-dessous illustre l’utilisation de GetDefaultAsync pour BarcodeScanner. Le modèle de codage est similaire pour toutes les classes d’appareil point de service.
using Windows.Devices.PointOfService;
BarcodeScanner barcodeScanner = await BarcodeScanner.GetDefaultAsync();
Attention
GetDefaultAsync doit être utilisé avec soin, car il peut retourner un appareil différent d’une session à l’autre. De nombreux événements peuvent influencer cette énumération, ce qui entraîne un premier appareil différent disponible, notamment :
- Changer dans les caméras attachées à votre ordinateur
- Modifier les appareils de point de service attachés à votre ordinateur
- Modification des appareils de point de service attachés au réseau disponibles sur votre réseau
- Modification des appareils Bluetooth Point of Service dans la plage de votre ordinateur
- Modifie la configuration du service
- Installation de pilotes ou d’objets de service OPOS
- Installation des extensions de point de service
- Mise à jour vers le système d’exploitation Windows
Méthode 3 : Capture instantanée des appareils
Dans certains scénarios, vous pouvez créer votre propre interface utilisateur ou avoir besoin d’énumérer des appareils sans afficher une interface utilisateur à l’utilisateur. Dans ces situations, vous pouvez énumérer une instantané d’appareils actuellement connectés ou associés au système à l’aide de DeviceInformation.FindAllAsync. Cette méthode conserve les résultats jusqu’à ce que l’énumération entière soit terminée.
Conseil
Il est recommandé d’utiliser la méthode GetDeviceSelector avec le paramètre PosConnectionTypes lors de l’utilisation de FindAllAsync pour limiter votre requête au type de connexion souhaité. Les connexions réseau et Bluetooth peuvent retarder les résultats, car leurs énumérations doivent être terminées avant que les résultats FindAllAsync soient retournés.
Attention
FindAllAsync retourne un tableau d’appareils. L’ordre de ce tableau peut passer de la session à la session. Il n’est donc pas recommandé de s’appuyer sur un ordre spécifique à l’aide d’un index codé en dur dans le tableau. Utilisez les propriétés DeviceInformation pour filtrer vos résultats ou fournir une interface utilisateur à partir de laquelle l’utilisateur doit choisir.
Cet exemple utilise le sélecteur défini ci-dessus pour prendre une instantané d’appareils à l’aide de FindAllAsync, puis énumère chacun des éléments retournés par la collection et écrit le nom et l’ID du périphérique dans la sortie de débogage.
using Windows.Devices.Enumeration;
DeviceInformationCollection deviceCollection = await DeviceInformation.FindAllAsync(selector);
foreach (DeviceInformation devInfo in deviceCollection)
{
Debug.WriteLine("{0} {1}", devInfo.Name, devInfo.Id);
}
Conseil
Lorsque vous utilisez les API Windows.Devices.Enumeration, vous devez fréquemment utiliser des objets DeviceInformation pour obtenir des informations sur un appareil spécifique. Par exemple, la propriété DeviceInformation.ID peut être utilisée pour récupérer et réutiliser le même appareil s’il est disponible dans une session ultérieure et que la propriété DeviceInformation.Name peut être utilisée à des fins d’affichage dans votre application. Pour plus d’informations sur les propriétés supplémentaires disponibles, consultez la page de référence DeviceInformation.
Méthode 4 : Énumérer et regarder
Une méthode plus puissante et flexible d’énumération d’appareils crée un DeviceWatcher. Un observateur d’appareils énumère dynamiquement les appareils afin que l’application reçoive des notifications si des appareils sont ajoutés, supprimés ou modifiés une fois l’énumération initiale terminée. Un DeviceWatcher vous permet de détecter lorsqu’un appareil connecté au réseau est en ligne, qu’un appareil Bluetooth est en plage, ainsi que si un appareil connecté localement est déconnecté afin de pouvoir effectuer l’action appropriée au sein de votre application.
Cet exemple utilise le sélecteur défini ci-dessus pour créer un DeviceWatcher, ainsi que définir des gestionnaires d’événements pour les notifications Ajoutée, Supprimée et Mise à jour. Vous devrez renseigner les détails des actions que vous souhaitez entreprendre lors de chaque notification.
using Windows.Devices.Enumeration;
DeviceWatcher deviceWatcher = DeviceInformation.CreateWatcher(selector);
deviceWatcher.Added += DeviceWatcher_Added;
deviceWatcher.Removed += DeviceWatcher_Removed;
deviceWatcher.Updated += DeviceWatcher_Updated;
void DeviceWatcher_Added(DeviceWatcher sender, DeviceInformation args)
{
// TODO: Add the DeviceInformation object to your collection
}
void DeviceWatcher_Removed(DeviceWatcher sender, DeviceInformationUpdate args)
{
// TODO: Remove the item in your collection associated with DeviceInformationUpdate
}
void DeviceWatcher_Updated(DeviceWatcher sender, DeviceInformationUpdate args)
{
// TODO: Update your collection with information from DeviceInformationUpdate
}
Conseil
Pour plus d’informations sur l’utilisation d’un DeviceWatcher, consultez Énumérer et regarder les appareils.
Voir aussi
- Bien démarrer avec la technologie de point de service
- DeviceInformation, classe
- PosPrinter, classe
- PosConnectionTypes Enum
- Classe BarcodeScanner
- DeviceWatcher, classe
Assistance et commentaires
Trouvez des réponses à vos questions
Des questions ? Demandez-nous sur notre forum Docs Q&R avec la balise UWP ou sur Stack Overflow avec la balise pointofservice.
Aidez-nous à trouver vos questions :
- Ajouter la balise pointofservice à votre question sur Stack Overflow.
- Inclure le terme « UWP » dans votre publication sur le forum Q&R