home *** CD-ROM | disk | FTP | other *** search
/ ftp.update.uu.se / ftp.update.uu.se.2014.03.zip / ftp.update.uu.se / pub / rainbow / msdos / misc2 / dialv23.lzh / USR2400.INC < prev   
Text File  |  1985-09-05  |  5KB  |  142 lines

  1.  
  2. {********* This file is an "include" file to be used with DIAL.PAS. *********}
  3.  
  4.  
  5. Function GetUSR2400Rsp( secs : Integer ) : Integer;
  6. {
  7. Use this function to get the modem's response for any given command.  Response
  8. is returned as an integer value 0 through 5.  Call with the maximum number of
  9. seconds you wish to wait.
  10. }
  11. Var
  12.   intchr  : char;
  13.   rspcod  : integer;
  14.   rspstr  : string[15];
  15.   goodrsp : array[1..7] of string[15];
  16.   j       : integer;
  17.   result  : boolean;
  18. Begin
  19.   goodrsp[1] := 'OK';
  20.   goodrsp[2] := 'CONNECT';
  21.   goodrsp[3] := 'RING';
  22.   goodrsp[4] := 'NO CARRIER';
  23.   goodrsp[5] := 'ERROR';
  24.   goodrsp[6] := 'CONNECT 1200';
  25.   goodrsp[7] := 'CONNECT 2400';
  26.   MsgLine('Waiting for modem response ...',FNormal);
  27.   rspcod := -1;                                 {-1 means timeout}
  28.   Repeat
  29.     Begin
  30.       GotoXY(70,24);
  31.       Write(secs:2);
  32.       result := ReadCommChar;                   {Get a char from the port}
  33.       If CommIn.Char <> chr(0) Then
  34.         Begin
  35.           If CommIn.Char in ['0'..'6'] Then     {Numeric response}
  36.             Begin
  37.               rspcod := ord(commin.char) - ord('0');
  38.               GetCommChar;                      {Get the carriage return}
  39.               secs := 0;                        {Say done}
  40.             End
  41.           Else If CommIn.Char = chr(13) Then    {Word response}
  42.                  Begin
  43.                    GetCommChar;                 {Get the linefeed}
  44.                    rspstr := '';                {Init the response buffer}
  45.                    GetCommChar;                 {Get first char of response}
  46.                    While commin.char in [' ','0'..'9','A'..'Z'] Do
  47.                      Begin
  48.                        rspstr := rspstr + commin.char;
  49.                        GetCommChar;
  50.                      End;
  51.                    GetCommChar;                 {Get the linefeed}
  52.                    For j := 1 to 7 Do
  53.                      Begin
  54.                        If rspstr = goodrsp[j] Then
  55.                          Begin
  56.                            rspcod := j-1;
  57.                            secs   := 0;
  58.                          End;
  59.                      End;
  60.                  End;
  61.         End;
  62.       If secs > 0 Then                   {Don't wait if already done}
  63.         Begin
  64.           Delay(1000);
  65.           secs := secs-1;
  66.           If KeyPressed Then             {User wants to abort call}
  67.             Begin
  68.               Read(KBD,intchr);
  69.               result := WriteCommChar(chr(13));
  70.             End;
  71.         End;
  72.     End;
  73.   Until secs <= 0;
  74.   GetUSR2400Rsp := rspcod;
  75. End; {Function GetUSR2400Rsp}
  76.  
  77.  
  78. Function InitUSR2400 : Boolean;
  79. {
  80. Initialize the USR2400 SmartModem.  Return false if this failed so top level can
  81. abort.
  82. }
  83. Var
  84.   Init_String     : Stringlong;
  85.   J               : Integer;
  86.   result          : boolean;
  87. Begin
  88.   MsgLine('Initializing the modem ...',FNormal);
  89.   result := DisconnectModem;
  90.   result := InitPort;
  91.   init_string := 'ATE0F1M1Q0H0TV1X1S7=45' + chr(13);
  92.   For j := 1 to length(init_string) Do
  93.     Begin
  94.       result := WriteCommChar(init_string[j]);
  95.       Delay(usr2400_delay);
  96.     End;
  97.   j := GetUSR2400Rsp(10);
  98.   WrtModemRsp(j);
  99.   If j = 0 Then Initusr2400 := True Else InitUSR2400 := False;
  100. End; {Function INITUSR2400}
  101.  
  102.  
  103. Procedure DialUSR2400;
  104. {
  105. Dial the USR2400 with the user selected string.
  106. }
  107. Const
  108.   validchar : Set of Char = [',','0'..'9'];
  109. Var
  110.   ndx                   : integer;
  111.   thenum                : String[15];
  112.   onenum                : Str133;
  113.   numlen                : integer;
  114.   result                : Boolean;
  115.   pnc                   : char;
  116. Begin
  117.   MsgLine('Dialing the phone ...',FNormal);
  118.   Numlen := length(dir_entry[cur_dir_ent].num);
  119.   thenum := dir_entry[cur_dir_ent].num;
  120.   Result := WriteCommChar('A');  Delay(usr2400_delay);
  121.   Result := WriteCommChar('T');  Delay(usr2400_delay);
  122.   Result := WriteCommChar('D');  Delay(usr2400_delay);
  123.   Result := WriteCommChar('T');  Delay(usr2400_delay);
  124.   ndx := 1;
  125.   Repeat
  126.     Begin
  127.       If (thenum[ndx] in validchar) THEN
  128.         Begin
  129.           onenum := thenum[ndx];
  130.           pnc    := thenum[ndx];
  131.           FastVideo(onenum,FBoldReverse,Char_Attrib,1,cur_dir_ent-top_dir_ent+fsl, ndx+4);
  132.           result := WriteCommChar(pnc);
  133.           delay(usr2400_delay);
  134.         End;
  135.       ndx := ndx+1;
  136.       numlen := numlen - 1;
  137.     End;
  138.   Until numlen = 0;
  139.   Result := WriteCommChar(Chr(13));
  140. End; {procedure DialUSR2400}
  141.  
  142.