SUBROUTINE CHANGE_REFRESH_RATE () C---------------------------------------------------------------------- C- C- Purpose and Methods : Change TCC Polling/Display Refresh Rate C- C- Inputs : None C- Outputs : Set the common block variable REFRESH_RATE C- C- Created 31-JAN-1995 Philippe Laurens - MSU L1 Trigger C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' INCLUDE 'LV1_MPOOL.PARAMS' INCLUDE 'TRGMON_RBUF.INC' INTEGER READPF EXTERNAL READPF INTEGER PFKEY CHARACTER*78 BUFFER C---------------------------------------------------------------------- C 100 CALL OUTMSG('1 ') C C Advertize what this menu is about C CALL OUTMSG ( ' ' ) CALL OUTMSG & (' You can change the default interval for polling D0HTCC') CALL OUTMSG & (' and refreshing the TRGMON displays.') C C Read user's desired Refresh time C CALL OUTMSG ( ' ' ) CALL GETPAR ( & 1, 'Desired Refresh time (in seconds)> ', 'I', REFRESH_RATE) C C range-check C IF ( REFRESH_RATE .LT. 5 ) THEN CALL OUTMSG (' ! Request too low ! ') REFRESH_RATE = 5 ENDIF C IF ( REFRESH_RATE .GT. MAX_REF_TIME ) THEN CALL OUTMSG(' ! Request too high ! ') REFRESH_RATE = MAX_REF_TIME ENDIF C C advertize effective refresh time C CALL OUTMSG ( ' ' ) CALL OUTMSG ( ' ' ) CALL OUTMSG ( ' ' ) CALL OUTMSG ( ' ' ) CALL OUTMSG ( ' ' ) CALL OUTMSG ( ' ' ) WRITE ( BUFFER, 111, ERR= 100) REFRESH_RATE 111 FORMAT( ' TRGMON will use a Polling/Refresh interval of', I5, 's') CALL OUTMSG ( BUFFER ) C C Advertize, and read options on PF Keys C CALL OUTMSG ( ' ' ) CALL OUTMSG & (' Press PF1 to accept; PF2 to reselect' ) CALL OUTMSG & (' PF3 to now change the integration time' ) CALL OUTMSG ( ' ' ) CALL OUTMSG ( ' ' ) CALL OUTMSG & (' * Note that the data snapshot time will ' & //'fluctuate depending on data flow.') CALL OUTMSG & (' ** Note that this command has reset ' & //'the integration time to the default 5 s.') C CALL PFLABL( 'OK', 'RESELECT', 'INT.TIME', ' ' ) C PFKEY = READPF() C IF ( PFKEY .EQ. 1 ) GOTO 999 IF ( PFKEY .EQ. 2 ) GOTO 100 IF ( PFKEY .EQ. 3 ) CALL CHANGE_INTEGRATION_TIME () C C---------------------------------------------------------------------- 999 RETURN END SUBROUTINE CHANGE_INTEGRATION_TIME () C---------------------------------------------------------------------- C- C- Purpose and Methods : C- C- Inputs : C- Outputs : C- Controls: C- C- Created 31-JAN-1995 Philippe Laurens - MSU L1 Trigger C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' INCLUDE 'LV1_MPOOL.PARAMS' INCLUDE 'TRGMON_RBUF.INC' INTEGER READPF EXTERNAL READPF INTEGER PFKEY INTEGER DISP_INTEG_TIME CHARACTER*78 BUFFER C---------------------------------------------------------------------- C 100 CALL OUTMSG('1 ') C C Advertize what this menu is about C CALL OUTMSG & (' ') CALL OUTMSG & (' You can change the default display integration time.') CALL OUTMSG & (' This will affect all data presented as rates') CALL OUTMSG & (' or percentages for all TRGMON displays. ') CALL OUTMSG & (' ') CALL OUTMSG & (' TRGMON obtains an integration time longer than the') CALL OUTMSG & (' polling/refresh interval by remembering scaler counts') CALL OUTMSG & (' read during previous snapshots, and recomputing scaler') CALL OUTMSG & (' increments and time intervals. For this reason, TRGMON') CALL OUTMSG & (' can only create an integration time multiple of your') WRITE ( BUFFER, 101, ERR = 999 ) REFRESH_RATE 101 FORMAT (' Polling/Refresh Interval (now set at', I5, ' s).' ) CALL OUTMSG ( BUFFER ) C C Read user's desired Integration time C DISP_INTEG_TIME = 5 CALL GETPAR ( & 1, 'Desired Integration time (in seconds)> ', 'I', & DISP_INTEG_TIME ) C C Compute ring size necessary to satisfy user request. C Note that the default 5s does not need integration C RING_SIZE = DISP_INTEG_TIME / REFRESH_RATE + 1 IF ( DISP_INTEG_TIME .EQ. 5 ) THEN RING_SIZE = 1 ELSE IF ( RING_SIZE .LE. 1 ) THEN CALL OUTMSG (' ! Request too low' & //' (min is your polling/refresh interval, or 5s) !') RING_SIZE = 1 ENDIF C IF ( RING_SIZE .GT. MAX_RBUF_LENGTH ) THEN CALL OUTMSG (' ! Request too high' & //' (increase your polling/refresh interval) !') RING_SIZE = MAX_RBUF_LENGTH ENDIF C C Compute and advertize effective integration time C also decide if the TRGMON integration machinery needs to be used instead of C the default TCC 5s data C IF ( RING_SIZE .EQ. 1 ) THEN DISP_INTEG_TIME = 5 NEW_INTEGRATE = .FALSE. ELSE DISP_INTEG_TIME = ( RING_SIZE - 1 ) * REFRESH_RATE NEW_INTEGRATE = .TRUE. ENDIF C CALL OUTMSG ( ' ' ) CALL OUTMSG ( ' ' ) WRITE ( BUFFER, 111, ERR= 100) DISP_INTEG_TIME, RING_SIZE 111 FORMAT( ' TRGMON will use an Integration time of', I5, ' s', & ' [i.e. Ring Size=', I3, ']' ) CALL OUTMSG ( BUFFER ) C C Advertize, and read options on PF Keys C CALL OUTMSG ( ' ' ) CALL OUTMSG & (' Press PF1 to accept; PF2 to reselect' ) CALL OUTMSG ( ' ' ) CALL OUTMSG & (' * Note that the actual integration time ' & //'will fluctuate depending on data flow.') CALL OUTMSG & (' ** Note that the displays will still update ' & //'at your normal Polling/Refresh rate.') C CALL PFLABL( 'OK', 'RESELECT', ' ', ' ' ) PFKEY = READPF() IF ( PFKEY .EQ. 1 ) GOTO 999 IF ( PFKEY .EQ. 2 ) GOTO 100 C C---------------------------------------------------------------------- 999 RETURN END