sclclient accepts scaler buffers from a DAQ systems (spdaq system at the NSCL), processes them and sends processed information to a tclserver program. Given an appropriate setup script to describe a visual presentation of the scalers, sclclient and tclserver together create a scaler display subsystem.
Command options (see OPTIONS below), describe how the program starts up. sclclient interacts with tclserver by sending it a set of tcl commands to maintain some global variables (see VARIABLES below). In addition, at key points, procedures are called that are assume to be loaded into the tclserver program by its setup scripts (see PROCEDURES below).
The sclclient program accepts both short (single dash single letter) and long (double dash and english word) options. The list below only describes the long options. For a table of the corresponding short options run sclclient --help.
--help
Provides a short help page that describes the options their associated values and functionality.
--host
=hostnameProvides the name of the host in which the Tcl server this program connects to is running. If not provided this defaults to localhost
--port
=portProvides the port on which the Tcl server is listening for connections. This should either be an integer port number or the special text string managed. By default, this is managed.
If the port is managed the client software will use the port manager running in the target host to locate an application named ScalerDisplay being run under the same username that sclclient is running.
--source
=ringurl
ringurl
is the URL to the
ringbuffer from which the application will take data.
If omitted, the source will be
tcp://localhost/username
where username is the name of the
user running the program.
--version
Prints out program version information to stdout.
sclclient maintains several variables and arrays in the TCL server to which it is connected. Scaler displays are therefore constructed by displaying the values of these variables and arrays as well as by providing procedures called by sclclient (see PROCEDURES below).
The variables sclcient maintains are:
This is a TCL array indexed by scaler channel number (channels start at 0. Each element of the array is the total number of counts in that channel either since the scaler program started up or the run began, whichever happened latest.
This is a TCL array indexed by channel number. The value of each element is the number of counts in that channel since the latest of the beginning of the run, starting sclclient, and the previous scaler buffer.
This variable maintains the number of seconds in the most recently received set of scaler increments in seconds. If no scaler increments have been received, this variable is 0. ScalerDeltaTime can be used to calculate scaler rates.
This variable contains the number of seconds since the start of run, or when the scaler client program started, whichever is latest.
This variable contains he number of the current run. If not yet known, it has the value >Unknown%lt; instead.
This variable has the known run state. It is any of HALTED, ACTIVE, or PAUSED, or lastly >Unknown< if the run state is not yet known.
Contains the title of the current run if known or the text ">Unknown<" if not.
Boolean that indicates whether or not the specified scaler updates are the result of an incremental or non-incremental scaler ring item.
In addition to maintaining the global variables described in VARIABLES above, sclclient calls procedures at well defined points in time. These procedures must be defined in the tclserver, even if only as empty procedures.
Procedures are not passed any parameters. The procedures sclclient requires are:
Called whenever variables have been updated. The tclserver code here will usually refresh the display picture.
Called when a begin run is detected.
Called when an end run is detected.
Called when a pause run is detected.
Called when a resume run is detected.
Called when the first data to come in is not a begin run. This indicates that sclclient started while a run is in progress.
Called to update the run time when the ring item being processed has a body header. The source id is the first parameter and the floating point number of seconds into the run that source is reporting is the second parameter.