}

Guider Image Controller Commands

For version 4.1; last updated 2003-11-06

Overview

This controller obtains and processes images from various guide cameras. Its commands, and associated replies, are described in this document. For more information about the controller, please see the Guide Image Controller Overview Manual. A few additional commands may be available that are not supported and hence not documented in this manual. These are generally written to aid in debugging. The complete set of commands available, including unsupported commands, may be determined by issuing the help command.

Units are as follows, unless otherwise noted:

  • all linear units are in binned (x,y) pixels
  • all times are in seconds
  • all brightnesses are in ADUs (counts)

The position coordinate system is as follows:

  • The x axis is column number, i.e. x is parallel to the serial register of the CCD and zero is the end read first during readout
  • The y axis is row number, i.e. y is perpendicular to the serial register of the CCD and zero is the end read first during readout
  • The point 0,0 is at the corner of first pixel read out. Hence the center of that pixel is (0.5, 0.5) and the center of a 1024x1024 CCD is (512.0, 512.0)

Configuration File

Beginning with version 4.0 a camera configuration file has been implemented. This file is read at startup and in response to the readconfig command. The format of the file changed in 4.1 and is now as follows:

  • Comment lines begin with !
  • Values are expressed as "keyword value" pairs, one pair per line. Keyword and value are separated by an arbitrary number of spaces and/or tabs.
  • String values should not be quoted; if you supply quotes they will be read as part of the string!
  • Keywords are not case sensitive.

Keywords and their associated values are:

  • ImageDir directory to contain images; all data on the rest of the line is taken to be the directory, so the directory name may contain spaces. The default is guider_images.
  • BadPixMapDir directory containing bad pixel maps. The default is badpixelmaps.
  • MaxFileNum the maximum number of images that will be automatically saved before overwriting existing images. The default is 100.
  • LastFileNum the number of the last autosaved image. Changing this number has no effect on images that have already been saved. Example: if you set it to 17, then the next image saved will be number 18 (unless macFileNum < 18, in which case the next image saved will be number 1). I suspect few, if any, users will wish to change this parameter.
  • Debug 1 for debug mode, 0 (the default) for regular mode. In debug mode commands are received from standard input (the log window on a Mac) rather than from the serial port, so you can conduct tests directly from the guide image controller. This keyword is only read when the program starts up. If you want to change it you must quit, modify the config file and restart.
  • Camera data for a camera, a series of whitespace-separated values in the following order:
    • ID: the integer used by setcam to select this particular camera. You cannot specify 0 because that is reserved to mean "no camera". If an ID number is specified that is already in use, the existing camera data is deleted and the new data is used. This can be used to update camera data in a running program: generate a configuration file that contains just the new data and read it in with the "readconfig" command.
    • type: a string used to select the correct camera class; the allowed types are presently PXL and SenSys on a Macintosh and Apogee on a PC. Not case sensitive.
    • name: name of camera, may not contain spaces. This string may be used by the camera support library, in which case the allowed values will depend on the camera and the string may be case sensitive.
    • x size, y size: x and y size of the image, in unbinned pixels
    • bits/pixel: the number of bits of data per pixel
    • bad pixel map?: 1 if this camera has a bad pixel map, 0 otherwise
    • temperature: desired CCD temperature (C); ignored if temperature cannot be set
    • gain (e-/ADU); used for information and internal data processing rather than to set the camera
    • read noise (e-); used for information and internal data processing rather than to set the camera
    • Append the following optional parameters for PXL and SenSys (e.g. Photometrics PPK) cameras.
      • gain setting: selects an entry in the speed table (see next item) associated with a particular gain. 1 if omitted (if you omit gain setting then you must also omit speed table).
      • speed table: selects a particular speed table. 0 if omitted
      • Notes
        • SenSys cameras require a speed table of 0; the associated gain settings are shown in the SenSys manual under "CCD Characteristics"
        • I assume similar information came with the PXL camera(s), but I don't have it.

Here is a sample configuration file:

ImageDir    :images:
        MaxFileNum  10
        Debug        1
        ! Camera data
        !       ID      type    name    x size  y size  bits    map?    temp    gain    read    gainset    spdtable
        !                               (pix)   (pix)   /pix            (C)     e-/ADU  (e-)    (Photometrics)
        Camera  1       PXL     PXL1024 1024    1024    16      0       -25.0    9.7    21
        Camera  2       SenSys  SenSys   768     512    12      0        10.0   40.0    26      1
        Camera  3       SenSys  SenSys2 1536    1024    12      0        10.0   40.0    26      1

Commands

  • Commands are not case sensitive.
  • Commands are be terminated with a <CR> (carriage return).
  • You may supply an integer if a floating-point number is wanted, but not visa-versa.
  • File names may contain spaces, but must not be enclosed in double-quotes (file names are always the last parameter requested, and simply consist of all remaining text on the line). This form of string input is due to idiosyncrasies in C++'s text handling.

Only the format for normal replies is shown below. It is hoped that error messages will be self-evident.

centroid xCtr yCtr xPredFWHM yPredFWHM

Find the position and shape of a star. The predicted FWHM is in binned pixels; an error of a factor of two either way should be acceptable. Excessive error can cause centroiding to fail. The centroid box (set by the boxsize parameter and the predicted FWHM) must contain only one star, else the centroid will be inaccurate (and will usually be rejected with an error).

If the centroid is computed successfully, returns data as follows:

 

bin       position        FWHM    maj ang  peak  bright  sky    pos uncert  error code
        x y      x        y     maj  min                                  x     y
        2 2   133.609  33.681   4.25 4.32   1.8   1105.5 24483.1 77.0   0.001 0.001     0
         

where:

  • maj ang (deg) is the angle of the major axis of the ellipse with respect to the image (0 if along x, 45 if halfway between x and y).
  • position, FWHM and position uncertainty are in binned pixels
  • peak, brightness and sky are in counts
  • error code is zero for success. Any other value suggests a reduction in accuracy of the data.

Error Codes. These may change, but are presently as follows (those returned by atDACentroid). Values -1 through -4 indicate a failed centroid, and an error message is returned instead of star data.

0

OK

-1

center isn't locally highest pixel in atObjectCenterFind_Ptr

-2

object is too close to the edge in atObjectCenterFind_Ptr

-3

object has vanishing second derivative in atObjectCenterFind_Ptr

-4

sky is too high in atObjectCenterFind_Ptr -10 Zero sigma - peak and counts not calculated after atObjectCenterFind_Ptr

-11

Infinite sigma after atObjectCenterFind_Ptr

-21

Error in setfsigma (sigma too large) in atSigmaFind

-22

Sigma out of range (inf sharp or inf flat) in atSigmaFind

-23

Too many iterations in atSigmaFind

-24

Too close to edge in atSigmaFind

-25

Error in lgausmom - check sky value in atSigmaFind

-26

Too flat in atFindFocMom, from atSigmaFind

-30

Zero sigma - peak and counts not calculated after atSigmaFind

-31

Infinite sigma after atSigmaFind

clearimage

Erase the image in memory (by resetting the image pointers).

docentroid expTime xBin yBin xCtr yCtr xPredFWHM yPredFWHM

Exposes the CCD, reads a subregion into memory, and centroids the subregion. The size of the subregion is predFWHM * boxSize, truncated as necessary to fit on the CCD. If expTime is zero then the shutter is not opened. See also doread and centroid. Note: docentroid will return an error if no camera selected.

Returns the output of showiminfo followed by the output of centroid (including the relevant error message if centroiding fails).

dodark expTime xBin yBin region

Like doread but does not open the shutter. Used to take dark frames.

Returns the output of showiminfo.

doread expTime xBin yBin region

Exposes the CCD, reads it into memory, writes a FITS image to the directory "guider images", and updates the text file last.image to point to it. The FITS file is given one of a circularly sequential set of names; if a file by that name exists, it is silently replaced. If expTime is zero then the shutter is not opened. Note: doread will return an error if no camera selected

Returns the output of showiminfo.

dumpbadbin file name

Dump the bad pixel map to a binary file.

dumpbadfits file name

Dump the bad pixel map to a FITS file.

dumpbin fileName

Dump the image to a binary file.

dumpfits fileName

Dump the image to a FITS file.

exit

Identical to the quit command. Makes the image controller program quit. Please don't issue this command unless you are prepared to get the program running again.

findstars maxNumStars region xPredFWHM yPredFWHM

Computes statistics, determines a cutoff level (see prefs), scans for stars, sorts the list in decreasing brightness and prints a list of stars. The predicted FWHM is in pixels; an error of a factor of two either way should be acceptable, but excessive error can cause star finding or centroiding to fail. The stars are listed approximately in decreasing order of brightness.

The order is approximate due to details of the algorithm. When the stars are first found only crude positions and brightnesses are determined, and these crude brightnesses are used to sort the data. The stars are accurately centroided only as they are being printed, so the brightnesses may not be in perfectly descending order. (Note that any stars for which the centroid calculation fails are omitted, with a warning printed to the log window). The ordering should probably be perfected, but the simplest solution would require accurately centroiding many more objects, which would slow down the code.

Returns one line of data per star; each line is in the format returned by centroid. Sample output:

 

findstars 100 0 0 0 0 5 5
        created null bad pixel map for camera: 2
        star finder constructed; super pixel array is 31 by 19
        star finder destructed
        Found 11 raw star(s)
        2 2   133.609 33.681   4.32 4.25 -1.8   1105.5 24483.1 77.0   0.001 0.001   0
        2 2   205.562 67.510   4.16 4.04 -70.4   985.2 20909.2 82.0   0.001 0.001   0
        2 2   74.291 177.195   5.22 4.29 80.3   556.1 14238.4 77.0   0.001 0.001   0
        2 2   132.761 110.889   4.82 4.56 -7.5   505.9 12899.7 77.0   0.001 0.001   0
        2 2   79.187 33.018   6.58 5.27 -55.1   358.5 13771.4 77.0   0.001 0.001   0
        2 2   17.606 100.423   6.19 4.42 -11.6   427.3 12682.9 77.0   0.001 0.001   0
        2 2   78.383 106.623   5.30 4.35 -22.1   392.7 10272.0 76.0   0.001 0.001   0
        2 2   133.305 180.496   7.00 5.10 16.8   263.5 10670.0 78.0   0.001 0.001   -24
        2 2   17.149 173.413   4.59 4.05 -47.9   256.0 5690.9 77.0   0.002 0.002   0
        2 2   23.220 32.065   6.80 5.18 -25.3   163.6 5897.1 76.0   0.002 0.002   0
        2 2   281.312 171.713   5.19 4.32 32.6   160.8 4129.9 78.0   0.002 0.002   0

If no stars are found, the following is returned:

 

no stars found

help

Displays help for the program, including a list of commands, their arguments, and a brief description of each command.

init

Initialize the current camera, erases the image (and bad pixel map), and restores default parameters.

loadbadbin xSize ySize fileName

Load the bad pixel map from a binary file.

loadbin xSize ySize fileName

Load the image from a binary file.

loadfits fileName

Load the image from a FITS file. Attempts to parse CAMID (camera ID number) in the header, but defaults to the zero camera if not found. If the FITS file was written when a different set of cameras was available then CAMID may actually be wrong, in which case you may wish to edit it out of the header.

makebadpixmap minGood maxGood

Use the current image to make a bad pixel map. Pixels with values outside the range minGood to maxGood (inclusive) are considered bad. Specifying 0 for maxGood causes it to use the maximum possible counts minus one -- in other words, only completely saturated pixels are considered too bright.

median region

Computes the approximate median pixel value of the specified region. For large regions some groups of pixels are averaged together before taking the median of the averages.

quit

Identical to the exit command. Makes the image controller program quit. Please don't issue this command unless you are prepared to get the program running again.

readconfig [filename]

Reads the specified configuration file, or config.txt if none specified. Any omitted keywords are left unchanged, so this command is useful for modifying the configuration data read in at startup (from the file config.txt).

setboxsize size

Sets the centroid box size, in FWHM units. The centroid box is used for two things:

  • The image size for the docentroid command.
  • The size of the region to scan for computing the sky background level

The centroid box size in pixels is computed, as follows:

Centroid box size in x/y pixels = max (box size in fwhm units * predicted FWHM in x/y pixels, 15)

Unlike predicted FWHM, the appropriate value of box size (in FWHM units) should be independent of camera and observing conditions. In fact, the default box size should be adequate under all circumstances.

Making the box size too large is unlikely to cause significant problems, it mainly slows down reading of the CCD. Making the box size too small will cause centroiding to fail, and since the required size depends partly on how centered the star is in the image, this failure can be intermittent for borderline cases.

setcam camIDNum

Select a given camera and initialize it. All subsequent camera access commands, such as "doread" are directed to this camera until a new setcamera command is received. Returns the same information as showcaminfo.

0 always means "no camera". Other camera ID numbers are specified in the configuration file. A list of available cameras may be obtained via the showcamlist command.

setfilenum filenum

Sets the file number for the FITS file to be automatically written next time the camera is read. Must be in the range [1, maxfilenum].

setmaxfilenum maxfilenum

Sets the maximum file number for the FITS file automatically written each time the camera is read. Must be positive.

showbadcaminfo

Return camera data associated with the bad pixel map, using the same format as showcaminfo.

showbadiminfo

Return information about the bad pixel map, using the same format as showiminfo.

showcaminfo

Return data about the current camera, including image size, min and max possible pixel values, the CCD temperature (in C; NaN if not available for the current camera) and the file number for the next file to be written. Sample output:

 

showcaminfo
        0 "none" 1200 1200 16 NaN 53 "camera: ID# name sizeXY bits/pixel temp fileNum"

showcamlist

Return information about all known cameras. Only hard-wired information is displayed; information about what the camera is looking at should be kept in the TCC or MC. Sample output:

 

showcamlist
        0 "none" 1600 1600 16 nan 318 "camera: ID# name sizeXY bits/pixel temp lastFileNum"
        1 "PXL1024" 1024 1024 16 -20.89 318 "camera: ID# name sizeXY bits/pixel temp lastFileNum"
        2 "SenSys" 768 512 12 nan 318 "camera: ID# name sizeXY bits/pixel temp lastFileNum"
        3 "SenSys2" 1536 1024 12 nan 318 "camera: ID# name sizeXY bits/pixel temp lastFileNum"
        4 "SenSys" 768 512 12 nan 318 "camera: ID# name sizeXY bits/pixel temp lastFileNum"
        5 "SenSys2" 1536 1024 12 nan 318 "camera: ID# name sizeXY bits/pixel temp lastFileNum"
        6 "SenSys" 768 512 12 nan 318 "camera: ID# name sizeXY bits/pixel temp lastFileNum"
        7 "SenSys2" 1536 1024 12 nan 318 "camera: ID# name sizeXY bits/pixel temp lastFileNum"
         

showconfig

Return data about the current configuration. Sample output:

! Current configuration
        ! directory for autosaved images (may contain spaces)
        ImageDir     :images:
        
        ! directory for bad pixel maps (may contain spaces)
        BadPixMapDir badpixelmaps
        
        ! number of autosaved images to store (may contain spaces)
        MaxFileNum   10
        
        ! number of last autosaved image
        ! (typically best left alone, so commented out)
        ! LastFileNum  0
        
        ! 0 for normal operation (read commands from the serial port)
        ! 1 to debug (read commands from the console window)
        Debug        1
        
        ! camera data is as follows:
        ID number, type, name, x size, y size, bits/pix, has bad pixel map (0 if false, 1 if true), desired temperature (C), gain (e-/ADU), read noise (e-)
        Camera 0 none none 1600 1600 16 0 1 0
        Camera 1 PXL PXL1024 1024 1024 16 -25 9.7 21
        Camera 2 SenSys SenSys 768 512 12 10 40 26
        Camera 3 SenSys SenSys2 1536 1024 12 10 40 26
        Camera 4 SenSys SenSys 768 512 12 10 20 19
        Camera 5 SenSys SenSys2 1536 1024 12 10 20 19
        Camera 6 SenSys SenSys 768 512 12 10 5 13
        Camera 7 SenSys SenSys2 1536 1024 12 10 5 13

showiminfo

Return data about the current image in memory. Sample output:

 

showiminfo
        1 1 0 0 0 0 nan 0 nan "image: binXY begXY sizeXY expTime camID temp"
        
        showiminfo
        1 1 0 0 1024 1024 nan 0 nan "image: binXY begXY sizeXY expTime camID temp"
        

showparams

Return the value of all user-settable parameters. Sample output:

 

showparams
        6.00 53 "params: boxSize (FWHM units) maxFileNum"

showstatus

Concatenate output of showparams, showcaminfo and showiminfo. Sample output:

 

showstatus
        1 "PXL1024" 1024 1024 16 -20.89 318 "camera: ID# name sizeXY bits/pixel temp lastFileNum"
        1 1 0 0 0 0 nan 0 nan "image: binXY begXY sizeXY expTime camID temp"
        8.00 1000 params: boxSize (FWHM units) maxFileNum
        

showversion

Returns the software version and date. Sample output:

 

showversion
        Guider Image Controller v3.0b2 3/26/97

stats region

Compute and prints statistics for the given region. Sample output:

 

stats 0 0 0 0
        819.33 106.27 455.00 21678.00 1048576 0 "mean stdDev min max nGoodPix nBadPix"

Parameters

region

Four numbers specifying a region of interest, as follows:

xCtr yCtr xSize ySize

where:

  • all values are in decimal pixels
  • the center of a given pixel is that pixel's index plus 0.5 (the corner pixel has index 0,0)
  • the size is from edge to edge
  • the desired region need not fit on the CCD or current image in memory; it will be truncated as necessary, without warning
  • if xSize or ySize are zero then the entire image area in that axis is used, and the corresponding ctr is ignored

For example:

7.5 1 3 4

requests a 3x4 box of pixels centered on the center of pixel 7 in x and the boundary between pixels 0 and 1 in y. This is a rectangle extending from pixel 6,-1 through pixel 8,2 (inclusive). However, a portion of this requested region is out of range (less than zero), so the actual region will be truncated to a 3x3 box extending from pixel 6,0 through 8,2 (inclusive).

History

2003-11-06 manual fixes

  • The sample output for showstatus had the image info in the wrong order for (presumably it was outdated output). Also, the output for showcaminfo was changed at some point to show the comment string on every line, so that example was updated.

4.1 2002-05-22

  • Released 4.1b5 as 4.1. No code changes, but I did clean up the comments in config.txt.

4.1b5 2001-06-18

  • Bug fix: a command consisting of one or more spaces caused an error.
  • Improved the reliability of the serial port open code; if the port is already open (as can happen if the application dies or is killed), tries to close it and then open it again before giving up.
  • Improved the error handling of main: all code is now in a try block; formerly if the serial ports failed to open, for instance, the application would instantly quit.
  • Increased the Mac memory partition to 18000k, in the faint hope of improving a sporadic slow read time seen in the 3.5m NA2 PXL camera.
  • Added a message to stdout when the serial port is opened and closed.

4.1b4 2001-06-01

  • Fixed routil_getRecord, which was not always setting isEOF, producing a failure on Windows.

4.1b3 2001-05-18

  • Bug fix: floating point parameters in fits headers had no decimal point if only zeros would have been displayed to the right of the decimal (due to using "g" format).
  • Documented the dodark command; it has existed for awhile and was described by the help command, but was not documented in this manual.

4.1b2 2001-04-04

  • Changed Mac version serial port back to A (from B).
  • Moved serial port code to namespace ser.
  • Improved routil_getRecord's algorithm for detecting eof or error.

4.1b1 2001-03-07

  • Made commands case insensitive.
  • Overhauled the configuration file format, adding many items and changing the default filename to config.txt.
  • Changed Mac version to use serial port B (instead of A).
  • Moved camera info class to Camera.h and Camera namespace. and added an instance to Image and BaseCam classes, eliminating most uses of camIDNum (yay!).
  • Made methods of BaseCam that must be overridden "pure virtual", to force the override.
  • Eliminated uninit method in BaseCam and camera-specific classes; wind-down is so simple that a separate method seemed wasteful; all such work is now done directly in the destructor.

4.0b3, 1/18/00

Ported to Windows 95 with support for Apogee Cameras. This version has two targets and still supports the Macintosh with the Photometrics cameras. The port required the following changes:

  • Conversion of small amounts of code to ANSI standard C++.
  • Use the WinSOUIX libraries for the Windows implementation of the interface.
  • Abstracting the camera control library to create a hardware independent base class.
  • Writing two hardware dependent camera control classes, one for the Mac which interfaces with the Photometrics camera and one for the PC which interfaces with the Apogee camera.
  • Adding a serial port class for Windows
  • Adding compiler directives throughout the code to sense which target platform is being compiled and including the proper header files.
  • Move all camera configuration parameters to a text configuration file so that adding new cameras which use the same library not longer requires recompilation.
  • Made necessary big-endian - little-endian conversions for FITS images on Windows platform.

For more detailed information you may want to look at the file "4.0 Developer Notes" in the development directory

3.0b27, 6/22/99

  • Added commands setfilenum and setmaxfilenum
  • Improved showparams to show maxfilenum and improved camera status to show current file number
  • Fixed bug in command parser: was not catching all classes of exceptions; fixed bug in the auto-generated FITS file naming routine (file numbers > 99 were causing very strange file names) and overhauled that code
  • Improved sfind.genStarList to catch errors from gim.centerOfMass and reject such stars; this fixed the error mentioned in 3.0b25 and allowed returning to use of cheap median without fear
  • Returned to use of cheap median

3.0b26, 6/21/99

  • Bug fixes to centroid output
    • FWHM is now listed with the major axis first
    • angle of major axis of ellipse now has the correct sign

3.0b25, 6/17/99

  • Modified to use true median code in star finder init because of extremely rare errors seen when using "cheap median" (mean with highest pixel eliminated); note that this is a quick fix, in that the errors need to be properly investigated; true median is much slower than cheap median, and it's not clear that true median gives any better star finding
  • Modified super pixel type to have separate counts field instead of overloading the "med" field

3.0b24, 6/17/99

  • Bug fix: star finder could find the same star twice (distant bright star neighbors were being treated as stars). R. Owen.

3.0b23, 6/16/99

  • Increased # of images in ring buffer to 1000 (again, the change in 3.0b19 seems to have been somehow lost). R. Owen.

3.0b22, 6/16/99

  • Repaired a test for hot pixels in the star finder; known bugs: star finder may find a given star twice
  • Note that the cheap "median filter" for superpixels is commented out for reasons Jeff Morgan nor Russell Owen can remember, we intend to restore it but didn't get to it for this iteration

3.0b21, 6/16/99

  • Eliminated zfindrawstars command; gim.centroid now always computes position uncertainty, and as a side effect gain is now a required parameter for each camera, even "none"
  • Uses gim__star structure to hold star centroid and shape data
  • gim.showStarInfo displays the appropriate # of decimal digits for each item, displays centroid status, uses spaces to group items and no longer outputs a descriptive comment after each line
  • Help now describes the output from gim.showStarInfo.

3.0b20, 6/14/99

  • Modified to use current SDSS centroiding code and to be tolerant of nonfatal centroiding errors
  • Modified to yield time to background processes and allow quitting during exposures

3.0b19, 6/1/99

  • Changed # of images in ring buffer from 20 to 1000

3.0b18 4/8/99

  • Fixed gcam_initCamera to handle the Echelle SenSys camera better (gain was not being properly set)

3.0b17, 12/14/98

  • Added an extra setting for Echelle SenSys camera "Sensys2"

Changes in versions 3.0b12 - 3.0b16 were not recorded

3.0b11, 8/19/97

(note: 3.0b10 was never released)

  • Documentation enhanced to describe the output of centroid better. R.O. 11/25/97
  • Documentation enhanced to describe the x,y coordinate system better. 11/6/97.
  • Fixed star position output: the comment didn't have a space before it.
  • Fixed log window findstars error reporting; when a raw star cannot be centroided the failure code is now displayed.
  • Fixed a problem with box size and sky determination in centroid by putting a floor on the box size.
  • Changed the output of showiminfo so that binning data comes first, thus matching the order of command parameters.

3.0b9, 8/11/97 (created 8/18/97)

This version number and date were used for two releases (oops). These notes refer to the later release, which was built 8/18/97.

  • Docentroid failed due to the image being too small when PredFWHM = 1. Fixed by putting a floor of 15 pixels on the image size. The automatic image size calculation should now work for all valid PredFWHM (though the centroid routine still cannot handle large PredFWHM due to speed optimizations we neither need nor want).
  • When the centroid portion of docentroid failed, the doread output of docentroid would be returned with the next command, whatever it might be. This was because the reply stream was not getting flushed if the parser threw an exception. Two fixes were applied:
    • The reply stream is now flushed if an exception is thrown
    • The parser now returns the usual sort of command error messages in the reply stream itself and only throws an exception if a nasty unrecoverable error occurs. The main routine still attempts to recover from all errors, but such recovery used to be the normal mechanism for handling parsing errors and now is a last-ditch effort to stay alive. This is arguably a more reasonable use of exception handling.
  • As a result of the error handling improvement, compound commands such as docentroid now return intermediate results, even if an error occurs in a later portion. At the moment this only affects docentroid

3.0b5-3.0b8

  • Short lived versions with various bug fixes that were not documented (sigh).

3.0b4, 4/7/97

  • Removed the setPredFWHM command.
  • Added xPredFWHM yPredFWHM arguments to centroid and findstars commands.

3.0b3, 4/4/97

  • Removed code that worked around bugs in CodeWarrior 10's string and stream handling. Those bugs were fixed in CodeWarrior 11!

3.0b2, 3/31/97

  • Added support for Photometrics cameras. Removed support for SpectraSores cameras.
  • Changed centroiding algorithm to that used by the SDSS.
  • Removed "expose", "flush", "read" commands; all replaced by "doread".
  • Changed format of all status replies, mostly adding new information.
  • Compiled using Metrowerks CodeWarrior 11.

2.0, ?/?/96

This version was developed by Jeff Morgan, but the manuals were apparently never updated. Changes include:

  • An new star finding algorithm that is much more sensitive.
  • Improvements to the centroiding routine to make it more robust.
  • Implemented FITS file I/O
  • Replaced "setthresh" with "setboxsize" and "setpredfwhm".

1.1, 7/25/95

  • Added overscan versions of both cameras (SpectraSource HPC-1 TK1024 and TK512)
  • Note that to properly support the TK512 camera, this software must be rebuilt using the TK512 run-time library. This is new as of the 512 camera repair. The symptoms are: a 28-pixel wide overscan region in normal 512x512 frames, and high noise.
  • Note that CameraMPP may or may not need to be called in gim_image_initCamera for the TK512 camera; this won't be clear until we have the proper RTL. Meanwhile, I have assumed that it will not need to be called.

1.0b11.x, 3/17/95

  • Attempted to emulate CameraDigitizeArea, with no success. More careful testing is see whether the direct copy can be made to work like the original when no binning occurs. Use 1.0b9 instead!

1.0b10, 3/17/95

  • Same as 1.0b10 but took out bin factor multipliers on xOffset, width, yOffset, height arguments to CameraDigitizeArea -- an experiment in binning. The results should tell me how to write my own version that does what I want. Use 1.0b9, instead!

1.0b9, 3/17/95

  • Same as 1.0b8 but with CameraMPP called with TRUE instead of FALSE. This did the trick -- biases finally look normal.

1.0b8, 3/17/95

  • Modified to use the 3/95 RTL again.
  • Kurt of SpectraSource says the camera can be switched into a high gain/high bias mode, as opposed to the normal (low) gain and bias mode. He suspects that high gain is probably the default in the 3/95 RTL, which would explain the 10k count bias we were seeing. So at his recommendation I added a call to CameraMPP (which switches the gain, despite the name) calling it with FALSE. Note that I had to add the prototype for CameraMPP to the header file "camera.h".

1.0b7, 3/17/95

  • Changed the expose command to use CameraExpose as the timer, since my own timer routine was crashing.
  • Removed doRead, doFindstars; the TCC does these jobs better
  • Changed the output of showimage to show the size of the image rather than the maximum coordinate -- size is more useful when viewing the images
  • Added display of median and standard deviation to the output of findstars.
  • Bug fix: flush was ignoring its argument
  • setCamera now flushes once instead of 5 times (flushing takes 1 sec).

1.0b5? 6?, 3/15/95 if 5

  • Added the argument nFlushes to flush.
  • Added the command DoRead.
  • Deleted the command DoCentroid.
  • DoFindStars now flushes, in addition to the other operations.
  • Changed the Expose command again, back to the 1.0b3 method (but with my own timer routine, since the one I was using had an upper limit of 65 seconds), in hopes it may eliminate the 10k bias counts we're seeing. If it doesn't, it's the new RTL and not the expose method causing the problem.

1.0b4, 3/13/95

  • Switched to the 3/2/95 version of the SpectraSource HPC-1 run-time library (HPC-1 RTL).
  • Started using the Expose command for the HPC-1 camera, exposing the shutter exactly as shown in the manual -- bizarre as it looks (it's not at all clear what the damn command is doing).
  • Using Expose to do the timing may permit longer exposures. I was calling DelayMS from the HPC-1 RTL, which takes a 16-bit unsigned integer, limiting it to a bit over a minute. The SpectraSource HPC-1 RTL is awful.
  • Removed the default exposure time.
  • Stopped loadbin from clearing the camera info. Loadbin is only intended for debugging, and clearing the camera info prevents star finding.

1.0b3, 11/21/94

First release, by Russell Owen.


Russell Owen, Bruce Truax