Provider di bus

Windows include API UWP in box che forniscono l'accesso diretto ai bus GPIO, SPI o I2C. Ciò consente un accesso molto semplice a questo hardware da un'API di alto livello. Tuttavia, ci sono molte volte quando un produttore di dispositivi vuole usare un controller off-SoC per accedere a un bus. Può essere semplice come un chip economico che aggiunge 16 pin GPIO o come ricco come un MCU completo che non solo aggiunge pin GPIO, SPI e I2C, ma supporta anche PWM e ADC. Con il modello "Provider bus", gli sviluppatori possono accedere a questi bus off-SoC usando le API in-box usando un provider in modalità utente che consente di colmare il divario.

Qualcuno che crea un provider implementa un set di interfacce in una libreria di classi UWP e quindi qualsiasi sviluppatore che vuole parlare con tale hardware include semplicemente il componente e indica le API in box su di esso. Se si esamina il codice di esempio dal provider remoto , è possibile vedere come è facile configurare il provider e una volta impostato come provider predefinito per tale app, il resto del codice nell'app client è identico al codice necessario per accedere a un bus on-SoC.

Providers.Provider.Configuration =
    new Providers.ConnectionConfiguration("VID_2341", "PID_0043", 57600);
Windows.Devices.LowLevelDevicesController.DefaultProvider =  new Providers.Provider();

gpioController = await GpioController.GetDefaultAsync();
i2cController = await I2cController.GetDefaultAsync();
adcController = await AdcController.GetDefaultAsync();
pwmController = await PwmController.GetDefaultAsync();

GpioPin pin = gpioController.OpenPin(LED_PIN, GpioSharingMode.Exclusive);`

Provider disponibili

Attualmente sono disponibili diversi provider nel repository GitHub dei provider di bus . Oltre al codice per il provider, ogni provider ha una soluzione VS di esempio che illustra come un client userebbe tale provider.

  • ADC

    • Ads1x15
    • Mcp3008
  • PWM

    • PCA9685
    • Simulato con Gpio

Oltre ai provider che consentono di accedere all'hardware reale, è stato creato un provider simulato che fungerà come se fosse un provider in grado infinito ed è progettato per scrivere ed eseguire il debug delle applicazioni senza dover prima distribuirli in un dispositivo funzionante. Per un'esperienza più ricca, è possibile personalizzarla per simulare l'hardware effettivo. Ad esempio, l'aggiornamento del provider I2c per restituire il risultato "75" quando si invia il comando per una lettura della temperatura in un dispositivo con l'indirizzo secondario designato.

Risorse aggiuntive

Sono disponibili qui altri strumenti di bus, codici di esempio e test su I2C, SPI, GPIO, MinComm/UART.

Fare riferimento alle API Windows Runtime (WinRT) e ecco come sfruttare le API dalle applicazioni Win32.

Esaminare i provider di bus di Windows