Ir para conteúdo
  • Cadastre-se

dev botao

DECODIFICAR SMS COM ASCII


  • Este tópico foi criado há 1456 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Fundadores

deve ser uma forma interna que esse modem codifica os caracteres... o fabricante precisaria fornecer o algoritmo de conversão

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Se você tiver vários exemplos de palavra, retorno... talvez seja possível deduzir...

Qual seria o retorno de:

"ÁÉÍÓÚ"
"áéíóú"
"NÃO"
"não"

(por favor envie respeitando maiúsculas e minúsculas)

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Isso daí é está parecendo UTF-8 convertido pra Hexadecimal. Só que não parece totalmente correto.

A conversão de:

Citar

NÃO =  004E00C3004F

Deveria ser algo como:

Citar

NÃO =  0x4E 0xC3 0x83 0x4F

 

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Deve haver uma forma mais automatizada, de converter... mas criei uma rotina... veja se dá certo... (projeto com fontes, em anexo)

function TForm1.Convert(AData: String): String;
var
  BinaryStr: AnsiString;
  WideStr: WideString;
  LenData, i: Integer;
  B1, B2: Byte;
begin
  BinaryStr := '';
  LenData := Length(AData);

  i := 1;
  while i < LenData do
  begin
     B2 := StrToInt('$' + copy(AData, i  , 2));
     B1 := StrToInt('$' + copy(AData, i+2, 2));
     BinaryStr := BinaryStr + AnsiChr(B1)+AnsiChr(B2) ;
     Inc(i, 4) ;
  end ;

  LenData := Trunc(Length(BinaryStr)/2);
  SetLength(WideStr, LenData);
  StrLCopy(PWideChar(WideStr), PWideChar(BinaryStr), LenData*2);
  Result := String(WideStr);
end;  

 

Converte.zip

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Daniel Simoes disse:

Deve haver uma forma mais automatizada, de converter... mas criei uma rotina... veja se dá certo... (projeto com fontes, em anexo)


function TForm1.Convert(AData: String): String;
var
  BinaryStr: AnsiString;
  WideStr: WideString;
  LenData, i: Integer;
  B1, B2: Byte;
begin
  BinaryStr := '';
  LenData := Length(AData);

  i := 1;
  while i < LenData do
  begin
     B2 := StrToInt('$' + copy(AData, i  , 2));
     B1 := StrToInt('$' + copy(AData, i+2, 2));
     BinaryStr := BinaryStr + AnsiChr(B1)+AnsiChr(B2) ;
     Inc(i, 4) ;
  end ;

  LenData := Trunc(Length(BinaryStr)/2);
  SetLength(WideStr, LenData);
  StrLCopy(PWideChar(WideStr), PWideChar(BinaryStr), LenData*2);
  Result := String(WideStr);
end;  

 

Converte.zip 784 kB · 1 download

Boa noite meu amigo, não tenho nem palavras para agradece,deu super certo. fiz vários teste, e o que notei e que as mensagem que precisam se convertida começa com 00(zero zero) então e so fazer uma validação no retorno para ver se começa com 00 se não  nem precisa converte.. espero que seja assim. sou novo nessa area.

 

depois.PNG

antes.PNG

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Que bom que deu certo... 

Você modificou nas Units do ACBrSMS ?

Se sim, Poderia compartilhar as Units modificadas ?

Talvez seja útil enviarmos esses ajustes ao SVN 

  • Curtir 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

38 minutos atrás, Daniel Simoes disse:

Que bom que deu certo... 

Você modificou nas Units do ACBrSMS ?

Se sim, Poderia compartilhar as Units modificadas ?

Talvez seja útil enviarmos esses ajustes ao SVN 

Bom dia, então eu modifiquei apenas a unit : uListaMensagem.pas para criar a função de validar se a msg ta codificada e converter seguindo o modelo acima. e na unit ACBrSMSClass.pas

corrigir a função de formatação de data..... todas as modificações funcionaram perfeimentte nos seguente modem

HWAWEI - E392

ZTE MF190

ZTE MF191

ACBrSMSClass.pas uListaMensagem.pas

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Apliquei ajustes nos fontes do SVN, para tentar corrigir essas duas situações...

Commit [r19392]

pode por favor atualizar os fontes e testar ?

Citar

-- ACBrSMSClass --
[-] Ajuste para leitura de Data/Hora com retorno de apenas 2 dígitos no ano
[-] Ajuste para leitura de mensagens codificadas, por motívos de acentuação
    (por: DSA)

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

7 horas atrás, Daniel Simoes disse:

Apliquei ajustes nos fontes do SVN, para tentar corrigir essas duas situações...

Commit [r19392]

pode por favor atualizar os fontes e testar ?

 

Boa noite, atualizei o fonte, fiz o teste.... a data funcionou corretamente. deu um exception  mais listou a data certo,

 

 

 

image.thumb.png.930c9b95f78fb7392c1cd4d5305927f9.png

quanto a questão conversão, não funcionou.... com esse novo comit

image.thumb.png.cfc0894be8cc5d9c93475067ef60d8c9.png

se quiser eu disponibilizou o acesso a minha maquina para remotamente voce fazer os teste e realizar o debug...

Link para o comentário
Compartilhar em outros sites

  • Fundadores
13 horas atrás, marciomtk disse:

Boa noite, atualizei o fonte, fiz o teste.... a data funcionou corretamente. deu um exception  mais listou a data certo,

É um exception controlado... não vaza para a aplicação... e pode ser ignorado em tempo de Debug 

  • Obrigado 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Fundadores
Em 12/03/2020 at 20:06, marciomtk disse:

quanto a questão conversão, não funcionou.... com esse novo comit

Ele não está entrando no IF abaixo, na linha 282 de ACBrSMSClass.pas ?

Se não estiver, por favor teste essa modificação

          if (copy(Mensagem,1,2) = '00') and StrIsNumber(Trim(Mensagem)) then
            Mensagem := ConvertMsg(Mensagem);

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

4 minutos atrás, Daniel Simoes disse:

Ele não está entrando no IF abaixo, na linha 282 de ACBrSMSClass.pas ?

Se não estiver, por favor teste essa modificação


          if (copy(Mensagem,1,2) = '00') and StrIsNumber(Trim(Mensagem)) then
            Mensagem := ConvertMsg(Mensagem);

 

vou tentar agora

Link para o comentário
Compartilhar em outros sites

×
×
  • 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.