' ============================================================================== ' ' File...... cmm.bs2 ' Purpose... To monitor the CMM status. ' Author.... Wm. W Hubler jr ' E-mail.... whubler@as.arizona.edu ' Started... 04.05.05 ' Updated... ' ' {$STAMP BS2} ' {$PBASIC 2.5} ' ' ============================================================================== ' ------------------------------------------------------------------------------ ' Program Description ' ------------------------------------------------------------------------------ ' This program sits on the com port waiting for a command, and act in turn. ' ------------------------------------------------------------------------------ ' Revision History ' ------------------------------------------------------------------------------ ' v0.1 - initial beta ' v0.2 - updated by Jon Williams ' ------------------------------------------------------------------------------ ' I/O Definitions ' ------------------------------------------------------------------------------ ScanLight PIN 0 ' LED connected to Pin 0 FinishedLight PIN 1 ' LED connected to Pin 1 ErrorLight PIN 2 ' LED connected to Pin 2 RxD CON 14 ' serial input - to INEX RxD TxD CON 15 ' serial output - to INEX TxD ' ------------------------------------------------------------------------------ ' Constants ' ------------------------------------------------------------------------------ #SELECT $STAMP #CASE BS2, BS2E, BS2PE T1200 CON 813 T2400 CON 396 T4800 CON 188 T9600 CON 84 T19K2 CON 32 TMidi CON 12 T38K4 CON 6 ToAdj CON $100 ' time-out adjust (for 1 ms) #CASE BS2SX, BS2P T1200 CON 2063 T2400 CON 1021 T4800 CON 500 T9600 CON 240 T19K2 CON 110 TMidi CON 60 T38K4 CON 45 ToAdj CON $280 ' time-out adjust (for 0.4 ms) #ENDSELECT SevenBit CON $2000 Inverted CON $4000 Open CON $8000 Baud CON T9600 TmOut CON 500 * ToAdj / $100 ' 500 ms DelayOn CON 1000 ' on-time time in milliseconds DelayOff CON 250 ' off-time in milliseconds DelayTime CON 200 IsOn CON 1 IsOff CON 0 ' ------------------------------------------------------------------------------ ' Variables ' ------------------------------------------------------------------------------ cmd VAR Byte ' command from PC/terminal ' ------------------------------------------------------------------------------ ' EEPROM Data ' ------------------------------------------------------------------------------ ' ------------------------------------------------------------------------------ ' Initialization ' ------------------------------------------------------------------------------ Initialize: DIRS = %111 ' LED pins are outputs GOSUB Show_Menu ' ------------------------------------------------------------------------------ ' Program Code ' ------------------------------------------------------------------------------ Main: cmd = $FF SERIN RxD, Baud, TmOut, Toggle_Leds, [cmd] ' wait for command LOOKDOWN cmd, ["yYwWrRcC"], cmd IF (cmd > 7) THEN GOSUB Show_Menu ELSE cmd = cmd / 2 ON cmd GOSUB Flash_Yellow, Flash_White, Flash_Red, All_Clear ENDIF GOTO Main Toggle_Leds: DIRS = DIRS ^ %111 ' toggle active LED GOTO Main ' ------------------------------------------------------------------------------ ' Subroutines ' ------------------------------------------------------------------------------ Show_Menu: SEROUT TxD, Baud, [ CLS, "=================", CR, " CMM Monitor ", CR, "=================", CR, CR, "[Y]ellow ", CR, "[W]hite ", CR, "[R]ed ", CR, "[C]lear ", CR, CR, ">>> " ] RETURN Flash_Yellow: FinishedLight = IsOff ErrorLight = IsOff ScanLight = IsOn RETURN Flash_White: ScanLight = IsOff ErrorLight = IsOff FinishedLight = IsOn RETURN Flash_Red: ScanLight = IsOff FinishedLight = IsOff ErrorLight = IsOn RETURN All_Clear: ScanLight = IsOff FinishedLight = IsOff ErrorLight = IsOff RETURN