This page was created by the IDL library routine
mk_html_help. For more information on
this routine, refer to the IDL Online Help Navigator
or type:
? mk_html_help
at the IDL command line prompt.
Last modified: Wed Nov 12 16:50:02 2003.
NAME:
EPICS_SCALER::GET_TITLE
PURPOSE:
This function returns the .NMx field of the EPICS scaler record. This
is typically a short description of the scaler input.
CATEGORY:
EPICS device class library.
CALLING SEQUENCE:
Result = scaler->GET_TITLE(Channel)
INPUTS:
None:
OPTIONAL INPUTS:
Channel: If a channel is specified then only the title of this
scaler channel is returned. By default the titles of all
scaler channels are returned. On the Joerger scaler this is
either 8 or 16 channels, depending upon the model.
OUTPUTS:
This function returns the titles of the scaler channels.
EXAMPLE:
scaler = obj_new('epics_scaler', '13IDC:scaler1')
print, scaler->get_title(1)
Photodiode
MODIFICATION HISTORY:
Written by: Mark Rivers, October 1, 1997
(See epics_scaler__define.pro)
NAME:
EPICS_SCALER::INIT
PURPOSE:
This is the initialization code which is invoked when a new object of
type EPICS_SCALER is created. It cannot be called directly, but only
indirectly by the IDL OBJ_NEW() function.
CATEGORY:
EPICS device class library.
CALLING SEQUENCE:
Result = OBJ_NEW('epics_scaler', Record_Name)
INPUTS:
Record_Name: The name of the EPICS scaler record for the scaler object
being created. This record name can include a field
name which will be stripped off. For example,
'13IDC:scaler1' and '13IDC:scaler1.S2' are both
valid. This makes it convenient when dragging process
variable names from MEDM windows to IDL windows.
OUTPUTS:
This function returns a status to indicate whether it was able to
establish channel access communication with the specified EPICS scaler
record. This status is 1 for success, 0 for failure. This status is
passed back indirectly to the routine which calls OBJ_NEW(). OBJ_NEW
will return a valid object pointer if this routine succeeds, and will
return a NULL object pointer if this routine fails. The user should
test the return value of OBJ_NEW() with the IDL function OBJ_VALID().
SIDE EFFECTS:
The routine establishes channel access monitors on all of the fields
in the scaler record which the methods in this class will read. This
greatly improves the speed and efficiency.
RESTRICTIONS:
This routine cannot be called directly. It is called indirectly when
creating a new object of class EPICS_SCALER by the IDL OBJ_NEW()
function.
EXAMPLE:
scaler = obj_new('epics_scaler', '13IDC:scaler1')
if (OBJ_VALID(scaler)) then print, 'It worked!'
MODIFICATION HISTORY:
Written by: Mark Rivers, October 1, 1997
(See epics_scaler__define.pro)
NAME:
EPICS_SCALER::READ
PURPOSE:
This function returns the counts on the scaler. It can either return
the counts on a single scaler channel or on all of the scaler channels.
CATEGORY:
EPICS device class library.
CALLING SEQUENCE:
Result = scaler->READ(Channel)
OPTIONAL INPUTS:
Channel: If a channel is specified then only the counts on this
scaler channel are returned. By default the counts on all
scaler channels are returned. On the Joerger scaler this is
either 8 or 16 channels, depending upon the model.
OUTPUTS:
Returns the counts. This can be a single number if the optional
Channel input was specified, or an array of counts if Channel was not
specified.
EXAMPLE:
scaler = obj_new('epics_scaler', '13IDC:scaler1')
scaler->START, 10. ; Start counting for 10 seconds.
scaler->WAIT ; Wait for counting to complete
counts = scaler->READ() ; Read the counts on all of the channels
counts = scaler->READ(0) ; Read the counts on the first channel,
; which is the preset clock.
MODIFICATION HISTORY:
Written by: Mark Rivers, October 1, 1997
(See epics_scaler__define.pro)
NAME:
EPICS_SCALER::SCALER_STOP
PURPOSE:
This function stops the scaler immediately from counting.
CATEGORY:
EPICS device class library.
CALLING SEQUENCE:
scaler->SCALER_STOP
INPUTS:
None
OUTPUTS:
None
RESTRICTIONS:
This routine should really be named EPICS_SCALER::STOP. However, there
is a bug in IDL 5.0 such that class procedures can have name conflicts
with IDL procedures of the same name. This is the case with the IDL
STOP procedure. This routine may be renamed if this problem is fixed.
EXAMPLE:
scaler = obj_new('epics_scaler', '13IDC:scaler1')
scaler->START ; Start counting
scaler->STOP ; Stop immediately
counts = scaler->READ() ; Read the counts on all of the channels
MODIFICATION HISTORY:
Written by: Mark Rivers, October 1, 1997
18-SEP-1998 MLR Added /WAIT to caput call, since this is not the
default in ezcaIDL any more, and it is required
for the scaler wait to work correctly.
(See epics_scaler__define.pro)
NAME:
EPICS_SCALER::SET_TITLE
PURPOSE:
This procedure sets the .NMx field of the EPICS scaler record. This
is typically a short description of the scaler input.
CATEGORY:
EPICS device class library.
CALLING SEQUENCE:
scaler->SET_TITLE, Channel, Title
INPUTS:
Channel: The scaler channel whose title is to be set. This is a
number in the range 0-7 or 0-15 depending upon the model.
Title: The title string.
OUTPUTS:
None
EXAMPLE:
scaler = obj_new('epics_scaler', '13IDC:scaler1')
scaler->set_title, 1, 'Photodiode'
MODIFICATION HISTORY:
Written by: Mark Rivers, October 1, 1997
(See epics_scaler__define.pro)
NAME:
EPICS_SCALER::START
PURPOSE:
This function starts the scaler counting.
CATEGORY:
EPICS device class library.
CALLING SEQUENCE:
scaler->START, Time
OPTIONAL INPUTS:
Time: The preset counting time in seconds. If this input parameter
is not specified then the preset time of the scaler is not
changed.
OUTPUTS:
None
SIDE EFFECTS:
Before starting the scaler the counts on all of the channels are set
to 0. This is how the Joerger scaler works.
RESTRICTIONS:
This routine assumes that the first channel of the scaler is used for
for a clock. It thus assumes that there is a wire from the clock
output of the module to the first input channel. It assumes that this
channel has been configured to gate (perhaps EPICS_SCALER::INIT
should do this?)
This routine reads but does not alter the clock frequency. It assumes
that the scaler has been set up with a reasonable clock frequency, i.e.
one which is faster than the preset time!
EXAMPLE:
scaler = obj_new('epics_scaler', '13IDC:scaler1')
scaler->START, 10. ; Start counting for 10 seconds.
scaler->WAIT ; Wait for counting to complete
counts = scaler->READ() ; Read the counts on all of the channels
; which is the preset clock.
MODIFICATION HISTORY:
Written by: Mark Rivers, October 1, 1997
18-SEP-1998 MLR Added /WAIT to caput calls, since this is not the
default in ezcaIDL any more, and it is required
for the scaler wait to work correctly.
05-MAR-2001 MLR Removed /WAIT to caput call when actually starting the
scaler, or else it waits for the scaler to complete. This
is because the scaler record does not fire its forward link
now until the count is complete.
(See epics_scaler__define.pro)
NAME:
EPICS_SCALER::WAIT
PURPOSE:
This function waits for counting on the scaler to complete.
CATEGORY:
EPICS device class library.
CALLING SEQUENCE:
scaler->WAIT
INPUTS:
None
KEYWORD_PARAMETERS:
START:
Set this flag to wait for counting to start.
STOP:
Set this flag to wait for counting to stop. This is the default.
If both the START and STOP keywords are given then the routine will wait
first for acquisition to start and then for acquistion to stop. If only
/START is given then it will not wait for acquisition to stop.
OUTPUTS:
None
PROCEDURE:
This routine simply tests whether the scaler is done counting. If
it is then the routine returns. If it is not it waits for 1% of the
counting time or 0.1 second (whichever is less) and tries again.
EXAMPLE:
scaler = obj_new('epics_scaler', '13IDC:scaler1')
scaler->start, 10. ; Start counting for 10 seconds.
scaler->wait ; Wait for counting to complete
MODIFICATION HISTORY:
Written by: Mark Rivers, October 1, 1997
4-Mar-2002 MLR Added START and STOP keywords. Previously it would
only wait for stop. Eliminated unused "dwell_time" input.
Changed logic to eliminate initial wait if already done.
Changed dwell from 10% to 1% of counting time
(See epics_scaler__define.pro)
NAME:
EPICS_SCALER__DEFINE
PURPOSE:
This is the definition code which is invoked when a new object of
type EPICS_SCALER is created. It cannot be called directly, but only
indirectly by the IDL OBJ_NEW() function,
CATEGORY:
EPICS device class library.
CALLING SEQUENCE:
Result = OBJ_NEW('epics_scaler', Record_Name)
INPUTS:
Record_Name: The name of the EPICS scaler record for the scaler object
being created. This record name can include a field
name which will be stripped off. For example,
'13IDC:scaler1' and '13IDC:scaler1.S2' are both
valid. This makes it convenient when dragging process
variable names from MEDM windows to IDL windows. This
name is passed to EPICS_SCALER::INIT().
OUTPUTS:
None (but see EPICS_SCALER::INIT)
RESTRICTIONS:
This routine cannot be called directly. It is called indirectly when
creating a new object of class EPICS_SCALER by the IDL OBJ_NEW()
function.
EXAMPLE:
scaler = obj_new('epics_scaler', '13IDC:scaler1')
if (OBJ_VALID(scaler)) then print, 'It worked!'
MODIFICATION HISTORY:
Written by: Mark Rivers, October 1, 1997
(See epics_scaler__define.pro)