Artigo da WebMobile 10 - Desenvolvendo sistemas dedicados à plataforma Palm OS

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Artigo Originalmente publicado na WebMobile 10.

capa10.JPG

Clique aqui para ler todos os artigos desta edição

Desenvolvendo sistemas dedicados à plataforma Palm OS

Há alguns anos, desenvolver sistemas para dispositivos PDA conectados a um SGBD (Sistema Gerenciador de Banco de Dados) constituía uma tarefa árdua, pois além de poucos recursos de hardware esbarrávamos em problemas clássicos da plataforma. Neste artigo, veremos os últimos avanços que possibilitaram a disponibilização de recursos poderosos de bancos como Microsoft SQL Server, MySQL e Oracle neste ambiente, tornando o ciclo de desenvolvimento produtivo e robusto. Para isso, analisaremos passo a passo como construir uma aplicação de atendimento de clientes em restaurantes para Palm OS.

Palm OS ou Pocket PC?

É comum encontrar no mercado equipamentos da marca Pocket PC sendo vendidos com o nome de Palm OS. Isso porque a Palm OS foi a primeira empresa a entrar neste mercado e atuou “sozinha” até final da década de 90, porém seu monopólio ruiu e sua divisão fortaleceu seu maior rival, o Pocket PC. Palm OS e Pocket PC são marcas de dispositivos que se enquadram em uma classe chamada PDA (Personal Digital Assistants).

Os sistemas operacionais existentes nestas duas marcas são completamente diferentes, entretanto, ambos podem realizar o mesmo tipo de trabalho.

Os hardwares da Palm Inc. possuem a fama de serem baratos, isso porque geralmente perdem no recurso disponibilizado. Falta na Pocket PC um modelo “popular” como o famoso Z22 da Palm Inc. que custa R$ 390,00 e pode ser adquirido até em lojas de eletro-eletrônicos. Esse fato é suficiente para garantir ao Palm a maior fatia do mercado.

O que é preciso saber sobre Palm OS

Na plataforma Palm OS é comum encontrar transferência de dados entre PDA e Desktop através de um ADD-IN comumente chamado de conduit. Este componente é registrado no software disponibilizado pela Palm Source chamado Hotsync, que faz parte do pacote chamado Palm Desktop.

O Hotsync é responsável por gerenciar a execução de todos os conduits. Ele sempre tem um inicio, meio e fim sem intervalos. Se algum processo encontrar problemas e permanecer sem comunicação durante dois minutos, a execução do conduit é abortada.

Outro ponto que devemos ter em mente é o fato de que na plataforma Palm OS temos dois tipos de arquivos:

·         PRC: Arquivos compilados. Podem ser Shared Library ou Aplicativos;

·         PDB: base de dados.

 

Estes arquivos são comumente instalados no Palm OS através do Palm Quick Install, outra ferramenta que faz parte do pacote Palm Desktop.

Perguntas freqüentes

·         Um programa compilado para a plataforma Palm OS pode ser executado diretamente em um Pocket PC ou vice-versa? A resposta é não, pois são dois sistemas operacionais completamente diferentes.

·         Devo utilizar Palm OS ou Pocket PC? Eu deixo esta escolha por parte do cliente, apenas apresento as duas plataformas bem como especificações técnicas e financeiras.

·         Posso programar em quais linguagens? Atualmente existem compiladores para quase todas as linguagens comerciais.

Exemplo abordado neste artigo

A partir de agora veremos passo a passo como desenvolver um sistema dedicado ao atendimento de clientes de um restaurante. Vamos chamá-lo de ComandaFacil.

O sistema terá as seguintes características:

·         Uma tela onde um recepcionista terá informações de mesas disponíveis;

·         Telas para o garçom selecionar produtos e adicionar a lista de produtos consumidos.

 

No nosso artigo não vamos utilizar o conduit, vamos utilizar uma forma de conexão um pouco mais sofisticada: serão disparadas instruções SQL contra um servidor.

Instalando e configurando o ambiente

O HB++ (Handheld-Basic) foi o IDE escolhido para o desenvolvimento deste projeto, isso porque sua interface é amigável e seu grau de programação é de alto nível. Uma versão Trial pode ser baixada no link http://www.handheld-basic.com/dl_try.php.

Para simular o PDA, vamos utilizar o mais famoso emulador desta plataforma, comumente chamado de POSE (Palm OS Emuator). Este pode ser encontrado gratuitamente no link http://www.softpalm.com.br/arquivo.aspx?ID=12.

O SGBD escolhido foi o Microsoft SQL Server 2000. Para prover a comunicação entre o Palm OS e o Microsoft SQL Server vamos utilizar o RemoteSync. A versão demonstração desta ferramenta pode ser encontrada em http://remotesync.venki.com.br. O manual de instalação do RemoteSync pode ser encontrado em http://remotesync.venki.com.br/Tutoriais.aspx?tut=001.

Na Plataforma Palm OS temos a deficiência da falta de drivers de conexão comumente utilizado na programação da plataforma Desktop. O RemoteSync será esta ponte “driver” entre o PDA e o SGBD e a única exigência do RemoteSync para realizar esta ligação é que o PDA tenha alguma forma de comunicação TCP/IP com o RemoteSync e que o SGBD esteja acessível ao RemoteSync. Neste artigo vamos utilizar uma rede Wi-Fi que prove ao PDA uma conexão TCP/IP, entretanto é possível também utilizar o RemoteSync para se comunicar com equipamentos remotos via celular e linha telefônica convencional.

Definindo a base de dados

Como já foi dito, neste artigo vamos utilizar o SQL Server 2000, entretanto, poderíamos utilizar qualquer SGBD que aceite conexão ODBC sem alterar nenhuma linha de código do aplicativo Palm OS.

Entre no Enterprise Manager do SQL Server 2000, crie um novo Database e crie tabelas segundo o DER exibido na Figura 1. Utilize como dicionário de dados as informações contidas na Tabela 1.

 

image002.jpg

Figura 1. DER: CFacil.

 

CF_ATENDENTE

CF_MESA

ID_ATENDENTE

Int

ID_MESA

Int

LOGIN

Varchar(12)

DESCRICAO

Varchar(30)

SENHA

Varchar(12)

LUGARES

Int

NOME

Varchar(30)

DISPONIVEL

Varchar(5)

CF_PRODUTO

CF_ATENDIMENTO_PRODUTO

ID_PRODUTO

Int

ID_ATENDIMENT_PRODUTO

Int

DESCRICAO

Varchar(30)

ID_ATENDIMENTO

Int

PRECO

Decimal(9,2)

ID_PRODUTO

Int

 

 

ID_ATENDENTE

Int

 

 

QUANTIDADE

Float

CF_ATENDIMENTO

CF_ATENDIMENTO_MESA

ID_MESA

Int

ID_ATENDIMENTO

Int

ID_ATENDIMENTO

Int

ABERTO

Varchar(5)

Tabela 1. Dicionário de dados.

Codificando

Inicie o HB++, crie um novo projeto selecionando a opção Minimal Projetc conforme a Figura 2.

 

image004.jpg

Figura 2. Criando um novo projeto.

 

Utilizar o Handheld-Basic é muito fácil. Isso porque ele disponibiliza Wizards simples e objetivos. Na Figura 3 temos o primeiro passo no Wizard de criação de um projeto. Neste, utilize os dados apresentados na Tabela 2.

 

image006.jpg

Figura 3. Primeiro passo do Minimal Project Wizard.

 

Propriedade

Valor

Project Name

CFacil

Project Filename

Diretório_qualquer\Cfacil.hbp

Crator ID:

COMA

Tabela 2. Propriedades do projeto.

 

Clique em Finish para finalizar a configuração do projeto. Com isso estamos assumindo os valores padrões para os passos dois e três onde podem ser definidos os nomes da classe herdeira de Application, o  nome do formulário inicial, notificações do sistema, alarme, etc. Caso queira se aprofundar neste assunto, recomendamos a leitura da literatura existente em http://www.softpalm.com.br/arquivo.aspx?ID=1.

O Handheld-Basic então abrirá seu IDE de desenvolvimento conforme a Figura 4.

 

image008.jpg

Figura 4. IDE do Handheld-Basic.

 

Neste IDE temos:

·         ToolBox: reúne todos os objetos de interface que podem ser adicionados nos formulários;

·         Project: local onde são listados os arquivos pertencentes ao projeto;

·         Properties: local onde são listadas as propriedades dos objetos selecionados;

·         Menu: reúne todas as possíveis ações disponíveis para o usuário;

·         ToolBar: reúne as principais ações existentes no Menu;

·         Debug: sistema de acompanhamento de execução.

 

Quando selecionamos o projeto Minimal Project, o Handheld-Basic criou dois arquivos padrões que podem ser facilmente acessados no Project Explorer. O formulário frmMain está definido como o formulário inicial, isso porque na classe clsApplication temos o código da Listagem 1.

 

Listagem 1. Parte do código da classe clsApplication.

1              Private Sub Application_NormalLaunch()

2                dim f as new frmMain

3               

4                f.Show hbFormModeless+hbFormGoto

5              End Sub

 

O Handheld-Basic criou este código automaticamente e ainda preparou a classe clsApplication de forma que herdasse da classe Application. Esta informação pode ser visualizada na propriedade Extends exibida na janela Properties conforme a Figura 5.

 

image010.jpg

Figura 5. Properties.

 

Sempre que um aplicativo desenvolvido em Handheld-Basic for executado pelo sistema operacional, ele irá procurar o método Application_NormalLaunch() existente na única classe que seja herdeira de Application. Na Listagem 1 temos o código completo deste método.

Ainda na Listagem 1 podemos ver claramente que é criado um objeto “f” a partir de uma instancia da classe frmMain (linha 2) e que este objeto “f” possui o método Show (linha 4) que foi utilizado para exibir o formulário.

Vamos agora criar um arquivo Module. Neste arquivo vamos criar variáveis que serão publicas a todo o projeto. Para isso, no menu selecione Project | Add Module conforme a Figura 6.

 

image012.jpg

Figura 6. Adicionando um arquivo Module.

 

Altere a propriedade Name deste arquivo para mdPublico.

Agora vamos editar nossas primeiras linhas de código. Abra o arquivo mdPublico e digite o código apresentado na Listagem 2.

 

Listagem 2. Código de mdPublico.

1              'Variável destinada a armazenar dados do RemoteSync

2              Public Dim rms_connection as String

3               

4              'Objeto usuário, uma instancia da classe

5              'clsAtendente responsável por armazenar dados e métodos

6              Public Dim usuario as new clsAtendente

 

O ideal é que o arquivo Module tenha apenas o necessário. Evite código desnecessário neste arquivo, pois ele sempre será carregado na memória e perpetuará durante toda a existência do aplicativo na memória Dynamic Heap.

Armazenei neste arquivo somente o nome da conexão e um objeto instanciado a partir da classe clsAtendente. Ainda não temos esta classe implementada, então vamos adicionar uma classe ao nosso projeto. Para isso, no menu selecione Project | Add Class e altere a propriedade Name para clsAtendente.

Na classe clsAtendente vamos inserir o código responsável pelos comportamentos da entidade Atendente, conforme a Listagem 3.

 

Listagem 3. Código da classe clsAtendente.

1              'variável responsável por assumir o valor da PK

2              Private Dim iuniqueid as Long

3              'variáveis responsáveis por armazenar dados de login, senha e nome

4              Private Dim ilogin as String

5              Private Dim isenha as String

6              Private Dim inome as String

7               

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?