home *** CD-ROM | disk | FTP | other *** search
- '* QBFCDEMO.BAS
- '*--------------------------------------------------------------------------
- '*
- '* Test program for the QBFCOMMS.BAS routines.
- '*
-
- ' $INCLUDE: 'QBFCOMMS.BI'
-
- DECLARE FUNCTION ConvertTime& (T$)
- DECLARE SUB Delay (DelaySecs&)
- DECLARE SUB Case1 ()
- DECLARE SUB Case2 ()
- DECLARE SUB Case3 ()
- DECLARE SUB Case4 ()
- DECLARE SUB Case5 ()
- DECLARE SUB Case6 ()
- DECLARE SUB Case7 ()
- DECLARE SUB Case8 ()
- DECLARE SUB Case9 ()
- DECLARE SUB CaseA ()
- DECLARE SUB CaseB ()
- DECLARE SUB CaseC ()
- DECLARE SUB CaseD ()
- DECLARE SUB CaseE ()
- DECLARE SUB CaseF ()
- DECLARE SUB CaseB ()
- DECLARE SUB CaseC ()
- DECLARE SUB CaseD ()
- DECLARE SUB CaseE ()
- DECLARE SUB CaseF ()
- DECLARE SUB CaseG ()
-
- '*
- '*--------------------------------------------------------------------------
- '*
- CrLf$ = CHR$(13) + CHR$(10)
-
- FossilStarted = FALSE
-
- DO
- PRINT
- PRINT "-- Demo Menu --"
- PRINT "[1] Set Port Parameters ";
- IF NOT FossilStarted THEN
- PRINT "(NOT Set Yet...)"
- ELSE
- PRINT "(Now Port"; ComPort%; "at"; BaudRate&; "Baud)"
- END IF
- PRINT
- PRINT "[2] Send Data - FossilPutchWait() [B] Get a Key - FossilInkeyWait()"
- PRINT "[3] Send Data - FossilPutch() [C] Get Cursor Pos - FossilReadCursor()"
- PRINT "[4] Send Data - FossilPutb() [D] Move Cursor - FossilLocate()"
- PRINT "[5] Receive Data - FossilGetch() [E] Print - FossilAnsiPrint()"
- PRINT "[6] Receive Data - FossilGetb() [F] Print - FossilBIOSPrint()"
- PRINT "[7] Test FossilPeek() [G] Reboot - FossilReboot()"
- PRINT "[8] Set/Reset DTR - FossilDTR()"
- PRINT "[9] Info - FossilInfo()"
- PRINT "[A] Get a Key - FossilInkey()"
- PRINT
- PRINT "[Q] Quit to DOS"
- PRINT
- PRINT "Select: ";
-
- DO
- A$ = INKEY$
- A$ = UCASE$(A$)
- LOOP WHILE A$ = "" OR INSTR("123456789ABCDEFGQ", A$) = 0
- PRINT A$
- PRINT
-
- IF VAL(A$) > 1 AND VAL(A$) < 10 AND NOT FossilStarted THEN
- PRINT "Need to Set the Port Parameters First..."
- ELSE
- SELECT CASE A$
- CASE "1"
- CALL Case1
- CASE "2"
- CALL Case2
- CASE "3"
- CALL Case3
- CASE "4"
- CALL Case4
- CASE "5"
- CALL Case5
- CASE "6"
- CALL Case6
- CASE "7"
- CALL Case7
- CASE "8"
- CALL Case8
- CASE "9"
- CALL Case9
- CASE "A"
- CALL CaseA
- CASE "B"
- CALL CaseB
- CASE "C"
- CALL CaseC
- CASE "D"
- CALL CaseD
- CASE "E"
- CALL CaseE
- CASE "F"
- CALL CaseF
- CASE "G"
- CALL CaseG
- END SELECT
- END IF
-
- LOOP WHILE A$ <> "Q"
-
- X = FossilDeactivate(ComPort%)
- CALL Delay(1)
- END
-
- '* Case1()
- '*---------------------------------------------------------------------------
- '*
- '*
- SUB Case1
- SHARED ComPort%, BaudRate&, FossilStarted
- PRINT "Port Number (0 for COM1): ";
- LINE INPUT B$
- ComPort% = VAL(B$)
- PRINT "Baud Rate (300,1200,...19200,38400): ";
- LINE INPUT B$
- BaudRate& = VAL(B$)
- PRINT
- X = FossilDeactivate(ComPort%)
- X = FossilInit(ComPort%)
- IF X <> 0 THEN
- PRINT "Bad Port Parameters or No FOSSIL Loaded..."
- ELSE
- X = FossilSetBaud(ComPort%, BaudRate&)
- X = FossilFlowControl(ComPort%, NoFlow)
- FossilStarted = TRUE
- PRINT "FOSSIL Initialized..."
- END IF
- END SUB
-
- '* Case2()
- '*---------------------------------------------------------------------------
- '*
- '*
- SUB Case2
- SHARED ComPort%, CrLf$
- PRINT "Sending Data... Press ESC to Abort";
- DO
- A$ = "Sending Data with FossilPutchWait()" + CrLf$
- FOR I = 1 TO 20
- FOR J = 1 TO LEN(A$)
- B$ = MID$(A$, J, 1)
- X = FossilPutchWait(ComPort%, B$)
- NEXT
- NEXT
- LOOP WHILE INKEY$ <> CHR$(27)
- PRINT
- END SUB
-
- '* Case3()
- '*---------------------------------------------------------------------------
- '*
- '*
- SUB Case3
- SHARED ComPort%, CrLf$
- PRINT "Sending Data... Press ESC to Abort";
- DO
- A$ = "Sending Data with FossilPutch()" + CrLf$
- FOR I = 1 TO 20
- FOR J = 1 TO LEN(A$)
- B$ = MID$(A$, J, 1)
- DO
- X = FossilStatus(ComPort%)
- LOOP WHILE (X AND THRE) <> THRE
- X = FossilPutch(ComPort%, B$)
- NEXT
- NEXT
- LOOP WHILE INKEY$ <> CHR$(27)
- PRINT
- END SUB
-
- '* Case4()
- '*---------------------------------------------------------------------------
- '*
- '*
- SUB Case4
- SHARED ComPort%, CrLf$
- PRINT "Sending Data... Press ESC to Abort";
- DO
- A$ = "Sending Data with FossilPutb()" + CrLf$
- FOR I = 1 TO 20
- CharsSent = 0
- CharsToSend = LEN(A$)
- DO
- X = FossilPutb(ComPort%, MID$(A$, CharsSent + 1))
- CharsSent = CharsSent + X
- LOOP WHILE CharsSent < CharsToSend
- NEXT
- LOOP WHILE INKEY$ <> CHR$(27)
- PRINT
- END SUB
-
- '* Case5()
- '*---------------------------------------------------------------------------
- '*
- '*
- SUB Case5
- SHARED ComPort%
- PRINT "Receiving Data... Press ESC to Abort"
- DO
- X = FossilStatus(ComPort%)
- IF (X AND RDA) = RDA THEN
- A$ = FossilGetch$(ComPort%)
- PRINT A$;
- END IF
- LOOP WHILE INKEY$ <> CHR$(27)
- PRINT
- END SUB
-
- '* Case6()
- '*---------------------------------------------------------------------------
- '*
- '*
- SUB Case6
- SHARED ComPort%
- PRINT "Receiving Data... Press ESC to Abort"
- DO
- A$ = SPACE$(32)
- X = FossilGetb(ComPort%, A$, 32)
- IF X > 0 THEN
- A$ = LEFT$(A$, X)
- PRINT A$;
- END IF
- LOOP WHILE INKEY$ <> CHR$(27)
- PRINT
- END SUB
-
- '* Case7()
- '*---------------------------------------------------------------------------
- '*
- '*
- SUB Case7
- SHARED ComPort%
- PRINT "Waiting for a Character... (Press ESC to Abort)"
- DO
- A$ = FossilPeek(ComPort%)
- IF A$ <> "" THEN
- PRINT "There's a '"; A$; "' in the Buffer. Use FossilGetch() to Prove It."
- EXIT DO
- END IF
- LOOP WHILE INKEY$ <> CHR$(27)
- END SUB
-
- '* Case8()
- '*---------------------------------------------------------------------------
- '*
- '*
- SUB Case8
- SHARED ComPort%
- PRINT "S)et or R)eset DTR: ";
- DO
- A$ = INKEY$
- A$ = UCASE$(A$)
- IF A$ = "S" THEN
- X = FossilDTR(ComPort%, 1)
- EXIT DO
- ELSEIF A$ = "R" THEN
- X = FossilDTR(ComPort%, 1)
- EXIT DO
- END IF
- LOOP WHILE A$ <> "S" AND A$ <> "R"
- PRINT A$
- END SUB
-
- '* Case9()
- '*---------------------------------------------------------------------------
- '*
- '*
- SUB Case9
-
- SHARED ComPort%
-
- X = FossilInfo%(ComPort%, Ver%, Rev%, ID$, ISZ%, IFR%, OSZ%, OFR%, SW%, SH%, Baud&)
-
- PRINT "FOSSIL ID : "; ID$
- PRINT "FOSSIL Rev/Ver:"; Rev%; "("; Ver%; ")"
- PRINT "Speed :"; Baud&; "baud"
- PRINT "Input Buffer : Size"; ISZ%; "bytes Free"; IFR%; "bytes"
- PRINT "Output Buffer : Size"; OSZ%; "bytes Free"; OFR%; "bytes"
- PRINT "Screen :"; SW%; "X"; SH%
- PRINT
- PRINT "Press a Key..."
-
- DO
- A$ = INKEY$
- LOOP WHILE A$ = ""
-
- END SUB
-
- '* CaseA()
- '*---------------------------------------------------------------------------
- '*
- '*
- SUB CaseA
- PRINT "Press a Key...";
- DO
- X = FossilInkey
- LOOP WHILE X = -1
- A$ = INKEY$
- PRINT
- PRINT "The Key You Pressed Has a Scan Code of"; X
- END SUB
-
- '* CaseB()
- '*---------------------------------------------------------------------------
- '*
- '*
- SUB CaseB
- PRINT "Press a Key...";
- X = FossilInkeyWait
- PRINT
- PRINT "The Key You Pressed Has a Scan Code of"; X
- END SUB
-
- '* CaseC()
- '*---------------------------------------------------------------------------
- '*
- '*
- SUB CaseC
- X = FossilReadCursor(Row%, Column%)
- PRINT "The Cursor is at Row"; Row%; " Column"; Column%; "..."
- END SUB
-
- '* CaseD()
- '*---------------------------------------------------------------------------
- '*
- '*
- SUB CaseD
- PRINT "Move to Row: ";
- LINE INPUT A$
- Row% = VAL(A$)
- PRINT "Move to Column: ";
- LINE INPUT A$
- Column% = VAL(A$)
- IF Row% < 0 OR Column% < 0 THEN
- EXIT SUB
- END IF
- X = FossilLocate(Row%, Column%)
- X = FossilBIOSPrint("<--*** The Cursor Moved to Here. *** Press a Key... ")
- DO
- A$ = INKEY$
- LOOP WHILE A$ = ""
- END SUB
-
- '* CaseE()
- '*---------------------------------------------------------------------------
- '*
- '*
- SUB CaseE
- X = FossilAnsiPrint("This is ANSI????")
- PRINT
- END SUB
-
- '* CaseF()
- '*---------------------------------------------------------------------------
- '*
- '*
- SUB CaseF
- X = FossilBIOSPrint("Print Using the BIOS? Why???")
- PRINT
- END SUB
-
- '* CaseG()
- '*---------------------------------------------------------------------------
- '*
- '*
- SUB CaseG
- PRINT "Do a W)arm Boot, C)old Boot or N)either? ";
- DO
- A$ = INKEY$
- A$ = UCASE$(A$)
- IF A$ = "W" THEN
- X = FossilReboot(1)
- ELSEIF A$ = "C" THEN
- X = FossilReboot(0)
- ELSEIF A$ = "N" THEN
- EXIT DO
- END IF
- LOOP WHILE 1
- PRINT A$
- END SUB
-
- '* ConvertTime()
- '*---------------------------------------------------------------------------
- '*
- '* Routine to convert from QB's TIME$ function to an absolute # of seconds
- '* within a day.
- '*
- FUNCTION ConvertTime& (T$)
- Hours = VAL(T$)
- Mins = VAL(MID$(T$, 4))
- Secs = VAL(MID$(T$, 7))
- ConvertTime& = Hours * 3600 + Mins * 60 + Secs
- END FUNCTION
-
- '* Delay()
- '*---------------------------------------------------------------------------
- '*
- '* Routine to delay a certain number of seconds.
- '*
- SUB Delay (DelaySecs&)
- StartSecs& = ConvertTime(TIME$)
- DO
- EndSecs& = ConvertTime(TIME$)
- LOOP WHILE EndSecs& >= StartSecs& AND EndSecs& < StartSecs& + DelaySecs&
- END SUB
-
-