home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: Programmierung / SOURCE.mdf / programm / windows / basic / lclb42 / login.bas < prev    next >
Encoding:
BASIC Source File  |  1994-08-16  |  2.6 KB  |  117 lines

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