home *** CD-ROM | disk | FTP | other *** search
- *.............................................................................
- * Program Name: FOXCOM03 Copyright: Magna Carta Software, Inc.
- * Date Created: 06-18-91 Language: FoxPro 2.0
- *.............................................................................
- * Description: FOXCOM02 plus...
- * a) user control of data format (data bits, parity, stop bits)
- *.............................................................................
- CLEAR ALL
- SET TALK OFF
- SET ESCAPE OFF
-
- * Load the right library
- foxid = VERS()
- IF "2.0" $ foxid
- SET LIBR TO ctf && Identified FoxPro 2.0
- ELSE
- IF "2.5" $ VERS()
- IF "Windows" $ foxid && Identified FoxPro 2.5 for Windows
- SET LIBR TO ctfw
- ELSE
- SET LIBR TO ctf25 && Identified FoxPro 2.5 for DOS
- ENDIF
- ENDIF
- ENDIF
-
-
- SET COLOR OF SCHEME 17 TO SCHEME 1 && save default color scheme
- SET COLOR OF SCHEME 18 TO SCHEME 2
-
- DO ctfhdr
- version = 3
- portid = 0
-
- * Define Pull-Down Bar and Pads
- DEFINE MENU main_menu IN SCREEN COLOR SCHEME 3
-
- DEFINE PAD p_ct_quit OF main_menu PROMPT "\<Quit" AT 00, 00
- ON SELECTION PAD p_ct_quit OF main_menu =ct_quit(portid)
-
- DEFINE PAD p_ct_online OF main_menu PROMPT "\<Go Online" AT 00, 06
- ON SELECTION PAD p_ct_online OF main_menu =ct_online(portid)
-
- DEFINE PAD p_ct_speed OF main_menu PROMPT "\<Speed" AT 00, 17
- ON SELECTION PAD p_ct_speed OF main_menu =do_speed(portid, 17)
-
- DEFINE PAD p_ct_dataform OF main_menu PROMPT "\<Data Format" AT 00, 24
- ON SELECTION PAD p_ct_dataform OF main_menu =ct_dataformat(portid, 24)
-
- * Define Windows
- DEFINE WINDOW w_term FROM 01, 00 TO SROWS()-4, SCOLS()-1;
- IN SCREEN;
- TITLE " FoxCom Terminal " DOUBLE COLOR SCHEME 7
-
- DEFINE WINDOW w_status FROM SROWS()-3, 00 TO SROWS()-1, 79;
- IN SCREEN;
- TITLE " FoxCom Status " DOUBLE COLOR SCHEME 17
-
-
- ACTIVATE WINDOW w_status
- ACTIVATE WINDOW w_term
-
- @ 00,00 SAY "CommTools Terminal Version " + ALLTRIM(STR(version)) + ;
- ": Press ESC to Exit"
- ret = u8250_init(portid, COM1, 2400, 8, PARITY_NONE, 1) && initialize COM1
- IF ret < 0
- ? ret
- =INKEY(0)
- CANCEL
- ENDIF
- ret =install_ipr(portid, RECEIVE, NULL, 2048) && initialize receive IPR
- IF ret < 0
- ? ret-1
- =INKEY(0)
- CANCEL
- ENDIF
- ret =install_isr(portid, 4, NULL) && IRQ4 (use 3 for COM2)
- IF ret < 0
- ? ret-2
- =INKEY(0)
- CANCEL
- ENDIF
-
-
- ACTIVATE MENU main_menu
-
-
- FUNCTION ct_online
- PARAMETERS portid
-
- ACTIVATE WINDOW w_term
- =c_term(portid) && switch to dumb terminal mode
- RETURN (0)
-
-
-
- *
- * C_TERM -- This is a dumb terminal loop in FoxPro.
- * Alternately poll the serial input buffer and the keyboard for data.
- *
- FUNCTION c_term
- PARAMETERS portid
- PRIVATE c
-
- ?
- DO WHILE .T.
- * CHECK SERIAL PORT FOR BYTE *
- c = c_inchar(portid) && check the serial port for a byte
- IF c <> CT_EOF && if a valid character display it
- ?? CHR(c)
- ENDIF
- * CHECK KEYBOARD FOR A KEY PRESS *
- c = INKEY() && check keyboard for a key
- DO CASE && evaluate the received key
- CASE c == ESC && ESC was pressed
- RETURN (0)
- CASE c <> 0
- =c_putc(portid, c)
- ENDCASE
- ENDDO && do while .t.
- RETURN (0)
-
-
-
- FUNCTION ct_quit
- PARAMETERS portid
- =deinit_port(portid) && deinitialize the port
- DEACTIVATE WINDOW w_term
- DEACTIVATE WINDOW w_status
- DEACTIVATE MENU main_menu
- CLEAR ALL
- @ SROWS()-1, 00 SAY "End of CommTools Terminal Version " + ALLTRIM(STR(version))
- @ SROWS()-1, 00 SAY PADC("Thank You for Using CommTools", WCOLS())
- EXIT
- RETURN (0)
-
-
-
- *
- * CT_DATAFORMAT(expN portid, expN dataparm)
- * Set the data format
- *
- FUNCTION ct_dataformat
- PARAMETER portid, col
- PRIVATE lrow
-
- lrow = WROWS() - 1
- @ lrow, 0 CLEAR TO lrow, WCOLS()-2
-
- DEFINE POPUP pop_dataform FROM 01, col;
- IN SCREEN;
- SHADOW
- DEFINE BAR 1 OF pop_dataform PROMPT " Data "
- DEFINE BAR 2 OF pop_dataform PROMPT " Parity "
- DEFINE BAR 3 OF pop_dataform PROMPT " Stop "
-
- ON SELECTION POPUP pop_dataform =_ct_dataformat(portid, BAR(), col+10)
- ACTIVATE POPUP pop_dataform
- RELEASE pop_dataform
- RETURN (0)
-
-
-
- FUNCTION _ct_dataformat
- PARAMETERS portid, dataform, col
- PRIVATE lrow, dbits, pbits, sbits, speed
- DIMENSION a_par[8]
- a_par[1] = "NONE"
- a_par[2] = "ODD"
- a_par[4] = "EVEN"
- a_par[6] = "MARK"
- a_par[8] = "SPACE"
-
- ACTIVATE WINDOW w_status
- lrow = WROWS() - 1
- dbits = get_parm(portid, DATABITS)
- sbits = get_parm(portid, STOPBITS)
- pbits = get_parm(portid, PARITY)
- speed = get_speed(portid)
- @ lrow, 35 SAY "Data: " + ALLTRIM(STR(dbits))
- @ lrow, 43 SAY "Stop: " + ALLTRIM(STR(sbits))
- @ lrow, 51 SAY "Parity: " + a_par[pbits+1]
- @ lrow, 65 SAY "Speed: " + ALLTRIM(STR(speed))
-
- DO CASE
- CASE dataform = 1
- =do_databits(portid, col)
- CASE dataform = 2
- =do_parity(portid, col)
- CASE dataform = 3
- =do_stopbits(portid, col)
- ENDCASE
- RETURN (0)
-
-
-
- *
- * DO_DATABITS(expN portid, expN col)
- * Show a menu that allows the user to set the number of data bits.
- * Called from data_format_menu()
- *
- FUNCTION do_databits
- PARAMETERS portid, col
-
- DEFINE POPUP pop_databits FROM 01, col;
- IN SCREEN;
- SHADOW
- DEFINE BAR 1 OF pop_databits PROMPT " 5 "
- DEFINE BAR 2 OF pop_databits PROMPT " 6 "
- DEFINE BAR 3 OF pop_databits PROMPT " 7 "
- DEFINE BAR 4 OF pop_databits PROMPT " 8 "
-
- ON SELECTION POPUP pop_databits =_do_databits(portid, VAL(PROMPT()))
- ACTIVATE POPUP pop_databits
- RELEASE pop_databits
- RETURN (0)
-
-
-
- FUNCTION _do_databits
- PARAMETERS portid, dbits
- PRIVATE ret
-
- ret = set_parm(portid, DATABITS, dbits)
- IF ret >= 0
- =status_msg(0, "Databits: " + ALLTRIM(STR(dbits)))
- ELSE
- =status_msg(0, "Databits: ERROR")
- ENDIF
- RETURN (ret)
-
-
-
- *
- * DO_STOPBITS(expN portid, expN col)
- * Show a menu that allows the user to set the number of stopbits
- * Called from data_format_menu()
- *
- FUNCTION do_stopbits
- PARAMETERS portid, col
- PRIVATE sbits
-
- DEFINE POPUP pop_stopbits FROM 01, col;
- IN SCREEN;
- SHADOW
- DEFINE BAR 1 OF pop_stopbits PROMPT " 1 "
- DEFINE BAR 2 OF pop_stopbits PROMPT " 2 "
-
- ON SELECTION POPUP pop_stopbits =_do_stopbits(portid, VAL(PROMPT()))
- ACTIVATE POPUP pop_stopbits
- RELEASE pop_stopbits
- RETURN (0)
-
-
-
- FUNCTION _do_stopbits
- PARAMETERS portid, sbits
- PRIVATE ret
-
- ret = set_parm(portid, STOPBITS, sbits)
- IF ret >= 0
- =status_msg(0, "Stopbits: " + ALLTRIM(STR(sbits)))
- ELSE
- =status_msg(0, "Stopbits: ERROR")
- ENDIF
- RETURN (ret)
-
-
-
- *
- * DO_PARITY(expN portid, expN col)
- * Show a menu that allows the user to set parity.
- * Called from data_format_menu()
- *
- FUNCTION do_parity
- PARAMETERS portid, col
- PRIVATE pbits
-
- DEFINE POPUP pop_parity FROM 01, col;
- IN SCREEN;
- SHADOW
- DEFINE BAR 1 OF pop_parity PROMPT "NONE"
- DEFINE BAR 2 OF pop_parity PROMPT "ODD"
- DEFINE BAR 3 OF pop_parity PROMPT "EVEN"
- DEFINE BAR 4 OF pop_parity PROMPT "MARK"
- DEFINE BAR 5 OF pop_parity PROMPT "SPACE"
-
- ON SELECTION POPUP pop_parity =_do_parity(portid, PROMPT())
- ACTIVATE POPUP pop_parity
- RELEASE pop_parity
- RETURN (0)
-
-
-
- FUNCTION _do_parity
- PARAMETERS portid, nChoice
- PRIVATE ret
-
- nChoice = ALLTRIM(nChoice)
- DO CASE
- CASE nChoice = 'NONE'
- ret = PARITY_NONE
- CASE nChoice = 'ODD'
- ret = PARITY_ODD
- CASE nChoice = 'EVEN'
- ret = PARITY_EVEN
- CASE nChoice = 'MARK'
- ret = PARITY_MARK
- CASE nChoice = 'SPACE'
- ret = PARITY_SPACE
- OTHERWISE
- ret = -1
- ENDCASE
- IF ret >= 0
- ret = set_parm(portid, PARITY, ret)
- IF ret >= 0
- =status_msg(0, "Parity: " + nChoice)
- ENDIF
- ENDIF
- IF ret < 0
- =status_msg(0, "Parity: ERROR")
- ENDIF
- RETURN (ret)
-
-
-
- *
- * DO_SPEED(expN portid)
- * This menu allows the user to select the data transfer rate.
- *
- PROCEDURE do_speed
- PARAMETERS portid, col
- PRIVATE speed
-
- DEFINE POPUP pop_speed FROM 01, col;
- IN SCREEN;
- SHADOW
- DEFINE BAR 1 OF pop_speed PROMPT "50"
- DEFINE BAR 2 OF pop_speed PROMPT "75"
- DEFINE BAR 3 OF pop_speed PROMPT "110"
- DEFINE BAR 4 OF pop_speed PROMPT "150"
- DEFINE BAR 5 OF pop_speed PROMPT "300"
- DEFINE BAR 6 OF pop_speed PROMPT "600"
- DEFINE BAR 7 OF pop_speed PROMPT "1200"
- DEFINE BAR 8 OF pop_speed PROMPT "2400"
- DEFINE BAR 9 OF pop_speed PROMPT "4800"
- DEFINE BAR 10 OF pop_speed PROMPT "9600"
- DEFINE BAR 11 OF pop_speed PROMPT "19200"
- DEFINE BAR 12 OF pop_speed PROMPT "38400"
- DEFINE BAR 13 OF pop_speed PROMPT "57600"
- DEFINE BAR 14 OF pop_speed PROMPT "115200"
-
- ON SELECTION POPUP pop_speed =_do_speed(portid, VAL(PROMPT()))
- ACTIVATE POPUP pop_speed
- RELEASE pop_speed
- RETURN (0)
-
-
-
- FUNCTION _do_speed
- PARAMETERS portid, speed
- PRIVATE ret
-
- ret = set_speed(portid, speed)
- IF ret >= 0
- =status_msg(0, "Speed: " + ALLTRIM(STR(speed)) + " bits-per-second")
- ELSE
- =status_msg(0, "Speed: ERROR")
- ENDIF
- RETURN (ret)
-
-
-
- FUNCTION clear_status_line
- PARAMETERS rstart, rend
- PRIVATE row
- ACTIVATE WINDOW w_status
- row = WROWS() - 1
- @row, rstart CLEAR TO row, rend
- RETURN
-
-
-
- FUNCTION status_msg
- PARAMETERS col, msg
- =clear_status_line(col, 78)
- @WROWS()-1, col SAY msg
- RETURN (0)
-