Windows 10 e Universal Apps, como eles afetam o desenvolvimento de sistemas embarcados?

O Windows 10 IoT surge com a proposta de uma Plataforma Universal do Windows (UWP) para diferentes dispositivos, esse novo conceito se baseia na utilização de um núcleo unificado do Win 10, que permite a elaboração de um programa que seja executado para qualquer dispositivo, desde Windows Phone ao Surface.

Figura1

Figura 1 – Plataforma de dispositivos a qual o Windows 10

O que confere essa universalização da plataforma UWP é que além do núcleo unificado surge o conceito de uma classe Universal Family, que na hierarquia da família de dispositivos, passa a herdar todas as APIs das famílias filhas. Tal característica garante que todas as APIs estão presentes na Universal Family, conferindo a esta a característica de construir um programa e poder executado em qualquer aparelho que suporte o Windows 10.

Figura 2 - Hierarquia da família de dispositivos do Windows 10

Figura 2 – Hierarquia da família de dispositivos do Windows 10

Através deste sistema operacional unificado, a escolha do sistema operacional para determinado dispositivo deixa de ser a parte mais importante, e passa a ser a escolha da família de dispositivos a qual seu aplicativo será destinado podendo escolher-se uma ou mais famílias, e até mesmo destinar-se a todas elas. A escolha da família será determinada a partir da definição de qual ou quais dispositivos serão destinados a aplicação e então será escolhida qual ou quais APIs serão adequadas, por exemplo a escolha da família filho como a Desktop irá destinar a utilização do programa somente em dispositivos desktop, e consequentemente irá conter somente as APIs desta família.

Para dispositivos embarcados surge a versão Windows IoT Core, que é a versão do Windows 10 otimizada para tais dispositivos e que pode ser utilizada na Raspberry Pi 2 e outras placas destinadas a makers, possuindo assim uma API com vários recursos para o mesmo. Abaixo encontra-se o link para os primeiros passos para a instalação do Windows IoT Core:

Neste artigo, vamos explorar o conceito de UWP criando um pequeno exemplo capaz de rodar no Windows 10 tradicional em um PC de arquitetura x86, mas ao mesmo tempo capaz de rodar em uma placa Raspberry PI2 e em um Computador em módulo de arquitetura ARM Cortex-A9. O computador embarcado ARM que utilizo aqui é o Colibri T30, que está sendo vendido em caráter de promoção pela Toradex .

As instruções para a instalação inicial estão em: http://developer.toradex.com/winiot

Para o desenvolvimento de programas e aplicações no Windows 10 neste artigo lança-se mão da ferramenta Visual Studio 2015. Para criar o projeto foi selecionada a opção File>New>Project, para um projeto utilizando a Universal device family na aba a esqueda foi selecionada a opção C#>Windows e em seguida escolhido o template Blank App(Universal Windows) , em seguida foi escolhido o nome e a pasta  e enfim ao clicar em OK o projeto será criado.

Figura 3 - Página para criação do projeto

Figura 3 – Página para criação do projeto

Para aplicação “Hello Word” foi criado um botão que ao ser clicado, simplesmente, exibe a mensagem “Hello Word”. Quando o projeto for criado selecione o arquivo MainPage.xaml na janela Solution Explorer no lado direito do programa, vide figura abaixo. Este arquivo conterá a parte gráfica do programa a ser criado. No lado direito da tela na janela Toobox, que contém componentes que podem ser adicionadas ao seu programa, escolher a opção Button e arrastá-la para a janela onde será criada o programa e posicioná-lo onde preferir.

Figura 4 - Visual Studio no módo gráfico

Figura 4 – Visual Studio no módo gráfico

Depois de criado o Botão dê dois cliques no mesmo e aparecerá a janela MainPage.xaml.cs, onde será definida a rotina que será exibida ao clicar no botão. Dentro da função que foi criada, button_Click, digite o código de acordo com a figura abaixo, note que o código foi escrito dentro do método “button_Click”. Para esta aplicação foi adicionado uma funcionalidade extra, a exibição de uma imagem que aparece quando o botão é clicado. Para tal foi adicionada uma imagem através da Toolbox adicionando a opção Image e em seguida em Properties definir Visibility>Collapsed, através da segunda linha de comando do método button_Click  a imagem é mostrada somente ao ser clicado o botão.

Figura 5 -  Visual Studio no modo edição

Figura 5 – Visual Studio no modo edição

O objetivo deste artigo é mostrar a funcionalidade do Universal App para compatibilidade multi plataforma. Para isso, configura-se o target de sua aplicação conforme a figura abaixo, as plataformas disponíveis são ARM, x64, x86.

Figura 6 - Escolha da plataforma a qual o programa irá ser executado

Figura 6 – Escolha da plataforma a qual o programa irá ser executado

Quando selecionada a opção Remote Machine, o Visual Studio irá abrir a janela Remote Connection onde seu dispositivo será identificado automaticamente (caso não seja, digite o IP do seu dispositivo no campo Address e em seguida clique em Select para que o VS o identifique). Se esta opção não abrir automaticamente vá até a opção Debug> NomeDoSeuPrograma Properties e faça a configuração adequada.

Através destas opções descritas acima um mesmo programa criado a partir da opção Universal Windows pode ser executada em qualquer dispositivo que execute o Windows 10, modificando assim somente a opção da plataforma a qual irá destinar o seu programa. E para finalizar segue um vídeo ilustrando o programa rodando primeiramente no computador e em seguida em uma placa Raspberry PI2 e em um módulo Toradex Colibri T30, onde somente foi alterada a plataforma a qual o programa se destina.

Referências:

Figuras 1 e 2 – Fonte: https://msdn.microsoft.com/library/windows/apps/dn894631.aspx

Este artigo foi originalmente publicado no site Embarcados por Heloisa Barbosa. Esta obra está sob a licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>