App di Windows
Comprimi il sommario
Espandi il sommario

Dispositivi

Hai la possibilità di sviluppare app pronte per la connessione a una vasta gamma di dispositivi cablati e wireless che permettono agli utenti di apprezzare la mobilità e flessibilità di un dispositivo Windows 8.1 quando usano o creano vari contenuti a casa o al lavoro.

Funzionalità nuove o aggiornate in Windows 8.1

Supporto di dispositivi HID (Human Interface Device)

[Scarica ora gli esempi per l'accesso a un dispositivo HID personalizzato e il sensore di movimento, il firmware e l'app di Windows Runtime per HID.]

L'API Windows.Devices.HumanInterfaceDevice consente alla tua app di Windows Store di accedere ai dispositivi che supportano il protocollo HID (Human Interface Device).

Nelle fasi iniziali dello sviluppo questo protocollo era destinato a dispositivi come tastiere, mouse e joystick, oltre a essere progettato inizialmente per l'esecuzione su trasporto USB. Il protocollo supporta oggi un set di dispositivi notevolmente più ampio. In Windows 8.1, Microsoft aggiunge inoltre il supporto per i trasporti USB, Bluetooth, Bluetooth LE e I²C.

La nuova API è progettata per due gruppi di destinatari distinti:

  1. Il partner hardware che ha creato una periferica HID e ha bisogno ora di un'app di Windows Store che permetta agli utenti di Windows 8.1 di accedere al dispositivo o controllarlo. I partner hardware possono dichiarare un'app per l'acquisizione automatica quando un utente collega la loro periferica.

  2. Lo sviluppatore di app che vuole creare un'app per una di queste periferiche.

Il partner hardware ha già familiarità con il protocollo HID, ma deve imparare a conoscere i requisiti delle app di Windows Store. Lo sviluppatore di app dovrà probabilmente approfondire la conoscenza del protocollo. Se non hai familiarità con il protocollo HID, vedi Introduzione ai concetti HID nella documentazione relativa ai driver HID su MSDN.

Prima però di usare la nuova API, leggi la sezione relativa alle limitazioni per verificare se il tuo dispositivo rientra nelle categorie supportate.

Nota  Il dispositivo di destinazione per gli esempi seguenti è il SuperMUTT, un dispositivo di test che puoi ordinare da JJG Technologies.

Connessione a un dispositivo HID

Questo esempio di codice mostra in che modo un'app di Windows Store creata con XAML e C# usa il metodo HidDevice.GetDeviceSelector per creare un selettore per un dispositivo HID specifico. L'app usa poi il metodo HidDevice.FromIdAsync per aprire una connessione al dispositivo.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Windows.Devices.Enumeration;
using Windows.Devices.HumanInterfaceDevice;
using Windows.Storage;
using Windows.Storage.Streams;

namespace HidSampleCS
{
    class Enumeration
    {
        // Enumerate HID devices.
        private async void EnumerateHidDevices()
        {
            UInt32 vendorId = 0x045E;
            UInt32 productId = 0x078F;
            UInt32 usagePage = 0xFF00;
            UInt32 usageId = 0x0001;

            // Create a selector that gets a HID device using VID/PID and a 
            // VendorDefined usage.
            string selector = HidDevice.GetDeviceSelector(usagePage, usageId, 
                              vendorId, productId);

            // Enumerate devices using the selector.
            var devices = await DeviceInformation.FindAllAsync(selector);

            if (devices.Count > 0)
            {
                // Open the target HID device at index 0.
                HidDevice device = await HidDevice.FromIdAsync(devices.ElementAt(0).Id, 
                                   FileAccessMode.ReadWrite);

                // At this point the device is available to communicate with,
                // so we can send/receive HID reports from it or 
                // query it for control descriptions.
            }
            else
            {
                // There were no HID devices that met the selector criteria.
                this.NotifyUser("MUTT HID device not found");
            }
        }
    }
}


Recupero dei dati da un dispositivo HID

Le app recuperano i dati da un dispositivo HID tramite report di input. Questo esempio illustra in che modo un'app usa il metodo HidInputReport.GetNumericControl per recuperare un valore numerico da un dispositivo SuperMUTT.

Nell'esempio il dispositivo HID connesso è rappresentato dall'oggetto DeviceList.Current.CurrentDevice.


        private async Task GetNumericInputReportAsync()
        {
            var inputReport = await DeviceList.Current.CurrentDevice.GetInputReportAsync(SuperMutt.ReadWriteBuffer.ReportId);

            var inputReportControl = inputReport.GetNumericControl(SuperMutt.ReadWriteBuffer.NumericUsagePage, SuperMutt.ReadWriteBuffer.NumericUsageId);

            var data = inputReportControl.Value;

            rootPage.NotifyUser("Value read: " + data.ToString("X2", NumberFormatInfo.InvariantInfo), NotifyType.StatusMessage);
        }

Limitazioni dell'API HID

Considera quanto segue quando valuti la possibilità di implementare questo set di API.

L'API Windows.Devices.HumanInterfacDevice supporta la maggior parte dei dispositivi HID. Blocca tuttavia la raccolta di app di primo livello rappresentata da queste pagine di utilizzo:

  • HID_USAGE_PAGE_UNDEFINED
  • HID_USAGE_PAGE_GENERIC
  • HID_USAGE_GENERIC_KEYBOARD
  • HID_USAGE_GENERIC_KEYPAD
  • HID_USAGE_GENERIC_SYSTEM_CTL
  • HID_USAGE_PAGE_KEYBOARD
  • HID_USAGE_PAGE_CONSUMER
  • HID_USAGE_PAGE_DIGITIZER
  • HID_USAGE_PAGE_SENSOR
  • HID_USAGE_PAGE_BARCODE_SCANNER
  • HID_USAGE_PAGE_WEIGHING_DEVICE
  • HID_USAGE_PAGE_MAGNETIC_STRIPE_READER
  • HID_USAGE_PAGE_TELEPHONY

Solo driver di dispositivo inclusi

Oltre a bloccare il supporto per l'elenco precedente di pagine di utilizzo, l'API richiede inoltre che l'app sia eseguita usando i driver di dispositivo inclusi forniti con Windows 8.1. L'API non supporta driver di dispositivo resi disponibili dai fornitori.

Supporto solo di periferiche

L'API HID è progettata principalmente per app che accedono a periferiche. Lo scenario per sviluppatori di app descritto precedentemente si applica solo a dispositivi di questo tipo.

L'API può essere usata per accedere a dispositivi interni (non periferiche), ma l'accesso a questi dispositivi è limitato ad app privilegiate create solo dal produttore del dispositivo. Gli sviluppatori di app non possono accedere ai dispositivi interni.

Nessun supporto per le app del Pannello di controllo

Le app create con questa API HID sono app per utente. Questo significa che non possono salvare impostazioni, generalmente un requisito per un'app del Pannello di controllo.

Supporto di dispositivi POS (Point of Service)

[Accedi agli esempi di lettore di codice a barre e di lettore di banda magnetica ora.]

In Windows 8.1 è stato introdotto un nuovo spazio dei nomi Windows.Devices.PointOfService per dispositivi POS specializzati. Questa versione supporta lettori di codice a barre e lettori di banda magnetica. È possibile usare l'API per POS indipendente dal fornitore per scrivere app di Windows Store in grado di accedere a dispositivi POS di vari produttori e abilitare mapping molti-a-molti tra app POS e dispositivi POS.

Questo spazio dei nomi si basa sulla specifica standard del settore UPOS (Unified Point of Service). Per altre informazioni, vedi il sito Web UnifiedPOS.

Per il lettore di codice a barre, la creazione del dispositivo avviene tramite attivazione statica con il metodo GetDefaultAsync, che recupera il primo lettore di codice a barre disponibile collegato al tablet, in presenza di più dispositivi. Puoi anche creare un dispositivo specifico usando il metodo FromIdAsync, che recupera un lettore di codice a barre da un ID DeviceInformation. ClaimScannerAsync ottiene l'accesso esclusivo dell'app al dispositivo e impedisce ad altre app di usarlo, mentre EnableAsync prepara il dispositivo per un evento DataReceived. Lo stesso schema e gli stessi elementi di API si applicano al lettore di banda magnetica.

Questi esempi di codice mostrano come accedere a un lettore di codice a barre collegato a un tablet e abilitarlo per la ricezione dei dati.


// Creates the barcode scanner, claims it for exclusive use, and enables it to receive data.
var _scanner = null;
var _claimedScanner = null;

function startReceivingData() {
    Windows.Devices.PointOfService.BarcodeScanner.getDefaultAsync().then(function (scanner) {
        if (scanner !== null) {
            _scanner = scanner;

            scanner.claimScannerAsync().done(function (claimedScanner) {
                if (claimedScanner !== null) {
                    _claimedScanner = claimedScanner;
                    claimedScanner.isDecodeDataEnabled = true;

                    claimedScanner.addEventListener("datareceived", onDataReceived);
                    claimedScanner.enableAsync().done(function () {

                        document.getElementById("btnStartReading").disabled = true;
                        document.getElementById("btnEndReading").disabled = false;
                    }, function error(e) {
                        // Failed to enable scanner.
                    });

                } else {
                    // Could not claim the scanner.
                }
            }, function error(e) {
                // Could not claim the scanner.
            });

        } else {
            // Barcode scanner not found. Connect a barcode scanner.
        }

    }, function error(e) {
        // Asynchronous method failed.
    });
}

Per altre informazioni su questo metodi, eventi e proprietà, vedi il riferimento a Windows.Devices.PointOfService.

Questa API permette di eseguire facilmente la migrazione per gli sviluppatori POS. Puoi trasformare le tue app desktop basate su Microsoft POS per .NET in app di Windows Store che usano Windows Runtime e vengono eseguite nei tablet. Il modello dell'API è simile a POS per .NET, con alcune modifiche.

Supporto di dispositivi USB

[Accedi all'esempio di accesso a dispositivi USB personalizzati ora.]

Un nuovo spazio dei nomi di Windows 8.1 offre per le app il supporto per dispositivi USB: Windows.Devices.Usb. Puoi usarlo per scrivere un'app di Windows Store che comunica con un dispositivo USB personalizzato. In questo contesto il termine "personalizzato" indica una periferica per cui Microsoft non fornisce un driver incluso.

Come standard di settore per i produttori hardware di periferiche USB per PC viene usata la specifica USB ufficiale. Windows fornisce driver inclusi per la maggior parte di questi dispositivi. Per i dispositivi che non hanno driver inclusi, gli utenti possono installare il driver incluso generico Winusb.sys fornito da Microsoft. Per le nuove periferiche i produttori possono fornire un driver personalizzato o usare Winusb.sys. Se scelgono Winusb.sys, puoi facilmente scrivere app correlate usate dagli utenti per interagire con il dispositivo. Nelle versioni precedenti di Windows queste sono app desktop scritte usando funzioni WinUSB. In Windows 8.1 le app di Windows Store possono essere scritte tramite il nuovo spazio dei nomi Windows.Devices.Usb.

Quando usare la nuova API USB

Puoi usare la nuova API se vengono soddisfatte le condizioni seguenti:

  • Il driver di dispositivo è il driver Winusb.sys fornito da Microsoft. Lo spazio dei nomi non supporta driver di dispositivo forniti dai produttori. Quando colleghi il dispositivo, Windows potrebbe installare o non installare automaticamente Winusb.sys, a seconda della progettazione del dispositivo. Se il driver non viene installato automaticamente, devi installarlo manualmente in Gestione dispositivi:

    1. Fai clic con il pulsante destro del mouse sul dispositivo e scegli Aggiornamento software driver.

    2. Nella procedura guidata seleziona Cerca il software del driver nel computer.

    3. Nella pagina successiva seleziona Scegli manualmente da un elenco di driver di dispositivo nel computer.

    4. Nella pagina successiva seleziona Dispositivi USB (Universal Serial Bus) nell'elenco.

    5. Seleziona Dispositivo WinUSB e fai clic su Avanti per installare il driver.

  • Fornisci le informazioni sul dispositivo come dichiarazioni delle funzionalità nel manifesto dell'app. In questo modo l'app viene associata al dispositivo.

    Per altre informazioni, vedi Aggiornamento del pacchetto del manifesto dell'app per un dispositivo USB.

  • Il dispositivo appartiene a una delle classi di dispositivo supportate dallo spazio dei nomi. È importante notare che un dispositivo personalizzato può appartenere a una classe di dispositivo USB predefinito oppure le relative funzionalità possono essere definite dal produttore.

Usa lo spazio dei nomi Windows.Devices.Usb per questi codici di classe, sottoclasse e protocollo per il dispositivo USB:

  • Classe di controllo CDC (codice di classe: 0x02, codice di sottoclasse: qualsiasi, codice di protocollo: qualsiasi)
  • Classe fisica (codice di classe: 0x05, codice di sottoclasse: qualsiasi, codice di protocollo: qualsiasi)
  • Classe PersonalHealthcare (codice di classe: 0x0f, codice di sottoclasse: 0x00, codice di protocollo: 0x00)
  • Classe ActiveSync (codice di classe: 0xef, codice di sottoclasse: 0x01, codice di protocollo: 0x01)
  • Classe PalmSync (codice di classe: 0xef, codice di sottoclasse: 0x01, codice di protocollo: 0x02)
  • Classe DeviceFirmwareUpdate (codice di classe: 0xfe, codice di sottoclasse: 0x01, codice di protocollo: 0x01)
  • Classe IrDA (codice di classe: 0, codice di sottoclasse: 0x02, codice di protocollo: 0x00)
  • Classe di misura (codice di classe: 0xfe, codice di sottoclasse: 0x03, codice di protocollo: qualsiasi)
  • Classe specifica del fornitore (codice di classe: 0xff, codice di sottoclasse: qualsiasi, codice di protocollo: qualsiasi)

Quando non usare la nuova API USB

Non puoi usare la nuova API se viene soddisfatta una delle condizioni seguenti:

  • Vuoi che l'app acceda a dispositivi interni. Lo spazio dei nomi Windows.Devices.Usb permette solo l'accesso a periferiche. Un'app di Windows Store può accedere a dispositivi USB interni solo se è un'app privilegiata dichiarata in modo esplicito dal produttore OEM per tale sistema.

  • La tua app è un'app del Pannello di controllo. Le app che usano lo spazio dei nomi devono essere app per utente, ovvero possono comunicare con il dispositivo, ma non possono salvare i dati delle impostazioni al di fuori del loro ambito, una funzionalità richiesta da molte app del Pannello di controllo.

Non usare lo spazio dei nomi Windows.Devices.Usb per queste classi di dispositivo USB:

  • Classe audio (0x01)
  • Classe HID (0x03)
  • Classe immagine (0x06)
  • Classe stampante (0x07)
  • Classe archiviazione di massa (0x08)
  • Classe smart card (0x0B)
  • Classe audio/video (0x10)
  • Controller wireless (ad esempio host o hub USB wireless) (0xE0)

Lo spazio dei nomi blocca queste classi di dispositivo USB per evitare conflitti con altre API. Per queste classi, usa piuttosto altre API pertinenti. Se ad esempio il tuo dispositivo è conforme al protocollo HID, usa Windows.Devices.HumanInterfaceDevice.

Individuazione di un dispositivo USB e connessione

Questo codice di esempio mostra come cercare un dispositivo USB e connettersi al dispositivo trovato.


 
    var deviceQueryString = UsbDevice.GetDeviceSelector(deviceVid, devicePid, deviceInterfaceClass);

    var myDevices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(deviceQueryString, null);
    
    UsbDevice device = await UsbDevice.FromIdAsync(myDevices[0].Id);

    // Device is in use.
    if (device != null)
    {
        MainPage.Current.NotifyUser("Device " + id + " opened", NotifyType.StatusMessage);
    }
    else
    {
        MainPage.Current.NotifyUser("Unable to open device : " + id, NotifyType.ErrorMessage);
    }


Per iniziare a scrivere un'app di Windows Store che supporta USB, esamina l'esempio CustomUsbDeviceAccess. Questo esempio mostra come comunicare con un dispositivo USB tramite lo spazio dei nomi Windows.Devices.Usb.

Supporto di dispositivi Bluetooth

[Accedi agli esempi di chat Bluetooth Rfcomm e Bluetooth GATT (Generic Attribute Profile) ora.]

Le app di Windows Store per Windows 8.1 possono usare le nuove API di Windows Runtime RFCOMM e GATT (Generic Attribute Profile) per accedere ai dispositivi Bluetooth. Queste API permettono l'accesso ai trasporti Bluetooth BR/EDR e Bluetooth LE.

I dispositivi Bluetooth Classic e Bluetooth Smart devono essere prima individuati e associati usando Impostazioni PC (PC e dispositivi>Bluetooth) in Windows 8.1 per poter essere accessibili tramite le API di Windows Runtime per Bluetooth.

Devi fornire le informazioni sul tuo dispositivo in forma di dichiarazioni di funzionalità del dispositivo nel manifesto dell'app. In questo modo l'app viene associata al dispositivo.

Ecco alcuni dettagli importanti da considerare per le nuove API:

Bluetooth RFCOMMWindows.Devices.Bluetooth.Rfcomm

  • L'API permette agli sviluppatori di app di Windows Store di implementare profili Bluetooth basati sul protocollo RFCOMM, ad esempio SPP (Serial Port Profile).

  • Sono disponibili ruoli di client e server.

  • È possibile accedere a record SDP (Service Discovery Protocol) remoti e pubblicare record SDP locali.

  • La classe Sockets.ControlChannelTrigger non è disponibile per i socket basati su RFCPMM.

  • L'API RFCOMM impedisce l'accesso ai servizi inclusi e non validi seguenti:
    ID servizioServizio (nome Bluetooth SIG)

    0x1000

    Individuazione servizio

    0x1001

    Browse Group Descriptor

    0x1102

    Accesso LAN con PPP

    0x1103

    Connessione remota

    0x1108, 0x1112

    Cuffia auricolare

    0x1109

    Telefonia cordless

    0x110A

    Origine audio

    0x110B

    Sink audio

    0x110C, 0x110E, 0x110F

    Controllo remoto A/V

    0x1110

    Intercom

    0x1111

    Fax

    0x1113, 0x1114

    WAP

    0x1115

    PANU

    0x1116

    Protezione accesso alla rete

    0x1117

    Rete ad hoc di gruppo

    0x111E, 0x111F

    Viva voce

    0x1124

    Human Interface Device (HID)

    0x1126

    Stampa HCR

    0x1127

    Scansione HCR

    0x1128

    Accesso ISDN comune

    0x112D

    Accesso SIM

    0x1131

    Cuffia auricolare - HS

    0x1136

    Server GNSS

    0x1200

    Informazioni PnP

    0x1201

    Funzionalità di rete generiche

    0x1203

    Audio generico

    0x1204

    Telefonia generica

    0x1205, 0x1206

    UPnP

    0x1300, 0x1301, 0x1302

    ESDP UPnP IP

    0x1303

    Origine video

    0x1304

    Sink video

    0x1305

    Distribuzione video

    0x1401

    Origine HDP

    0x1402

    Sink HDP

     

Bluetooth GATTWindows.Device.Bluetooth.Gatt

  • L'API permette agli sviluppatori di app di Windows Store di implementare profili client GATT per la raccolta di dati da sensori a basso consumo (LE).

  • Per usare l'API GATT, è necessaria una radio Bluetooth 4.0.

  • L'API GATT impedisce l'accesso ai servizi inclusi e non validi seguenti:
    ID servizioServizio (nome Bluetooth SIG)

    0x1812

    Servizio HID Over GATT

     

  • L'API GATT consente l'accesso di sola lettura ai servizi inclusi e non validi seguenti:
    ID servizioServizio (nome Bluetooth SIG)

    0x1800

    Servizio GAP

    0x1801

    Servizio GATT

    0x1813

    Servizio parametri analisi

     

Nota  Le API di Windows Runtime per RFCOMM e GATT non sono progettate per l'uso nelle app del Pannello di controllo.

Per altre informazioni su come usare l'API Windows.Devices.Bluetooth.Rfcomm, vedi i due scenari seguenti:

Per altre informazioni su come usare l'API Windows.Device.Bluetooth.Gatt, vedi i tre scenari seguenti:

Supporto di stampanti 3D

[Accedi all'esempio della stampa 3D ora.]

La stampa di contenuto 3D con Windows 8.1 è simile alla stampa di contenuto 2D. In realtà abbiamo semplicemente esteso le interfacce IXpsOMPackageWriter e IXpsDocumentPackageTarget in modo da fornire questa funzionalità. Per inviare contenuto 3D a una stampante da un'app in Windows 8.1, è necessario che l'app acceda alla funzionalità di stampa in Windows e fornisca contenuto 3D formattato da stampare.

La stampa 3D in Windows 8.1 prevede la creazione di contenuto 3D e il passaggio tramite pipeline di filtri driver e spooler di Windows al dispositivo di produzione 3D, ad esempio una stampante 3D.

Nell'API di stampa 3D sono incluse due interfacce: IXpsDocumentPackageTarget3D e IXpsOMPackageWriter3D. IXpsDocumentPackageTarget3D rappresenta una coda di stampa e i dettagli del processo di stampa. IXpsOMPackageWriter3D fornisce metodi per l'invio di contenuto nella pipeline di stampa di Windows. Questa interfaccia passa contenuto 3D come flussi opachi tramite filtri driver e spooler al dispositivo di produzione 3D.

Le interfacce di stampa 3D hanno le caratteristiche seguenti:

  • Supportano l'invio di contenuto 3D nel formato Open Packaging Conventions (OPC) per la stampa.

  • Supportano l'invio di contenuto XPS per la stampa 2D oltre al contenuto 3D.

  • Il contenuto 3D è limitato a una parte di modello 3D che collega zero o più parti di trame e zero o una parte di ticket di stampa.

  • I dati relativi alla trama e al modello 3D sono considerati un flusso opaco dalle API e non viene eseguito alcun tipo di convalida o di analisi.

Per una panoramica della funzionalità, vai all'argomento relativo al supporto della stampa 3D e vedi la guida introduttiva relativa alla stampa 3D per informazioni su come aggiungere la stampa 3D a un'app.

Supporto di digitalizzazione

[Accedi all'esempio del dispositivo ora.]

Ora puoi analizzare il contenuto dalla tua app di Windows Store con un piano, un alimentatore o un'origine di digitalizzazione con configurazione automatica.

Il nuovo spazio dei nomi Windows.Devices.Scanners è basato sulle API WIA esistenti ed è integrato con l'API di accesso al dispositivo.

Nota  Un'app di scansione è creata in Windows 8.1.

Per una panoramica delle caratteristiche, vedi Scansione (JavaScript e HTML) o Scansione (C#/C++/VB e XAML).

 

 

Mostra:
© 2017 Microsoft