O desenvolvimento de aplicações em Python para celulares Symbian - além de ser muito divertido - pode ser a forma mais ágil de se fazer algo útil em pouco tempo.
O port do interpretador possibilita você a usar a camera, GPS, SMS e outros componentes do seu celular com algo em torno de 2~4 linhas.
Mas existe um problema. Pra você testar suas aplicações no ciclo de desenvolvimento precisa ter um MS Windows pra instalar o SDK. Uma outra solução muito adotada entre o pessoal que usa linux é usar o interpretador python do celular no computador, via bluetooth.
Assim, mesmo que você não teste sua apliação toda de uma vez, dá pra criar funções dentro do interpretador e testar pedaços do seu código.
Já existem dezenas de posts explicando como fazer essa façanha, mas aqui vou tentar fazer de uma forma mais simples.
Criei um arquivo chamado bluetooth.sh com o seguinte conteúdo:
#!/bin/sh
/etc/init.d/bluetooth start
sdptool add –channel=2 SP
sudo rfcomm listen /dev/rfcomm0 2
Agora, com o dongle bluetooth espetado no seu computador e devidamente registrado, apenas execute o script de root:
root@doritos:/home/flavio# chmod a+x bluetooth.sh; sh bluetooth.sh
* Starting Bluetooth [ OK ]
Serial Port service registered
Waiting for connection on channel 2
Pronto, agora no seu celular, ative o bluetooth e abra o interpretador. Ao apertar Select\Opções vai aparecer:
Selecione o Bluetooth Console e procure pelo seu computador. Depois da primeira vez que seu celular tiver conectado ao computador ele vai gravar seu PC como ‘Default Host’, e a partir da segunda vez ele vai perguntar se você quer conectar ao Default Host ou se é a outro.
Eu, particularmente, sempre busco por outros, mesmo querendo conectar ao meu PC, porque vinha notando erros quando tentava conectar com o Default Host. Buscando por outros, de alguma forma a conexão estabiliza mais rapidamente quando seleciono o meu PC já achado pelo PyS60.
Quando o celular achar o seu computador e você selecionar ele, o terminal que estava aguardando por conexões depois da execução do nosso bluetooth.sh vai mostrar o seguinte:
root@doritos:/home/flavio# chmod a+x bluetooth.sh; sh bluetooth.sh
* Starting Bluetooth [ OK ]
Serial Port service registered
Waiting for connection on channel 2Connection from 00:18:42:9B:8D:65 to /dev/rfcomm0
Press CTRL-C for hangup
Olhe pra tela do seu celular, o PyS60 deve dizer que a conexão está OK.
Agora, com o minicom instalado no seu computador, abra um outro terminal e digite:
minicom -s
Vá em configuração da Porta Serial e sete o Dispositivo Serial para /dev/rfcomm0. Verifique se o Bps/Paridade/Bits está 9600 8N1, e se não tiver configure pra ficar dessa forma.
Pronto, agora quando você apertar em Sair no menu de configurações do minicom ele vai inicializar a leitura do dispositivo registrado em rfcomm0.
Agora é só testar seus códigos. Aqui tem alguns exemplos de testes a serem feitos no seu celular.
Com um dongle bluetooth desses genéricos (pra não dizer do mais barato) e um Ubuntu Linux 8.04 aqui no meu computador, foi preciso reinstalar o libbluetooth com o pacote do Debian Puro. Então se você estiver tendo problemas ao final desse post sem conseguir conectar seu celular ao seu linux, tente reinstalar seu bluetooth com essa biblioteca.


April 2nd, 2009 at 12:10 pm
Flávio,
Tenho acompanhado o seu blog e quero te parabenizar, pois ele é realmente muito bom.
Tu tens conhecimento ou pode me citar alguma direção para pesquisar sobre o desenvolvimento de uma aplicação tipo sistema/automação de força de vendas em PyS60 ?, pergunto isso, pois praticamente 100% das aplicações que vejo neste estilo utilizam JavaME. Será que eu conseguiriar desenvolver algo assim com PyS60 ?
Desde já agradecendo,
Leandro.
April 2nd, 2009 at 5:28 pm
Fala Leandro! Em primeiro lugar *muito* obrigado pelo elogio do blog. São esses feedbacks que deixam os blogueiros felizes da vida
Sobre aplicação de força de vendas, nunca tive nenhum contato próximo com um, mas se mandassem eu fazer, faria assim:
Um servidor central com um webservice (poderia usar um simples JSON da vida) gerenciando as requisições dos disp. móveis e um banco (mysql ou pgsql) guardando isso. Faria uma interface web pra visualização das vendas, extratos, solicitações e etc. Tudo isso poderia ser feito em python com twisted, cherrypy ou django (e cheetah ou kid pra templating).
No lado mobile eu faria usando pys60 com o módulo graphics e appuifw gerenciando imagens na tela do celular com um screen full, pra caber mais informações. Capturava eventos do teclado com key_notes e fazia chamadas pré-estabelecidas ao webservice.
Fazia um protocolo de comunicação (algo como uma string dividida por @@@ ou algo parecido) pro webservice e pronto.
O bacana desse webservice com um protocolo definido é que poderiam existir vários clientes, em pys60, jme, algo pra desktop tbm.
Enfim, é isso. Qualquer coisa que quiser debater pode pegar meus contatos na sessão Sobre Mim.
Abraço!