{--------------------------------------------------------}
{          Telemark - realiza discagem
{--------------------------------------------------------}

unit tmTelef;
interface
uses dvcrt, dvwin, dvComm, tmVars, tmMsg;

function discaTelefone (telefone: string): boolean;

implementation

{--------------------------------------------------------}
{                   edita um registro
{--------------------------------------------------------}

function discaTelefone (telefone: string): boolean;
var
    i: integer;
    c: char;
    s: string;
    porta, erro: integer;

const disca = 'ATDT';

begin
    i := pos (' ', telefone);
    if i <> 0 then
        delete (telefone, i, length (telefone)-i+1);

    i := length (telefone);
    while i > 0 do
        begin
            if not (telefone[i] in ['0'..'9', ',']) then
                delete (telefone, i, 1);
            i := i - 1;
        end;

    discaTelefone := false;

    porta := 0;
    s := sintAmbiente ('TELEMARK', 'PORTAMODEM');
    if s <> '' then
        begin
            val (s, porta, erro);
            if erro <> 0 then porta := 0;
        end;

    if porta = 0 then
         begin
             msgBaixo ('TMPORTA');     {'Qual a porta do faxmodem (de 1 a 4) ? '}
             c := readkey;
             if c in ['1', '2', '3', '4'] then
                 porta := ord (c) - ord ('0')
             else
                 begin
                     while keypressed do readkey;
                     msgBaixo ('TMDESIST');   {'Desistiu'}
                 end;
         end;

    if inicLink (porta, 2400, 8, 1, 0) <> 0 then
        begin
            finalLink;
            msgBaixo ('TMERRFAX');       {'Erro ao acionar o faxmodem'}
            exit;
        end;

    s := sintAmbiente ('TELEMARK', 'DISCAGEM');
    if s = '' then
        s := 'ATS6=5DT' + telefone + #$0d
    else
        s := s + telefone + #$0d;

    for i := 1 to length (s) do
        begin
            escLink (s[i]);
            repeat delay (100) until chegouLink or keypressed;
        end;

    msgBaixo ('TMATEND');     {'Atenda e aperte uma tecla'}
    repeat
        readkey;
        while chegouLink do lelink (c);
    until not keypressed;

    esclink (#$0d);
    delay (1000);
    while chegouLink do lelink (c);
    finalLink;

    if c <> #$1b then discaTelefone := true;
end;

end.
