Fórum Enviar Comandos AT para Modem #289392

25/07/2005

0

Pessoal Bom Dia, preciso desenvolver uma pequena Aplicação que faça o seguinte:
Tenho um Modem Externo, preciso enviar dois comandos AT para ele para gravar um dados em sua memória, já testei isso no Hyper Terminal e Funciona beleza, procurei no Forum algo sobre Comando AT e HYper Terminal mas a unica coisa que achei foi um componente TurboPower Async Professional 4.06 released porem não consegui usa-lo, se alguém puder me ajudar eu agradeço.


Ariovaldo

Ariovaldo

Responder

Posts

25/07/2005

Ariovaldo

Pessoal desculpem, estou usando Delphi 7.0


Responder

Gostei + 0

26/07/2005

Ariovaldo

Sobe


Responder

Gostei + 0

26/07/2005

Massuda

Deve funcionar usando qualquer biblioteca de componentes que permita acesso à porta serial. Algumas bibliotecas freeware com fontes para comunicação serial:[list:97a5e27cb6][*:97a5e27cb6][url=http://sourceforge.net/projects/tpapro/]AsyncPro[/url]: uma das melhores bibliotecas para comunicação serial[*:97a5e27cb6][url=http://sourceforge.net/projects/comport/]ComPort[/url]: uma biblioteca freeware muito popular[*:97a5e27cb6][url=http://www.ararat.cz/synapse/]SynaSer[/url]: biblioteca de classes para comunicação serial[/list:u:97a5e27cb6]Por exemplo, usando o TApdComPort da AsyncPro (que você está usando):
// assume que o modem está ligado na COM1
ApdComPort1.ComNumber := 1;
ApdComPort1.Baud := 9600;
ApdComPort1.Parity := pNone;
ApdComPort1.DataBits := 8;
ApdComPort1.StopBits := 1;

ApdComPort1.Open := True;

// resseta o modem
ApdComPort1.OutPut := ´ATZ´^M;
// ...ou use .PutString(´ATZ´^M);

ApdComPort1.Open := False;



Responder

Gostei + 0

26/07/2005

Ariovaldo

Massuda Obrigado pela Ajuda, Preciso também enviar um comandos AT para o Modem que vai estar em um Edit que comando posso usar?

Obrigado


Responder

Gostei + 0

26/07/2005

Massuda

...enviar um comandos AT para o Modem que vai estar em um Edit...
Seria algo assim...
ApdComPort1.Open := True; 

ApdComPort1.OutPut := Edit1.Text; 
// ...ou ApdComPort1.PutString(Edit1.Text); 

ApdComPort1.Open := False;



Responder

Gostei + 0

26/07/2005

Ariovaldo

Massuda Valeu Mesmo problema resolvido.

Obrigado


Responder

Gostei + 0

26/07/2005

Ariovaldo

Massuda e se eu quiser carregar a resposta de um comando em um edit?

Ariovaldo


Responder

Gostei + 0

26/07/2005

Massuda

...se eu quiser carregar a resposta de um comando em um edit?
No evento OnTriggerAvail do TApdComPort faça algo assim:
procedure TSeuForm.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
  Porta: TApdComPort;
  S: string;
  I: Word;
begin
  Porta := CP as TApdComPort;

  S := ´´;
  for I := 1 to Count do begin
    C := Porta.GetChar;
    if not (C in [0..31]) then begin
      S := S + C;
    end;
  end;
  
  Edit1.Text := S;
end;



Responder

Gostei + 0

29/07/2005

Ariovaldo

Pessoal Baseado nas Dicas que já me deram neste Tópico cheguei neste exemplo

procedure TForm1.Button1Click(Sender: TObject);
begin
ApdComPort1.ComNumber := 1;
ApdComPort1.Baud := 9600;
ApdComPort1.Parity := pNone;
ApdComPort1.DataBits := 8;
ApdComPort1.StopBits := 1;

ApdComPort1.Open := True;

ApdComPort1.inPut := ´ATD3305****´;
End;

Conforme o exemplo ao clicar no Button1 o Modem deveria chamar o número informado no comando ATD e não chama porém no Hyper terminal ele chama

O que poderá estar errado?


Responder

Gostei + 0

29/07/2005

Massuda

ApdComPort1.[color=red:293b6e4cfd]inPut[/color:293b6e4cfd] := ´ATD3305****´;
O correto seria Output... Experimente fazer assim...
ApdComPort1.OutPut := ´ATD3305****´ + #1310;
...porque mesmo no Hyperterminal você tem que dar um Enter (equivale ao 1310) para o modem discar.


Responder

Gostei + 0

29/07/2005

Ariovaldo

Massuda desculpa o INPUT que esta lá foi eu que coloquei num momento de ´apelação´ mas na verdade esta como vc falou OUTPUT O comando ENTER sim eu não estou enviando.

Valeu


Responder

Gostei + 0

01/08/2005

Ariovaldo

Pessoal ainda não consegui solucionar o problema, estou com o seguinte bloco de Comando:

ApdComPort1.ComNumber := 2;
ApdComPort1.Baud := 57600;
ApdComPort1.Parity := pNone;
ApdComPort1.DataBits := 8;
ApdComPort1.StopBits := 1;

If ApdComPort1.Open Then
ApdComPort1.Open := False;

ApdComPort1.Open := True;

ApdComPort1.OutPut := ´ATD33058200´ + ´#1310´;

Um detalhe que não passei é o seguinte:
estou usando um Modem externo com um Chip de Celular não é um modem interno e Discado, porém o Detalhe é que no Hyper Terminal Funciona.

Abraços


Responder

Gostei + 0

01/08/2005

Massuda

ApdComPort1.OutPut := ´ATD33058200´ + [color=red:cf74f3d051]´#1310´[/color:cf74f3d051];
O 1310 não vai entre aspas... do jeito que você escreveu, está enviando literalmente ´1310´ para o modem (que não entende o que é) ao invés de enviar CR/LF. Portanto, fica assim:
ApdComPort1.OutPut := ´ATD33058200´ + 1310;



Responder

Gostei + 0

01/08/2005

Ariovaldo

Massuda Boa Tarde, puts novamente eu coloquei aquelas Aspas para ver se funcionava mas mesmo assim não funcionou.

Ariovaldo


Responder

Gostei + 0

01/08/2005

Massuda

Deveria funcionar com
ApdComPort1.OutPut := ´ATD33058200´ + #1310;
ou
ApdComPort1.OutPut := ´ATD33058200´^M;
O que exatamente está acontecendo? O outro modem não está conseguindo conectar? O outro telefone chega a chamar? Não está discando?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar