Desenvolvimento - Mobile
Palm OS: Função BeginDownload
Neste pequeno tutorial descrevo como realizar um download de arquivos TXT utilizando um PDA PalmOS.
por Wellington Pinto de Oliveira
1 - Requer a leitura do artigo Instalando_RMS_V1;
2 - Versão do servidor: 3.0;
3 - Versão da API HB++: 3.1
A função BeginDownload é utilizada para realizar download de fontes de dados TXT e SQL parametrizada. Não é a única forma de download, existe ainda a BeginSQLAction que é a mais indicada para transferência direta com SGBDs. Utilize a BeginDownload para transferência de arquivos TXT.
Como Funciona
O sistema retaguarda gera um arquivo TXT no diretório publico para todos os equipamentos:
C:\RemoteSync\Download\Publico\Nome_Fonte conforme a imagem abaixo:
Figura 1 - Fonte de dados de um projeto
Quando o PDA se conectar é passado o nome da fonte de dados, no exemplo da figura acima é: Retorno_e58dbf25-e07f-48c7-8e21-8cde3b61a6ae o servidor RemoteSync localiza esta pasta dentro do diretório Publico e carrega o arquivo TXT que possui o mesmo nome da fonte de dados Retorno_e58dbf25-e07f-48c7-8e21-8cde3b61a6ae.txt.
Para utilizar o consultas utilizando a instrução SQL, basta apenas trocar a extensão do arquivo e por conseqüência seu conteúdo. Quando o PDA se conectar é passado o nome da fonte de dados e uma série de parâmetros, o servidor identifica que o arquivo possui a extensão .sql (ver Figura 2) e carrega a instrução SQL existente dentro deste arquivo, ele utiliza os parâmetros passados para atualizar a SQL e então executa na base de dados.
Figura 2 - Fonte de dados .SQL
Vantagens
- Excelente para transferência de arquivos TXT pela simplicidade;
- Muito rápido e simples;
- Excelente para integração com sistemas complexos que não possuem base de dados aberta.
Desvantagens
- Embora seja possível fazer transferência de dados por SQL não é recomendado este método pois as SQL são fixas, a função BeginSQLAction se mostrou mais eficiente em campo;
- Requer a geração de arquivos TXT;
- Não é possível filtrar arquivos TXT, logo estes arquivos devem ser carregados na integra.
Implementando um Projeto Básico
Devemos iniciar criando o arquivo TXT que deverá ser carregado pelos PDAs, para isso abra o Windows Explorer e procure a pasta C:\RemoteSync\Download\Publico nesta pasta crie uma nova pata chamada ImaosW e dentro da pasta IrmaosW crie um arquivo TXT chamado IrmaosW.txt. Neste arquivo entre com o texto exibido na listagem abaixo.
Wallace Pinto de Oliveira;Ciências da Computação;Belo Horizonte;MG Wellington Pinto de Oliveira;Ciências da Computação;São Paulo;SP Wanderson Pinto de Oliveira;Ciências da Computação;São Paulo;SP
Conforme exibido na Figura 3.
Figura 3 - Fonte de dados IrmaosW
Inicie um novo projeto no Handheld-Basic (se tiver dúvidas neste ponto consulte www.softpalm.com.br/download/LivroHB.zip), importe o pacote RemoteSync.hbk. No formulário principal adicione um novo botão chamado btDownload.
Para este botão adicione uma ação Click(), e edite o código da Listagem abaixo.
1. Dim server as new RemoteServer 2. 3. "Passando parametros 4. server.SetConnection "127.0.0.1",9760 5. server.SetLogin "admin","demo" 6. server.TimeOut = 3000 7. 8. if server.BeginDownload("IrmaosW",100,"",Nothing) then 9. while server.ReadLine() 10. DebugPrint "#===============================#" 11. DebugPrint "Nome: " & server.GetCol(1) 12. DebugPrint "Formação: " & server.GetCol(2) 13. DebugPrint "Reside atualmente em: " & server.GetCol(3) & " " & server.GetCol(4) 14. wend 15. server.EndDownload hbSocketClose 16. else 17. DebugPrint server.LastError 18. end if
O código deve sempre ser iniciado com a criação das variáveis, neste caso só precisamos da variável server (Linha 1). Na linha 4 foi passado como parâmetro o IP e a porta de conexão, que no exemplo foi "127.0.0.1" (maquina local) e porta 9760.
Logo em seguida na Linha 5 informamos login e senha para a conexão, também foi preciso informar o TimeOut, que no exemplo acima é de 3 segundos (1 segundo equivale a 1000).
Iniciamos o download na Linha 8, informando na seqüência a fonte de dados (IrmaosW), o numero de máximo de registros enviados em um bloco (100), Ticket e os Parâmetros.
Logo em seguida o servidor responde ao PDA, iniciando com a transferência, na Linha 9 o PDA transforma os dados armazenados na Stream em String formando uma linha, a partir daí é só utilizar os métodos GetCol() para capturar as colunas necessárias na linha.
É muito importante finalizar o download, para liberar o Servidor sem exception, isso é feito na Linha 15. Caso haja algum erro vamos exibir utilizando a propriedade LastError, conforme a Linha 17.
Ao final do teste, podemos observar na janela output o seguinte texto:
#===============================# Nome: Wallace Pinto de Oliveira Formação: Ciências da Computação Reside atualmente em: Belo Horizonte MG #===============================# Nome: Wellington Pinto de Oliveira Formação: Ciências da Computação Reside atualmente em: São Paulo SP #===============================# Nome: Wanderson Pinto de Oliveira Formação: Ciências da Computação Reside atualmente em: São Paulo SP FIM 3
Se tiver utilizando uma versão demonstração, alguns registros vêm informando COPIADEMO, conforme a Listagem abaixo:
#===============================# Nome: COPIADEMO Formação: Reside atualmente em: #===============================# Nome: Wellington Pinto de Oliveira Formação: Ciências da Computação Reside atualmente em: São Paulo SP #===============================# Nome: Wanderson Pinto de Oliveira Formação: Ciências da Computação Reside atualmente em: São Paulo SP FIM 3
Sintaxe dos Principais Métodos Utilizados
Public Sub SetConnection(ByVal IP as String, ByVal Port as Integer)
Onde:
IP: IP na qual o equipamento deve se conectar;
Port: Porta liberada para a conexão.
Armazena dados de IP e porta utilizadas na conexão, fique sempre atento as regras de FireWall, 97% dos problemas de instalação estão relacionados a FireWall e Redirecionamentos na rede para esta porta.
Public Sub SetLogin(ByVal User as String, ByVal Password as String)
Onde:
User: Usuário registrado no RemoteSync;
Password: Senha do usuário.
Por padrão o RemoteSync já vem com usuário "Admin" de administrador e "demo" de demonstração.
Public Property Let TimeOut(iTimeOut as Long)
Onde:
ITiemOut: É o tempo em que o equipamento deve esperar pela resposta do servidor.
Public Function ReadLine() as Boolean
Carrega os dados na Stream para a variável String.
Public Function GetCol(ByVal Index as Integer) as String
Onde:
Index: Indice da coluna desejada.
Public Sub EndDownload(Close as HbSocket)
Onde:
Close: Modo de finalização da comunicação.
Links
Site dedicado ao HB++ no Brasil (fórum, exemplos, materiais, etc..)
http://www.softpalm.com.br
Site do desenvolvedor do HB++
www.handheld-basic.com
Código fonte do exemplo
http://www.softpalm.com.br/arquivo.aspx?ID=3601
Download do RemoteSync
http://remotesync.venki.com.br
- Como criar um player de audio para Windows PhoneDisp. móveis
- Windows Phone: Criando e lendo arquivos de textoDisp. móveis
- Inserindo, editando e lendo dados no Windows Phone com IsolatedStorageSettingsDisp. móveis
- Introdução ao jQuery MobileJavascript
- Entendendo a navegação entre páginas no Windows Phone 7Disp. móveis