Consultório: Há forma standardizada para controlar um GPS em equipamentos Windows Mobile?

Recebi a seguinte pergunta via mail…

Bom dia Alberto,

Um colega meu desenvolveu um utilitátio para iPhone que indica qual a xxxxxxxxx mais perto de onde o iPhone se encontra. Eu já estive a ver o software e gostei muito e por isso pedi-lhe para ele fazer uma versão para Windows Mobile. Ele ainda não consegui concretizar esta portabilidade pois diz que cada aparelho Windows Mobile utiliza maneiras diferentes de comunicar com o GPS e por isso perguntou-me se eu conheço alguma livraria que ele pudesse usar para comunicar com os GPS’s.

Podes ajudar-me neste assunto?

…e esta é a minha resposta…

Olá Jorge,

Sim, há forma uniformizada de o fazer. Até há uns tempos atrás podia ser complicado, pois um PDA com Windows Mobile podia ou não ter GPS incorporado, e se não tivesse, podia ligar um GPS externo fosse através de bluetooth, fosse de um cabo série. O problema que isto apresentava era que a porta COM onde o GPS era exposto e os parâmetros da ligação variavam em função do modelo do PDA e da ligação escolhida, mas mais grave ainda, as portas COM não permitem ser acedidas de forma partilhada, ou seja, uma vez abertas por uma aplicação, não podem ser acedidas pelas outras.

Desde o Windows Mobile 5 que a Microsoft providenciou um método que permite contornar de algum modo estas questões, através de um ‘driver’ GPS que se liga ao dito cujo, e que permite que diferentes aplicações se alimentem do feed NMEA que o GPS vai enviando constantemente, o GPS Intermediate Driver:

http://blogs.msdn.com/windowsmobile/archive/2006/06/07/620387.aspx

Esse ‘driver’ é uma aplicação que nos equipamentos com ecrã táctil surge nos settings do PDA, no entanto há fabricantes que optaram por não o expor, sendo necessário proceder a uma modificação do registry do PDA (ver link anterior). Nesta aplicação definimos como nos pretendemos ligar ao GPS, seja incorporado, seja via bluetooth com uma porta virtual, e como pretendemos expor o feed do GPS.

Para poder consumir o feed sem nos termos de preocupar com a questão das portas COM, o Windows Mobile 6 Professional SDK traz um exemplo de como fazê-lo em C#:

http://www.microsoft.com/downloads/details.aspx?familyid=06111A3A-A651-4745-88EF-3D48091A390B&displaylang=en

O mesmo SDK traz uma aplicação chamada Settings.exe na pasta Tools que permite controlar o GPS Intermediate Driver em equipamentos sem ecrã táctil.

 

O que acham deste formato de partilha de informação, tipo consultório?

Windows CE, Windows Mobile e construa o seu próprio equipamento

Muitos dos programadores para Windows Mobile desconhecem o que o Windows Mobile e Windows CE têm de diferente e de similar entre si.

Em resumo, “Windows Mobile” é uma plataforma definida pela Microsoft, que tem um conjunto de requisitos de hardware e de implementação da plataforma em si, que tornam cada versão do Windows Mobile um sistema operativo muito homogéneo, independente do fabricante do hardware, o que para quem desenvolve software é muito importante, pois é a garantia que salvaguardadas algumas questões de pormenor, uma mesma aplicação corre numa diversidade de equipamentos diferentes, espremendo o que de melhor têm para dar.

Por outro lado, o Windows CE é um sistema operativo altamente modular, que corre numa diversidade enorme de plataformas de hardware (x86, ARM, SH, MIPS, …) e que pode ser personalizado até à exaustão! Cada fabricante que licencia o Windows CE, escolhe os componentes de hardware que quiser, desenvolvendo ou utilizando os drivers dos respectivos fabricantes, e escolhendo que componentes do sistema operativo e aplicações desenvolvidas por eles próprios ou por terceiros que pretendem implementar, conseguindo iludir perfeitamente o mais conhecedor dos utilizadores sobre a plataforma em que determinado equipamento funciona. E por falar em equipamentos Windows CE, temos desde os terminais tipo PDA mais robustos, aos sistemas de navegação de diversos fabricantes, aos leitores Zune e consolas Sega Dreamcast, a muitas set-up boxes e cada vez mais, equipamentos industriais e de consumo perfeitamente insuspeitos.

Vamos imaginar que…

  • querem ‘criar’ um robot telecomandado ou com sensores para ter alguma autonomia, capaz de tirar fotos e gravar videos e fazer o upload dos mesmos para um webservice, com uma placa WiFi ou modem 3G, com GPS para informar onde se encontra, com um servidor HTTP para que remotamente se possa configurá-lo via browser de qualquer equipamento e com uma porta USB para tocar uns ficheiros MP3 à medida que se passeia.
  • que precisam de controlar uma linha de montagem, avançando-a à medida que se concretizam determinadas condições, reagindo a sensores e equipamentos de visão artificial, actuando sobre mecanismos que rejeitam peças não conformes, com um simples display de segmentos LED daqueles verdinhos, ligado a uma LAN e enviando alertas via mail acompanhados de fotos quando determinadas condições se verificam.
  • ou até, que têm ideias muito concretas sobre um módulo multi-funções de localização e controlo remoto de viaturas, que ligado a um GPS, sensores, actuadores e sistema ODBII do carro vos permite saber onde está o carro, despoletar alertas quando se aproxima de um ponto, enviar para o carro coordenadas para onde o condutor se deve dirigir, serem avisados que o motor de frio de uma viatura de transporte de congelados avariou ou que um airbag disparou, que o condutor ultrapassou determinada velocidade, ou que está há demasiado tempo parado no mesmo local, ou ainda imobilizar o carro à distância ou destrancá-lo com um SMS
  • isto sem falar naquele sistema de rega automática para o V/ jardim, que controla as condições de humidade do solo e as previsões metereológicas, e se desliga automaticamente quando detecta que o V/ cão se passeia pela relva

Em qualquer um destes cenários, a opção por uma plataforma Windows CE que preveja um conjunto de entradas/saídas analógicas e digitais é sem dúvida alguma a melhor opção para a sua implementação, pois permite que quem a implemente se concentre nos aspectos funcionais da mesma e atinja um nível de funcionalidade que seria inimaginável com uma solução baseada em autómatos. Para além das funcionalidades base do sistema operativo em si, que suporta directamente desenvolvimento em código nativo C++, pode escolher-se do catálogo de funcionalidades por ex. a .NET Compact Framework e o SQL Compact, e utilizar VB.net e C# para controlar o comportamento do sistema.

Voltando ao Windows Mobile, a cada versão deste está intimamente associada uma versão do Windows CE, da qual vários componentes são usados, e sobre os quais recaem outros componentes específicos que tornam o Windows Mobile aquilo que vemos, garantindo a tal homogeneidade que o Windows CE em si não pode oferecer, pois fabricantes diferentes são livres de escolherem a forma como querem implementar a sua plataforma, não podendo garantir que um determinado componente de hardware ou software exista em equipamentos diferentes, ou até que exiba o mesmo comportamento. Um exemplo perfeito disto é a diferença entre a forma como o Windows Mobile e o Windows CE gerem o módulo de comunicações GSM/GPRS/3G dos equipamentos, em que nos primeiros o Connection Manager nos abstrai dos detalhes da implementação do mesmo, enquanto que no Windows CE temos que utilizar SDK específicos de cada fabricante para utilizar as funcionalidades que o fabricante decide expor.

A opção pela construção de um equipamento baseado em Windows CE é similar à construção de um carro: se for uma pequena série, usamos um chassis tubular e componentes mecânicos de outros fabricantes, para minimizar o custo inicial, enquanto que para uma grande série, podemos planear um chasis monobloco e soluções mecânicas próprias. Da mesma forma, com o Windows CE, podemos usar uma board de referência que se adeque genericamente ao pretendido, ou conceber o esquema em que serão montados os circuitos e hardware requerido para personalizar a implementação ao máximo.

Para saber mais sobre a forma como o Windows CE pode ajudá-lo na implementação daquele projecto sobre o qual tem ideias muito concretas, mas não sabe como implementá-lo, assista ao seguinte webcast com a duração de 60 minutos:

MSDN Webcast: Windows Embedded CE and Handheld Solutions (Level 100)
http://www.microsoft.com/events/series/detail/webcastdetails.aspx?seriesid=122&webcastid=5241

Se manifestarem interesse sobre este tema, poderei transmiti-lo à Microsoft no sentido de lhe ser dada mais atenção em futuros eventos cá em Portugal. Até lá, acompanhem os seguintes videos da Imagine Cup 2009 no Egipto com o Windows Embedded CE como mote.

Imagine Cup – Day 4. Projects and Walkabout

Imagine Cup – Windows Embedded – Final six teams 

Imagine Cup 2009 – Embedded Competition – Day Two

Imagine Cup 2009, Egypt – Embedded Competition Day One

Vendo Zune 120gb

Logo a seguir a ter saído a 3ª geração dos Zune, comprei o modelo de 120gb em preto, que mandei vir dos EUA. A utilização do equipamento, a ouvir música, ver vídeos, acompanhar podcasts e a partir de uma versão do firmware, até jogar, confirmaram as excelentes referências que tinha do equipamento. Na altura aproveitei e mandei vir um conjunto de cabos A/V que consiste num cabo audio que permite ligar o Zune a um equipamento que tenha uma entrada auxiliar tipo jack 3.5mm, como os sistemas de som de muitos carros, e outro que tem 3 ‘bananas’ RCA que serve de output video e som, para ligar a amplificadores A/V e televisores.


zune1 


Como não lhe dou grande uso, e para o que dou, um telemóvel com Windows Mobile e um cartão de 8gb serve, vou pô-lo à venda por 175€, o que inclui para além do Zune, 2 cabos de sincronização USB originais, os auscultadores originais, cabos A/V e a caixa original do Zune, entregando em mão em Aveiro e Coimbra, ou menos frequentemente, em Lisboa. O equipamento está como novo, e sem riscos no ecrã.


zune2


Podem ver todas as características aqui, destacando o Wifi para sincronização com o PC ou partilha entre Zunes, o rádio FM com RDS, a qualidade do ecrã, a navegação intuitiva com o botão sensível a gestos. Para quem tiver um PC com o Windows Media Center, pode ainda sincronizar os programas que vai gravando no PC com o Zune. Para quem tem o bichinho da programação, podem usar XNA para desenvolver jogos para o Zune.


Se estiver interessado, contacte-me por mail para albertosilva depois mundomovel ponto com. Se o Zune for vendido entretanto, actualizo o post.


** ACTUALIZAÇÃO **
O equipamento já foi vendido e entregue. Obrigado aos que manifestaram interesse!