home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / pcl4b42 / term.bas < prev    next >
Encoding:
BASIC Source File  |  1994-09-08  |  4.3 KB  |  192 lines

  1. '
  2. '  TERM.BAS Example Program
  3. '
  4.  
  5. '$INCLUDE: 'PCL4B.BI'
  6. '$INCLUDE: 'MODEM_IO.BI'
  7. '$INCLUDE: 'TERM_IO.BI'
  8. '$INCLUDE: 'DEFINES.BI'
  9. '$INCLUDE: 'CRC.BI'
  10. '$INCLUDE: 'XYPACKET.BI'
  11. '$INCLUDE: 'PROCESS.BI'
  12. '$INCLUDE: 'TIMING.BI'
  13.  
  14.  DECLARE SUB MyExit(BYVAL Port,Message$)
  15.  DECLARE SUB SayYesNo(BYVAL Flag)
  16.  
  17.  Buf2048$ = STRING$(2048+16,0)
  18.  'Above must be first string allocation statement. Buf2048$ should NOT be
  19.  'referenced other than in computing BufSeg below.
  20.  BufSeg = (1+SSEG(Buf2048$)) + (SADD(Buf2048$) \ 16)
  21.  
  22.  CONST FALSE = 0, TRUE = NOT FALSE
  23.  CONST ESC = 27
  24.  DIM RATES$(12)
  25.  
  26.  CLS
  27.  COLOR 7
  28.  rc = InitCRC()
  29.  
  30.  RATES$(1) = "300"
  31.  RATES$(2) = "600"
  32.  RATES$(3) = "1200"
  33.  RATES$(4) = "2400"
  34.  RATES$(5) = "4800"
  35.  RATES$(6) = "9600"
  36.  RATES$(7) = "19200"
  37.  RATES$(8) = "38400"
  38.  RATES$(9) = "57600"
  39.  RATES$(10) = "115200"
  40.  
  41.  VIEW PRINT 1 TO 24
  42.  PARMS$ = RTRIM$(COMMAND$)
  43.  I = INSTR(PARMS$, " ")
  44.  IF I < 1 THEN
  45.    PRINT "  Usage: TERM <Port> <BaudRate>"
  46.    PRINT "Example: TERM 1 9600"
  47.    END
  48.  END IF
  49.  L = LEN(PARMS$)
  50.  ARG1$ = LEFT$(PARMS$, I - 1)
  51.  ARG2$ = LTRIM$(RIGHT$(PARMS$, L - I))
  52.  BaudCode = -1
  53.  'Get COM port
  54.  Port = VAL(ARG1$) - 1
  55.  'Get baud code
  56.  FOR I = 1 TO 10
  57.    IF RATES$(I) = ARG2$ THEN
  58.       BaudCode = I - 1
  59.       EXIT FOR
  60.    END IF
  61.  NEXT I
  62.  'Verify good baud rate
  63.  IF BaudCode = -1 THEN
  64.    PRINT "Cannot recognize baud rate "; ARG2$
  65.    END
  66.  END IF
  67.  'Reset port
  68.  CALL InitProcess(Port,ARG2$)
  69.  Code = SioRxBuf(Port, BufSeg, Size2K)
  70.  IF Code < 0 THEN
  71.    PRINT "Error "; Code; " returned from SioRxBuf()"
  72.    Code = SioError(Code)
  73.    END
  74.  END IF
  75.  Code = SioReset(Port, BaudCode)
  76.  CLS
  77.  IF Code < 0 THEN
  78.    PRINT "Error "; Code; " returned from SioReset()"
  79.    Code = SioError(Code)
  80.    END
  81.  END IF
  82.  
  83.  PRINT "-- TERM 8/25/94 --"
  84.  PRINT " "
  85.  LIBVER = SioInfo(ASC("V"))
  86.  LV$ = LTRIM$(STR$(LIBVER\16)) + "." + LTRIM$(STR$(LIBVER MOD 16))
  87.  PRINT "      Library: ";LV$
  88.  PRINT "TX Interrupts: ";
  89.  CALL SayYesNo(SioInfo(ASC("I")))
  90.  PRINT " Flow Control: ";
  91.  CALL SayYesNo(RTS_CTS_CONTROL)
  92.  IF RTS_CTS_CONTROL THEN
  93.    RC = SioFlow(Port,18)
  94.  END IF
  95.  PRINT "   16550 UART: ";
  96.  CALL SayYesNo(SioFIFO(Port,LEVEL_8))
  97.  PRINT "Seg(RxBuffer): ";HEX$(BufSeg)
  98.  PRINT
  99.  'always set DTR and RTS
  100.  Code = SioDTR(Port, SET_LINE)
  101.  Code = SioRTS(Port, SET_LINE)
  102.  'wait for Modem to say its ready
  103.  '(AT_COMMAND_SET, etc. defined in DEFINES.BI)
  104.  IF AT_COMMAND_SET THEN
  105.    PRINT "  <<Waiting for Modem DSR>>"
  106.    DO
  107.      IF SioDSR(Port) THEN
  108.        EXIT DO
  109.      ELSE
  110.        AnyKey$ = INKEY$
  111.        IF (AnyKey$ <> "") OR SioBrkKey() THEN
  112.          CALL MyExit(Port,"Aborted by user")
  113.        END IF
  114.        PRINT ".";
  115.        RC = SioDelay(18)
  116.      END IF
  117.    LOOP
  118.    PRINT "  <<DSR on>>"
  119.  END IF
  120.  'waiting for modem CTS ?
  121.  IF RTS_CTS_CONTROL THEN
  122.    PRINT "  <<Waiting for Modem CTS>>"
  123.    DO
  124.      IF SioCTS(Port) THEN
  125.        EXIT DO
  126.      ELSE
  127.        AnyKey$ = INKEY$
  128.        IF (AnyKey$ <> "") OR SioBrkKey() THEN
  129.          CALL MyExit(Port,"Aborted by user")
  130.        END IF
  131.        PRINT ".";
  132.        RC = SioDelay(18)
  133.      END IF
  134.    LOOP
  135.    PRINT "  <<CTS on>>"
  136.  END IF
  137.  'initialize (Hayes compatible) modem ?
  138.  IF AT_COMMAND_SET THEN
  139.    PRINT "  <<Initializing modem>>
  140.    RC = ModemSendTo(Port,4,"AT!")
  141.    RC = ModemEcho(Port,10)
  142.    RC = ModemSendTo(Port,4,"AT E1 S7=60 S11=60 V1 X1 Q0 S0=1!")
  143.    IF ModemWaitFor(Port,5*ONE_SECOND,TRUE,"OK") THEN
  144.      'modem is ready
  145.       PRINT
  146.       PRINT "  <<MODEM READY>>"
  147.    ELSE
  148.       PRINT
  149.       PRINT "  <<WARNING: Expected OK not received>>"
  150.    END IF
  151.  END IF
  152.  
  153.  
  154.  PRINT "Entering TERMINAL loop..."
  155.  CALL ShowStatus
  156.  
  157.  DO
  158.    'Look at incoming serial
  159.    Code = SioGetc(Port, 1)
  160.    IF Code > -1 THEN
  161.      Code = SioCrtWrite(Code)
  162.    END IF
  163.    'Anything to send
  164.    AnyKey$ = INKEY$
  165.    IF AnyKey$ <> "" THEN
  166.      IF AnyKey$ = CHR$(ESC) THEN
  167.        IF Process() THEN
  168.          EXIT DO
  169.        END IF
  170.      ELSE
  171.        Code = SioPutc(Port, ASC(AnyKey$))
  172.      END IF
  173.    END IF
  174.  LOOP
  175.  PRINT "User typed ESC..."
  176.  Code = SioDone(Port)
  177.  END
  178.  
  179.  SUB MyExit(BYVAL Port,Message$)
  180.  rc = SioDone(Port)
  181.  PRINT Message$
  182.  STOP
  183.  END SUB
  184.  
  185.  SUB SayYesNo(BYVAL Flag)
  186.  IF Flag THEN
  187.    PRINT "YES"
  188.  ELSE
  189.    PRINT "NO"
  190.  END IF
  191.  END SUB
  192.