Projetos Desenvolvidos/Em Desenvolvimento

Envio de SMS com modems 3G (V.2) -

Recentemente retomei a questão do envio de SMS por linha de comando, corrigindo algumas falhas da versão que publiquei aqui e introduzindo algumas melhorias no software.

Na versão 2, dentre as melhorias, eu destaco:

  • Menor espera entre comandos enviados ao modem, reduzindo o tempo total de envio de uma mensagem;
  • As respostas do modem aos comandos enviados agora são verificadas, para controle do processamento do envio;
  • Foi criado o modo “debug”, que produz um passo-a-passo da execução dos comandos e das respostas do modem;
  • Agora é possível definir-se o número do centro de envio das mensagens. Nos chips testados (TIM e VIVO) esses números já estão gravados, mas, ao que parece, alguns números pesquisados na Internet permitiriam o envio da mensagem a preço menor ou mesmo gratuitamente (isso, infelizmente, eu não pude comprovar);
  • O chip da TIM, e imagino outros, solicitam a informação do número de segurança (PIN) antes da primeira operação, ou seja, quando é inserido em um modem e este é conectado à USB do micro. Agora é possível enviar um comando ao modem para informação desse número de segurança, para a liberação dos envios de SMSs;
  • Agora é possível definir-se o tempo de validade das mensagens nos centros de envio, para a situação em que os destinatários não estejam disponíveis (fora de área, etc.) na ocasião do envio.

Uma ajuda para o fornecimento dos parâmetros de operação do programa são exibidos ao se especificar os parâmetros "-h" ou "-?".

Ao inserir o modem na porta USB, o Linux (CentOS 6.3) criou três portas: /dev/ttyUSB0, /dev/ttyUSB1 e /dev/ttyUSB2. A porta que responde aos comandos "AT" é a /dev/ttyUSB1 e é, portanto, a porta que informo no parâmetro "-p porta" (e.g. -p /dev/ttyUSB1). A mensagem a ser enviada é especificada no parâmetro "-m mensagem", colocada usualmente entre aspas, por conta dos espaços entre as palavras. O texto é agora convertido para texto de sete bits (removendo-se acentos, cedilhas, etc.) para evitar envio de lixo ao destinatário. Uma futura versão corrigirá essa questão. A lista de telefones de destino é informada no parâmetro "-t telefone1,telefone2,...,telefoneN" (sem espaços entre as vírgulas e os números). Com isso, posso enviar a mesma mensagem para mais de um telefone com um único comando. As informações do modem poderão ser consultadas com o uso do paâmetro "-i" ou "-info". O número do pin, da central de envio de mensagens e do tempo de validade da mensagem no centro de mensagens pode ser especificado pelos parâmetros "-n" ou "--pin", -c" ou "--cen" e "-l" ou "--val", respectivamente. Consulte a ajuda impressa ("-h", "--help" ou "-?").

O código fonte em C++ encontra-se aqui.
O executável do utilitário para o CentOS Linux, na versão 6.3 encontra-se aqui.

Futuramente, além de implementar o envio de mensagens "flash" e mensagens com acentuação, outros modems serão testados. Já tenho dois da ZTE na fila de espera para os testes. Aguardem.