Ir para conteúdo
  • Cadastre-se

dev botao

ACBrSMS


Dangelo2010
Ver Solução Respondido por wagner aragao,
  • Este tópico foi criado há 3531 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Moderadores

O ACBrSMS permite enviar SMS de modens Daruma e Modens 3G normais utilizando um chip de celular normal e o seu plano de envio de mensagens, dê uma olha no Demo disponível na pasta Exemplos, lá já tem a demonstração de todas as rotinas.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Ainda estou fazendo o componente, e algumas coisas ainda não foram colocadas, mas o Demo está bem completo e explicado, o componente não é muito complexo, bem simples até.

Ele visa simplesmente utilizar modens 3G ou industriais para o envio de sms, somente isso, o componente nasceu da demanda de vários usuários por esse tipo de aplicação.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...
  • Moderadores

Ele vai ler as mensagens recebido, e que ainda não tive tempo de terminar, está semana estava viajando e agora estou parado porque fiquei doente, mas farei o possível para semana que vem liberar a leitura das mensagens também.

  • Curtir 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Solution

Olá Regys,

Esse projeto poderá ser utilizado com arquivo TXT como o ACBRNFeMonitor e ACBRMonitor ou somente atraves dos componentes do delhpi/lazarus ??

t+

MicroLine Software

xHarbour Simplex 1.2.3/xDev 0.70/xDesigner by L.F.Basso/HWGui

ACBRMonitorPlus OpenSSl/Capicom

[email protected]

69-98114-9250

Link para o comentário
Compartilhar em outros sites

Olá pessoal, estou testando o ACBrSMS com o modem ZTE MF100 e ao tentar enviar uma mensagem tanto individual quanto em lote pelo sistema demo o mesmo dá um erro "Communication error 9997: Timeout during operation" alguém sabe como resolver? (em lote o mesmo só envia a mensagem para o primeiro número do lote)

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Essa mensagem provavelmente acontece porque tua operadora está levando mais do que os 10 segundos configurados por padrão para enviar o SMS, aumente o valor da propriedade ATTimeout, já vi casos de ter que colocar 30 segundos para passar, depende de cada operadora.

O envio em lote permite enviar para mais de um número de telefone, basta formar o lote com as mensagens que deseja seguindo os padrões mostrados no demo.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Pessoal, encontrei o erro ... no arquivo ACBrSMSClass.pas onde tem:

// definir o número de telefone do destinatário ******************************

Cmd := 'AT+CMGS="' + ATelefone + '"';

Self.EnviarComando(Cmd);

if not Self.ATResult then

raise EACBrSMSException.Create(FALHA_NUMERO_TELEFONE + sLineBreak + fpUltimaResposta);

// Enviar a mensagem *********************************************************

Cmd := Trim(AMensagem) + CTRL_Z;

Self.EnviarComando(Cmd);

if not Self.ATResult then

raise EACBrSMSException.Create(FALHA_ENVIAR_MENSAGEM + sLineBreak + fpUltimaResposta);

######################################################################

Substituir por:

// definir o número de telefone do destinatário ******************************

Cmd := 'AT+CMGS="' + ATelefone + '"' + #13#10; // Modificado

Self.EnviarComando(Cmd);

if not Self.ATResult then

raise EACBrSMSException.Create(FALHA_NUMERO_TELEFONE + sLineBreak + fpUltimaResposta);

// Enviar a mensagem *********************************************************

Cmd := Trim(AMensagem) + #26; // Modificado

Self.EnviarComando(Cmd);

if not Self.ATResult then

raise EACBrSMSException.Create(FALHA_ENVIAR_MENSAGEM + sLineBreak + fpUltimaResposta);

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Pessoal, encontrei o erro ... no arquivo ACBrSMSClass.pas onde tem:

// definir o número de telefone do destinatário ******************************

Cmd := 'AT+CMGS="' + ATelefone + '"';

Self.EnviarComando(Cmd);

if not Self.ATResult then

raise EACBrSMSException.Create(FALHA_NUMERO_TELEFONE + sLineBreak + fpUltimaResposta);

// Enviar a mensagem *********************************************************

Cmd := Trim(AMensagem) + CTRL_Z;

Self.EnviarComando(Cmd);

if not Self.ATResult then

raise EACBrSMSException.Create(FALHA_ENVIAR_MENSAGEM + sLineBreak + fpUltimaResposta);

######################################################################

Substituir por:

// definir o número de telefone do destinatário ******************************

Cmd := 'AT+CMGS="' + ATelefone + '"' + #13#10; // Modificado

Self.EnviarComando(Cmd);

if not Self.ATResult then

raise EACBrSMSException.Create(FALHA_NUMERO_TELEFONE + sLineBreak + fpUltimaResposta);

// Enviar a mensagem *********************************************************

Cmd := Trim(AMensagem) + #26; // Modificado

Self.EnviarComando(Cmd);

if not Self.ATResult then

raise EACBrSMSException.Create(FALHA_ENVIAR_MENSAGEM + sLineBreak + fpUltimaResposta);

Se você prestou atenção aos fontes percebeu que o método enviarcomando adiciona automaticamente o #13#10 ao final do comando e que a constante CTRL_Z é igual ao #26, estas modificações portanto não fariam efeito algum, aumento o tempo no ATTimeout que vai funcionar.

Você instalou corretamente o driver do modem?

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Quanto as mensagens recebidas, veja no demo, o método ainda não está terminado mas ele retorna um arquivo com as mensagens, no futuro ao invés do arquivo será criada uma lista estou trabalhando nisso ainda e como tenho pouca informação dos retornos disponíveis e ando meio doente, então ta andando meio devagar essa parte.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Régys, no Demo aqui só aparece OK no arquivo mensagens.txt .... não chega nenhuma mensagem.

veja nos fontes do demo, é passado ao método um parametro string com o path do arquivo, basta procurar por este arquivo que as mensagens estarão dentro dele, você pode personalizar também onde será gravado.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Tem certeza que tem mensagens para esse SimCard? Aqui eu fiz testes com dois SimCards diferentes e todos retornaram corretamente.

O normal do arquivo quando tem mensagens e ter a lista das mensagens, saltar uma linha e depois um OK mostrando o fim do arquivo.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Régys, para conseguir ler eu tive de fazer as seguintes alterações em "procedure TACBrSMSClass.ListarMensagens(const AFiltro: TACBrSMSFiltro;

const APath: String);" ... e antes de ...

###############################

case AFiltro of

fltTudo: cmd := 'AT+CMGL="ALL"';

fltLidas: cmd := 'AT+CMGL="REC READ"';

fltNaoLidas: cmd := 'AT+CMGL="REC UNREAD"';

end;

###############################

Coloquei:

###############################

// definir o modo de envio ***************************************************

Cmd := 'AT+CMGF=1';

Self.EnviarComando(Cmd);

if not Self.ATResult then

raise EACBrSMSException.Create(FALHA_INICIALIZACAO + sLineBreak + fpUltimaResposta);

// definir ver todas as mensagens ***************************************************

Cmd := 'AT+CPMS="MT"';

Self.EnviarComando(Cmd);

if not Self.ATResult then

raise EACBrSMSException.Create(FALHA_LEITURA_MENSAGEM + sLineBreak + fpUltimaResposta);

case AFiltro of

fltTudo: cmd := 'AT+CMGL="ALL"';

fltLidas: cmd := 'AT+CMGL="REC READ"';

fltNaoLidas: cmd := 'AT+CMGL="REC UNREAD"';

end;

#####################################

Sem essas linhas que lhe informei ai, o comando AT+CMGL="ALL" dava ERROR

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Posta o arquivo alterado para comparar, é mais simples.

Meu modelo é daruma.

Talvez o teu caso seja igual o ZTE que precisa de parametros adicionais, posta o arquivo que a noite eu acerto a classe.

Qual é o modelo do modem que você está utilizando?

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Fiz uma atualização no modelo ZTE usando suas especificações, faça o teste e me reporte qualquer coisa.

Quando for mecher nos comandos faça na classe do modelo não na classe geral, nela ficarão somente os comandos AT padrão.

Obrigado pela ajuda com os testes.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3531 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.