• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

skin

Interacção de Telemóvel e Aplicação Web

78 mensagens neste tópico

Viva,

recentemente surgiu no meu interesse saber como é possível ao enviar uma SMS para um número isso fazer despoletar uma acção que vai actualizar uma aplicação, já andei à procura mas nada encontrei, provávelmente por não estar a utilizar as keywords certas visto que não sei bem como chamar a isto.

Mais precisamente gostava de saber como funciona sistemas do género do www.tweetaporsms.com não para fazer algo do género mas para integrar numa página minha com outro propósito.

Alguém sabe como funciona? Ou tem ideias de soluções que podem funcionar de maneira semelhante?

(Já pedi informações ao autor do serviço indicado acima mas ele diz que não pode fornecer informações...)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O conceito é fácil de implementar, não quer dizer que não seja trabalhoso.

Em primeiro lugar tens que comprar um Modem GSM, para esta aplicação recomendo o Siemens TC35 custa cerca de 180,60€ com IVA, incluindo kit com cabo RS232, antena, alimentador e portes.

Este modem é simples e bastante completo (para as comunicações), de um lado metes o cartão SIM, o alimentador e a antena, do outro ligas um cabo RS232 ao computador (também podes ligar um auscultador de telefone).

Configuras o modem com o hiperterminal através de comandos AT, são comandos específicos para os telemóveis, mas são relativamente simples, por exemplo:

AT - é o ping ao telemóvel

ATD+351nnnnn - é fazer uma chamada telefónica para o nº +351nnnnn

AT+CMGS... - para enviar um SMS

AT+CMGR... - para ler um SMS

etc...

Basicamente, tens que fazer um programa (em VB.NET ou C# ou o que quiseres) para comunicar via porta RS232 com o modem. Este modem permite armazenar até 20 mensagens SMS, mas só tens que ler a mensagem 0 (e apagar depois de ler) ciclicamente.

Depois, só tens que tratar o texto que recebes da porta RS232, uma string e fazer o que queres.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hmm... Obrigado pela explicação estava à procura de algo mais simples e mais barato mas deduzo que não haja ;).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Entretanto, porque estou a trabalhar num projecto de baixo custo que envolve SMS , encontrei isto:

http://www.codeproject.com/KB/cs/SMS.aspx?fid=457949&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=3070213

e

http://www.sourcecodester.com/visual-basic/sending-sms-using-commands-gsm-modemgsm-phone.html

Não li o links até ao fim, mas parece-me que o 1º está porreirinho

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Um telemóvel não dá para fazer estas operações? Pergunto, porque não percebo muito do assunto, mas já tenho visto soluções em que apenas é necessário ligar um telemóvel.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É possível que sim, mas como trabalho na automação industrial e usamos modem GSM simples, é uma caixa preta e ninguém quer mexer, temos menos problemas.

Há industria com fenómenos físicos estranhos, as coisas passam de sólido para gasoso sem passar pelo estado líquido nem deixar vestígio...

De qualquer maneira, no primeiro link que meti aponta para outra página:

http://www.scampers.org/steve/sms/samples.htm

Onde estão a usar o "Nokia phone with PC Connectivity SDK Version 3.0" por isso é possível que dê, aliás tem que dar os softwares dos fabricantes interagem com o telemóvel para tudo e mais alguma coisa.

Mas nunca experimentei...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hoje encontrei um cabo de dados de um telemóvel antigo, e resolvi começar a fazer umas tentativas. Ainda não consegui nada de muito conclusivo, até porque estou a usar um cartão que não está activado, mas já consegui testar alguns comandos com sucesso, por exemplo, inserir com êxito o PIN do cartão.

O que estou a  usar:

- Sony Ericsson T630

- Cabo de dados USB não oficial (o telemovel não tem USB , é a entrada própria) ~ 25€

Estou a seguir algumas indicações daqui:

http://www.developershome.com/sms/

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu criei um sistema "doméstico" que monitoriza uma caixa de email e reencaminha condicionalmente alguns dos emails para determinados numeros de telefone. Usei com um telemovel Nokia que estava para ir para o lixo (microfone avariado) e um cabo de ligação USB.  :confused:

Instalados os drivers do cabo o telemovel aparece no PC como um modem GSM ligado a uma porta COM ficticia. Depois é enviar os comandos desejados e que, pelo menos para as operações mais triviais, são independentes da marca e modem utilizado.

O investimento ficou em cerca de 50 euros do cabo e há uns 2 anos que funciona 24/7 sem qualquer problema.  :P 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O meu portátil vem um modem GSM. Dito de outra forma, basicamente o meu computador tem um telemovel incorporado.

Muitos portateis têm isto. Aqueles modems USB tambem seriam uma alternativa, mas os drivers daquilo são tipicamente  trancados ao máximo e devem funcionar de forma um pouco marada, eu não ia por aí.

Posto isto, tenho uma porta de entrada para a rede GSM. Em particular o ponto de entrada é um subscritor normal, um cartão.

O hardware está aqui, o que os drivers dão para fazer ou quaão faceis de usar são, isso não sei. Em teoria o que não for suportado pelos drivers pode ser implementado usando uma linguagem que compile para o meu hardware (um PC).

De igual forma tambem é possível fazer o depoy de uma aplicação dessas num telemovel. Se tiveres um telemovel que tenha um sistema operativo S60 por exemplo, existem boas bibliotecas para acederes a muitas funcionalidades do telefone. Enviar mensagens, usar o bluetooth, etc.

Isto são basicamente hacks. Num ambiente de produção sério, um serviço desses utilizad outras formas de comunicar com a rede móvel. Provavelmente contratam uma determinade quantidade de tráfego com um operador e depois calculo que lhes seja aberta uma via de comunicação por RPC ou coisa que o valha.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Começam a surgir ideias interessantes :confused:. Tenho de me aventurar para apresentar algo também.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Alguém dispõe de alguma coisa em código aberto? É que não faço ideia como trabalhar com as portas COM :S

edit: Já consegui usar o hyperterminal, mas antes tenho que connectar telm ao nokia pc suite

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

http://www.developershome.com/sms/

são 60 e tal páginas, valem bem a leitura para se estar bem dentro do assunto. Também inclui uma secção para pessoal que não quer esperar.

Não sei se será de todo necessário ligares o telemóvel ao Nokia PC Suite, JoaoMiguel. Eu por exemplo, tenho um Sony Ericsson antigo, que me bastou instalar os drivers do cabo. Ele criar uma porta COM, tal como o hma disse, e é só saberes qual é para poder enviar os comandos.

BTW, não é melhor nem pior, mas estou a usar o Putty para aceder ao tlm. Nem fazia a mínima ideia que dava.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Imagino, que para os telemóveis com Bluetooth ou IR, nem precisam de cabo (desde que o PC ou portátil também tenham BLuetooth ou IR)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Porque é que por vezes simplesmente não consigo fazer nada no hyperterminal como se nao tivesse ligado? Liguei o telm nao pc suite, dá tudo bem, nos modems o diagnostivo tudo bem, no hyperterminal n me deixa fzr nada :S

E na lista de modems tem uma porta atribuida quando ligo o cabo. Mas ontem fiz a mesma cosia e deu

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

quando nao fizer nada, simplesmente escreve "at" e espera um ok. Após isso deves conseguir por outros comandos. Também me costuma acontecer de vez em quando.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma das coisas mais complicadas da programação é a comunicação, porque estamos às cegas a bater com a cabeça em tudo e mais alguma coisa.

O Hyperterminal, é uma ferramenta mas muito básica, e por vezes até parece que não estamos a escrever, porque não aparece nada no ecrã, mas na realidade o que hiperterminal escreve no ecrã é o eco da resposta. No entanto o hyperterminal é necessário para fazermos os testes, mas necessita de ser complementado, para isso devemos usar um RS232 Snifer, para isso recomendo o da HHD (neste momento é pago, mas há versões freeware na net http://www.baixaja.com.br/downloads/Windows/Development/Debugging/Free-Serial-Port-Monitor_837.html.

Instalas, arrancas antes de qualquer outro software caso contrário ele não consegue snifar, no programa crias um novo serial motitor (podes seleccionar as opções todas), a partir deste momento ele começa a monitorizar a porta, quando arrancares com o hyperterminal, ele vai registar, porta aberta (e bloqueada) por hyperterminal, quando escreveres, ele representa a azul, quando receberes ele representa a vermelho (ou ao contrário, não me lembro), vez o que envias e recebes em ascii e em hex, por exemplo vão te aparecer muitos 0x0A e 0x0D (CR e LF), vez também quanto tempo demora a responder, entre outras coisas.

É uma ferramenta que pode ser muito útil.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

edit: nao escreve nada mas ed facto lê =)). Agora é passar para a programacao, ui

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

... e por vezes até parece que não estamos a escrever, porque não aparece nada no ecrã, mas na realidade o que hiperterminal escreve no ecrã é o eco da resposta. ...

O modem não está a responder. Desliga, dá-lhe algum tempo. Verifica os baudrates, verifica os start e stop bits, verifica o controlo de fluxo (em princípio deveria estar desligado).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qual a razão de nao aparecer o que escrevo?problemas de buffer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só agora agora é que vi este tópico, tema interessante.

Eu por acaso também já me perguntei sobre como receber SMS no PC (até tentei o Vodafone Web Phone mas aquilo já está KO) para poder controlar a minha rádio pirata à distancia :P

Skin, quando tiveres algo concreto e barato avisa ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Updating: Já consigo comunicar e enviar algumas sms por programação. No entanto (e nao sei se é normal, apenas me deu resposta OK uma vez), o programa que o nokpt arranjar detecta os pedidos mas não dá a resposta como pelo hiperterminal. Nem sempre que corro consigo enviar as sms, por exmeplo, em 5 tentativas realmente recebi 2. Não sei se é necessario algum sleep à thread entre cada comando ou sequer se é preciso. Tenho que fazer mais testes.

nokpt é mt bom o programa de facto

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Conheces ou compreendes o que está por trás da comunicação, tecnicamente e electronicamente?

Pelo sim pelo não, aqui vai:

Uma trama de comunicação é composta por StartBits+DataBits+Paridade+StopBits

* Baud-rate, por norma é 9600 bpt ou seja bits por segundo ou seja, cada bit (a zero ou a 1) dura aprox. 0,1ms, naturalmente que se o baud-rate estiver errado, bicas com bits grandes ou pequenos porque duram mais ou menos tempo, logo devias ler 1 bit e lês 2 ou 1/2 por exemplo.

* StartBit - Por norma no Windows o StartBit é sempre 1 e não deixa alterar. Este StartBit, é enviado sempre a 1, e indica ao receptor que vai estamos a iniciar o envio de dados. No fim deste startbit começam os bits de dados.

Configuras o nº de bits de dados - Por norma são 8 bits (ou 1 Byte). No fim de enviares os (8) bits de dados, é enviado o bit de paridade (se existir) ou o stopbit (se o bit de paridade não existir)

* Bit de paridade - O bite de paridade é um controlo, uma garantia que os dados chegaram correctos, há 3 configurações possíveis, não haver paridade (ou seja não há controlo), paridade par ou paridade ímpar, basicamente o somatório dos bits de dados + o bit de paridade tem que ser par ou impar.

* StopBit (ou bit de paragem) - Por norma o stopbit dura 1 bit, mas pode ter durações de 1,5 ou 2 bits. Indica que estes dados acabaram.

Depois pode é dado um tempo de espera (ou não) e enviada a segunda trama, nos mesmos modos...

Cada trama demorará cerca de 1ms (para 1StartBit+8DataBits+1StopBit), ainda há aqui atrasos relacionados com os tempos de resposta da electrónica, mas não são muito importantes para esta explicação.

Estas comunicações por norma são assíncronas a 2 fios, o que ainda vem dificultar mais a comunicação, e não são determinísticas.

E por norma, não têm controlo de fluxo, ou seja, quando um interveniente fala, parte do princípio que a linha está livre, se configurares controlo de fluxo, ele poderá ficar há espera (para falar) de um sinal que nunca chegará, ou o outro poderá ficar há espera do sinal para começar a ouvir.

Tudo isto que descrevi é transparente para nós, o controlador do computador (hardware) faz tudo sozinho, mas por outro lado, só recebemos o sumo.

O controlador é como um segurança da discoteca, bronco e rígido, se a trama não estiver como configuraste, ele ignora-a considera que é ruído e manda-a para o lixo.

As comunicações são sempre muito complicadas, e por norma estás quase lá, mas não sabes nem vês, não tens acesso (a não ser com um data-analizer ou oscilocópio XPTO), só recebes o resultado da comunicação mas para receberes o resultado o que recebes tem que obedecer à configuração da porta.

Depois há outras questões que não se percebe por e simplesmente, já passei dias à volta de um modem que funcionava bem, se de X em X tempo lhe manda-se "AT", se não ele adormecia e tinha que o desligar, e para descobrir isto? Já começas a duvidar de tudo.

Sempre que me meto num projecto de comunicação (independentemente da experiência que foi adquirindo) faço com muito cuidado (as previsões de tempo que vou gastar) e tens sorte porque em modem há milhares de exemplo na internet, quando começas a comunicar com equipamentos Made In SabeDeusOnde com um manual manhoso e assistência técnica que te diz Às 9h00 da manhã quando lhe ligas "Amanhã vejo, vou para casa (dormir) que o meu dia já acabou". Ou quando ligas um Modem e azar do caraças a rede do cartão que inseri foi a abaixo, ... já passaram N minutos e nada, ... espera aí tenho aqui um cartão de outra rede (concorrente), deixa lá testar, ohhh foi a baixo (TAMBÉM???), pegas no telefone fixo, ligas para as 2 redes, e dizem-te "Foi detectada uma pequena avaria nessa área, ainda não sabemos o que se trata, mas já estamos a tratar do assunto". Fixe não é? Nem acreditava, um modem avariado e grande bug na rede.

As comunicações são complicadas, mas não há que desanimar, com calma isso vai lá... e com alguma sorte.

Updating: Já consigo comunicar e enviar algumas sms por programação. No entanto (e nao sei se é normal, apenas me deu resposta OK uma vez), o programa que o nokpt arranjar detecta os pedidos mas não dá a resposta como pelo hiperterminal. Nem sempre que corro consigo enviar as sms, por exmeplo, em 5 tentativas realmente recebi 2. Não sei se é necessario algum sleep à thread entre cada comando ou sequer se é preciso. Tenho que fazer mais testes.

nokpt é mt bom o programa de facto

Tens que dar algum delay, e efectivamente num modem já detectei esse problema, tinha que enviar 10 SMS seguidos para 10 nº diferentes e alguns não recebiam, testamos inclusive 10 SMS seguidos para o mesmo Nº, só recebia metade (acho, mas já não me lembro).

Outro problema que te pode surgir, é a saturação das antenas. Quando disparas um SMS ele é apanhado por uma antena (qualquer que não controlas) e é envia quando poder, tenho uma aplicação que com alguma frequência recebemos um SMS a dizer que a tensão da rede foi reposta e passado alguns minutos recebemos a dizer que faltou a rede, recebemos 2 SMS, mas pela ordem errada, porque 1º falta a rede e depois é reposta, mas é uma coisa que não podemos controlar.

Por isso é que não se deve usar SMS para controlar seja o que for, porque simplesmente não é fiável, nem real-time.

Ainda bem que já funciona, alguma coisa, diz.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Conheces ou compreendes o que está por trás da comunicação, tecnicamente e electronicamente?

Pelo sim pelo não, aqui vai:

Uma trama de comunicação é composta por StartBits+DataBits+Paridade+StopBits

* Baud-rate, por norma é 9600 bpt ou seja bits por segundo ou seja, cada bit (a zero ou a 1) dura aprox. 0,1ms, naturalmente que se o baud-rate estiver errado, bicas com bits grandes ou pequenos porque duram mais ou menos tempo, logo devias ler 1 bit e lês 2 ou 1/2 por exemplo.

* StartBit - Por norma no Windows o StartBit é sempre 1 e não deixa alterar. Este StartBit, é enviado sempre a 1, e indica ao receptor que vai estamos a iniciar o envio de dados. No fim deste startbit começam os bits de dados.

Configuras o nº de bits de dados - Por norma são 8 bits (ou 1 Byte). No fim de enviares os (8) bits de dados, é enviado o bit de paridade (se existir) ou o stopbit (se o bit de paridade não existir)

* Bit de paridade - O bite de paridade é um controlo, uma garantia que os dados chegaram correctos, há 3 configurações possíveis, não haver paridade (ou seja não há controlo), paridade par ou paridade ímpar, basicamente o somatório dos bits de dados + o bit de paridade tem que ser par ou impar.

* StopBit (ou bit de paragem) - Por norma o stopbit dura 1 bit, mas pode ter durações de 1,5 ou 2 bits. Indica que estes dados acabaram.

Depois pode é dado um tempo de espera (ou não) e enviada a segunda trama, nos mesmos modos...

Cada trama demorará cerca de 1ms (para 1StartBit+8DataBits+1StopBit), ainda há aqui atrasos relacionados com os tempos de resposta da electrónica, mas não são muito importantes para esta explicação.

(... etc....)

Isto é para a porta de serie certo?
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já tinha algumas noções do que tinhas falado, mas fiquei de facto muito mais esclarecido. É a 1ª vez que estou a trabalhar com o que quer que seja de comunicações.

Neste momento tenho 2 dúvidas:

  1 - Porque é que no hyperterminal recebo sempre a resposta ok e por programação não recebo (e estou a dar um delay de 0.5s entre cada comando, já dei mais e menos)?

  2 - Não estando eu a receber essa resposta, não a posso ler da porta, logo não sei se foi enviada ou nao ou se houve algum erro. Como resolver? Como disseste, não é garantido 100% das vezes que é enviada, mas se souberes que a resposta foi "ok" pelo menos tens uma ideia de "ok, teoricamente por aqui correu tudo bem, não correu nada de anormal em principio".

Updating: Até agora estou a receber de forma correcta as sms.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora