Select Git revision
gqgmc.hh 25.33 KiB
// **************************************************************************
// File: gqgmc.hh
//
// Author: Phil Gillaspy
//
// Last Modified: 04/26/2012
//
// Description:
// Declare the class and its methods describing the capabilities
// of the GQ Electronics LLC Geiger-Muller Counter (GQ GMC).
// This code covers the GMC-300 and later models.
//
// INTRODUCTION:
//
// Detailed design documentation is embedded in the source code files.
// The intent is to combine source code and documentation such that a
// separate design document is unnecessary. The author's philosophy is that
// the source code should be considered as part of the design documentation.
// This philosophy was developed over many years of experience wherein the
// design document replicated so much information that was in the source
// code, that doing so generated needless opportunity for inconsistency.
// It is widely recognized that replicating information only increases
// the chances for human error and undue maintenance hardship.
//
// Since the design documentation will be embedded in the source code,
// the organization is constrained to the C/C++ compilation requirements
// that there exist a separate include and source body files. However,
// the author's philosophy is that sofware engineers find the separation
// of information between two files to be an annoyance. It would be much
// preferred that all information were located at the point where the
// software engineer needs to read the code to understand its operation,
// in other words, the source body file (.c,.cc). However, the C/C++
// convention of separate header and body files precludes that idealism.
// It will be realized that various C/C++ constructs and objects appear
// in both the header and source body files. So the following convention
// is followed as to where to embed the documentation: the documentation
// should appear where the object is defined, not where it declared.
// For example, an enumeration which must be defined as publicly
// visible, will be defined only in the header file and consequently
// should be documented in the header file. As another example, a
// class method is declared in the header file, but defined in the source
// file. Therefore the bulk of the documentation for the method should
// be placed in the source file.
//
// The documentation presented here will not cover any nuclear physics
// technical aspects of the GQ Geiger-Muller counter.
//
// GQ GEIGER-MULLER FEATURES
//
// The discussion of the GQ LLC geiger counter is drawn principally
// from the the GMC-300 model with firmware revision 2.15 and later.
// The GMC-300 records high energy particles which when passing through
// geiger-muller tube ionize the gas and create a transient current.
// Each transient pulsed current is considered a 'count'.
// The basic measured form of the radiation is reported in terms of
// counts per second, counts per minute, or the counts per minute
// averaged over an hour. The GMC-300 is also capable of recording
// the aforementioned measures in a history buffer of 64K bytes.
// The GMC-300 provides a USB interface which, however, is physically
// and logically implemented as a traditional RS-232 serial interface.
// The GMC-300 provides a variety of commands to collect data and
// set operational parameters. The reader is referred to the GQ
// Electronics LLC GMC-200 User Manual for a more thorough
// discussion of the its features.
//
//
// SOFTWARE LICENSE STATEMENT
//
// This software contained in the gqgmc.hh and gqgmc.cc files are
// licensed to the public domain under terms of the GNU GPL