Como saber se o modem já discou o número desejado?

22/05/2003

1

Fiz um discador e funciona muito bem. O unico inconveniente é quando se efetua a chamada tenho que escutar os tons do modem para saber quando o modem discou o número e começa a chamar ai teclar em um botão para liberar o telefone.
Gostaria de saber quando o modem termina a discagem ou quando começa a chamar para liberar o telefone? :lol:


Responder

Posts

27/09/2003

Bferreira

Cara eu estou com o mesmo problema que vc, andei pesquisando, e encontrei esse código ai em baixo. Ainda não tive como testá-lo, mas me parece que as funções retornam as mensagens quando está ocupado, ou quando o telefône foi atendido.
Caso consiga mais algumas informações a respeito desse assunto por favor me envie. Obrigado




3.1- Inicie um novo projeto, adicione um Botão - Tbutton, um Edit - TEdit, um Combobox - TCombobox, um Memo - TMemo e dois RadioButtons - TRadioButtons, como mostrado na figura1 ao seu formulário.

3.2- Na propriedade Items do Combobox adicione os nomes das portas do seu computador. (COM1;COM2;COM3;COM4).

3.3- Logo após a declaração do seu formulário declare as seguintes variáveis globais:
var
Form1: TForm1;
hCommFile: THandle;
Status: LongBool;
NumberWritten: DWORD;
Buf : array [0..1023] of Byte;
s : string;

3.4- No evento OnClick do botão adicione o seguinte código:
procedure TForm1.Button1Click(Sender: TObject);
begin
if (combobox1.text <> ´ ´) and (edit1.text<>´ ´) then
begin
s:=Combobox1.text; //Abre a porta de comunicação
hCommFile:= CreateFile( PChar(s), GENERIC_WRITE,
0, //not shared
nil, //no security
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0 );

if hCommFile = INVALID_HANDLE_VALUE then //Verifica a abertura da porta
begin
memo1.lines.clear;
memo1.lines.add(´Não foi possível abrir a porta selecionada.´);
memo1.lines.add(´Discagem não efetuada´);
CloseHandle(hCommFile);
end
else
begin
memo1.lines.clear;
memo1.lines.add(´Discando...´);
if radiobutton1.checked then //Cria a string de comando
s:=´ATDT´
else
s:=´ATDP´;
s:=s + edit1.text + #1310;
memo1.lines.add(s);
NumberWritten:=0; //Envia a String de Comando
Status:=WriteFile( hCommFile,PChar(s)[0],
Length(s),
NumberWritten,
nil);
memo1.lines.add(´Aguardando Atendimento ...´);
MessageDlg(´Retire o telefone do gancho e clique OK para desligar o modem´,mtInformation,[mbok], 0);
WriteFile(hCommFile,´ATH´,5,NumberWritten,nil); //Desconecta a ligação (Hangup)
CloseHandle(hCommFile); //Fecha a porta de Comunicação
memo1.lines.add(´Modem Desconectado.´1310);
end;
end;
end;


Responder