home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / bas / pcl4b42 / login.bas < prev    next >
BASIC Source File  |  1994-09-08  |  3KB  |  119 lines

  1. '
  2. '  Login.BAS Example Program
  3. '
  4.  
  5. '$INCLUDE: 'PCL4B.BI'
  6. '$INCLUDE: 'MODEM_IO.BI'
  7.  
  8.  DECLARE SUB MyExit (Port)
  9.  DECLARE FUNCTION Login (Port, Send$, Pace, Expect$, Tics)
  10.  
  11.  Buf256$ = STRING$(256+16,0)  'must be 1st string statement
  12.  BufSeg = (1+SSEG(Buf256$)) + (SADD(Buf256$) \ 16)
  13.  
  14.  CONST FALSE = 0, TRUE = NOT FALSE
  15.  CONST ESC = 27
  16.  DIM RATES$(12)
  17.  
  18.  RATES$(1) = "300"
  19.  RATES$(2) = "600"
  20.  RATES$(3) = "1200"
  21.  RATES$(4) = "2400"
  22.  RATES$(5) = "4800"
  23.  RATES$(6) = "9600"
  24.  RATES$(7) = "19200"
  25.  RATES$(8) = "38400"
  26.  RATES$(9) = "57600"
  27.  RATES$(10) = "115200"
  28.  
  29.  PARMS$ = RTRIM$(COMMAND$)
  30.  I = INSTR(PARMS$, " ")
  31.  IF I < 1 THEN
  32.    PRINT "  Usage: Login <Port> <BaudRate>"
  33.    PRINT "Example: Login 1 9600"
  34.    END
  35.  END IF
  36.  L = LEN(PARMS$)
  37.  ARG1$ = LEFT$(PARMS$, I - 1)
  38.  ARG2$ = LTRIM$(RIGHT$(PARMS$, L - I))
  39.  BaudCode = -1
  40.  'Get COM port
  41.  Port = VAL(ARG1$) - 1
  42.  'Get baud code
  43.  FOR I = 1 TO 10
  44.    IF RATES$(I) = ARG2$ THEN
  45.       BaudCode = I - 1
  46.       EXIT FOR
  47.    END IF
  48.  NEXT I
  49.  'Verify good baud rate
  50.  IF BaudCode = -1 THEN
  51.    PRINT "Cannot recognize baud rate "; ARG2$
  52.    END
  53.  END IF
  54. 'Reset port
  55.  Code = SioRxBuf(Port, BufSeg, Size256)
  56.  IF Code < 0 THEN
  57.    PRINT "Error "; Code; " returned from SioRxBuf()"
  58.    Code = SioError(Code)
  59.    END
  60.  END IF
  61.  Code = SioReset(Port, BaudCode)
  62.  CLS
  63.  IF Code < 0 THEN
  64.    PRINT "Error "; Code; " returned from SioReset()"
  65.    Code = SioError(Code)
  66.    END
  67.  END IF
  68.  
  69.  PRINT "Login 7/29/94"
  70.  PRINT " "
  71.  LIBVER = SioInfo(ASC("V"))
  72.  PRINT "Library Version: "; LIBVER \ 16; ".";
  73.  PRINT LIBVER - 16 * (LIBVER \ 16)
  74.  
  75.  Code = SioDTR(Port, SET_LINE)
  76.  Code = SioRTS(Port, SET_LINE)
  77.  
  78.  'send "AT" to modem & expect "OK" back
  79.  IF NOT Login(Port, "!AT!", 5, "OK", 180) THEN MyExit (Port)
  80.  'initialize modem & expect "OK" back
  81.  IF NOT Login(Port, "AT E1 S7=60 S11=60 V1 X1 Q0 S0=1!", 5, "OK", 90) THEN MyExit (Port)
  82.  'send "ATDT1,205,880,9748" & expect "CONNECT" back
  83.  IF NOT Login(Port, "ATDT1,205,880,9748!", 5, "CONNECT", 1092) THEN MyExit (Port)
  84.  PRINT "Entering TERMINAL loop..."
  85.  
  86.  DO
  87.    'Look at incoming serial
  88.    Code = SioGetc(Port, 1)
  89.    IF Code > -1 THEN
  90.      Code = SioCrtWrite(Code)
  91.    END IF
  92.    'Anything to send
  93.    AnyKey$ = INKEY$
  94.    IF AnyKey$ <> "" THEN Code = SioPutc(Port, ASC(AnyKey$))
  95.    IF AnyKey$ = CHR$(ESC) THEN EXIT DO
  96.  LOOP
  97.  
  98.  PRINT "User typed ESC..."
  99.  MyExit (Port)
  100.  
  101.  END
  102.  
  103.  FUNCTION Login (Port, Send$, Pace, Expect$, Tics)
  104.  rc = ModemSendTo(Port, Pace, Send$)
  105.  IF ModemWaitFor(Port, Tics, FALSE, Expect$) THEN
  106.    PRINT
  107.    Login = TRUE
  108.  ELSE
  109.    PRINT Expect$; " not received"
  110.    Login = FALSE
  111.  END IF
  112.  END FUNCTION
  113.  
  114.  SUB MyExit (Port)
  115.  rc = SioDone(Port)
  116.  END
  117.  END SUB
  118.  
  119.