Discador

Delphi

27/03/2004

Olá, estou precisando de ajuda pra fazer um discador no delphi !! :?:


Gvsfox

Gvsfox

Curtidas 0

Respostas

Otto

Otto

27/03/2004

vou colar aqui pra vc a rotina que eu usei pra fazer o discador de ramais daqui da empresa.. ai vc edita, qualquer coisa me manda um email.

var
 hCommFile     : THandle;
  Status        : LongBool;
  NumberWritten : DWORD;
  Buf           : array [0..1023] of Byte;
  s             : string;


no oncliquew do botao la

begin
  s := cbPorta.text;
  hCommFile:= CreateFile( PChar(s), GENERIC_WRITE,
                                0,
                                nil,
                                OPEN_EXISTING,
                                FILE_ATTRIBUTE_NORMAL,
                                0 );

  if hCommFile = INVALID_HANDLE_VALUE then

   begin
    memo_msg.lines.clear;
    memo_msg.lines.add(´Não foi possível abrir a porta selecionada.´);
    memo_msg.lines.add(´Discagem não efetuada.´);
    CloseHandle(hCommFile);
   end

else

   begin
    memo_msg.lines.clear;
    memo_msg.lines.add(´Discando...´);

    if radio_tom.checked then//Cria a string de comando
    s := ´ATDT´
    else
    s := ´ATDP´;

    s := s + edRamal.text + #1310;
    memo_msg.lines.add(s);
    NumberWritten := 0;//Envia a String de Comando
    Status := WriteFile( hCommFile,PChar(s)[0],
                         Length(s),
                         NumberWritten,
                         nil);
    memo_msg.lines.add(´Aguardando Atendimento ...´);
    Application.MessageBox(´Retire o telefone do gancho e clique OK para desligar o modem.´,´Atenção´
                          ,+MB_Ok);
    WriteFile(hCommFile,´ATH´, 5, NumberWritten,nil);//Desconecta a ligação (Hangup)
    CloseHandle(hCommFile);                      //Fecha a porta de Comunicação
    memo_msg.lines.add(´Modem Desconectado.´#1310);
   end;  // Begin
 end;   // Begin
end;   // Procedure

{  Final do processo de discagem.  }


olha a rotina e vc vai perceber que estou puxando valor de um edit um bombo, etc...


GOSTEI 0
Wbb

Wbb

27/03/2004

Tem essa outra também:

  Procedure TForm1.Disca;
  begin
    //Abre a porta de comunicação
    s:=´Com3´;
    hCommFile :=CreateFile(PChar(s), GENERIC_WRITE,0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0);
    // Verifica a abertura da porta
    if hCommFile = INVALID_HANDLE_VALUE then CloseHandle(hCommFile)
    else
    begin
      s:=´ATDT´;
      s := s + Edit1.Text + #1310;
      NumberWritten:=0;
      Status:= WriteFile( hCommFile,PChar(s)[0],Length(s), NumberWritten, nil);
    end;
  end;


  Procedure TForm1.Desliga;
    //Procedure para encerrar a discagem
  begin
    WriteFile(hCommFile,´ATH´,5,NumberWritten,nil);
    CloseHandle(hCommFile);
  end;


T+
wbb

OBS.: Retirado das dicas do boletim Active News N 125 - Dicas de Programação Delphi.


GOSTEI 0
Wbb

Wbb

27/03/2004

Esqueci de umas coisas :oops: ... O código completo é:

 type
    TForm1 = class(TForm)
  Procedure Disca;
  Procedure Desliga;
  private
  { Private declarations }
  public
  { Public declarations }
  end;

  var
    Form1: TForm1;
    hCommFile: THandle;
    Status: LongBool;
    NumberWritten: DWORD;
    s : string;

  implementation

  {$R *.DFM}

  Procedure TForm1.Disca;
  begin
    //Abre a porta de comunicação
    s:=´Com3´;
    hCommFile :=CreateFile(PChar(s), GENERIC_WRITE,0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0);
    // Verifica a abertura da porta
    if hCommFile = INVALID_HANDLE_VALUE then CloseHandle(hCommFile)
    else
    begin
      s:=´ATDT´;
      s := s + ´nº a ser discado´ + #1310;
      NumberWritten:=0;
      Status:= WriteFile( hCommFile,PChar(s)[0],Length(s), NumberWritten, nil);
    end;
  end;

  Procedure TForm1.Desliga; 
    //Procedure para encerrar a discagem
  begin
    WriteFile(hCommFile,´ATH´,5,NumberWritten,nil);
    CloseHandle(hCommFile);
  end;
  end.


wbb


GOSTEI 0
Rodrigo Lima

Rodrigo Lima

27/03/2004

Olá amigo, você sabe o código pra saber se a chamada foi atendida ou se deu ocupada?

Valeu


GOSTEI 0
POSTAR