Progress has been slow but steady here in Cincinnati. I have my acquisition program nearly ready for use by anyone who's willing to run Windows 98 or ME and also willing to live with less than complete code.
The system I've been developing has several advantages that I beleive make it worthwhile.
All that needs to be done now is to add some dialogs to set the localization items such as latitude, longitude, altitude, site characters, telescope, etc. All these items are already parameterized, I just need to copy the dialogs from an old system so it should be ready by next weekend.
The scripting items run the system at a higher level than Michael's does so it doesn't provide direct support for things like the DAC's those all of those will be programmable through the above mentioned dialogs. The scripting supports the following objects:
DecControl - controls the dec motor and the clamp motor RAControl - controls the ra motor and provides ra and ha values ImageControl - controls the CCD, shutters, memory card and file io
Each of these objects have both properties and methods. The properties give you information about the system while the methods control what the system does. Each of the properties and methods are listed below.
RAControl.HA - property giving the current hour angle in degrees RAControl.RA - property giving the current right ascension in degrees RAControl.TurnRAOn() - method that turns the ra motor on RAControl.TurnRAOff() - method that turns the ra motor off RAControl.FastForward() - method that sets the ra motor in fast forward RAControl.Rewind() - method that sets the ra motor in rewind RAControl.MoveToLimit() - method that moves the ra motor to the limit shitch then turns it off RAControl.MoveToRA(double ra) - method that moves the mo0unt to a specific ra if possible RAControl.MoveToHA(double ha) - method that moves the mo0unt to a specific ha if possible DecControl.Dec - property giving the declination angle in degrees DecControl.IsClamped - true if the dec is clamped DecControl.MoveToDec(double dec) - unclamps, moves the mount to a specific dec if possible, then clamps DecControl.MoveToLimit() - unclamps, moves the mount to the dec limit switch, then clamps DecControl.ClampOn() - clamps the dec axis DecControl.ClampOff() - unclamps the dec axis DecControl.Park() - moves to the limit switch then down to level DecControl.Unpark() - moves up from level then down to limit switch ImageControl.ClearCCD() - clears the ccd ImageControl.SaveImages() - saves the contents of the memory card to files ImageControl.ReadCCD() - reads the ccd into the memory card ImageControl.TakeBiasExposure() - takes a bias exposure ImageControl.TakeDarkExposure(double exposureLength) - takes a dark exposure ImageControl.TakeFlatExposure(double exposureLength) - takes a flat exposure ImageControl.TakeObjectExposure(double exposureLength) - takes an object exposure
With these controls you can write programs to control the camera for as long as you want.
For example the following vbscript program takes clears the ccd, takes a 10 second dark exposure, reads the dark image into the ccd, takes a 10 second image exposure while the dark image is being saved then reads the object exposure and saves it to disk.
ImageControl.ClearCCD ImageControl.TakeDarkExposure 10.0 ImageControl.ReadCCD ImageControl.SaveImages ImageControl.TakeObjectExposure 10.0 ImageControl.ReadCCD ImageControl.SaveImages
The program is smart enough to know that the TakeExposure and SaveImages can be run in parallel. In fact the following program does the same thing as the above program.
ImageControl.ClearCCD ImageControl.TakeDarkExposure 10.0 ImageControl.ReadCCD ImageControl.TakeObjectExposure 10.0 ImageControl.SaveImages ImageControl.ReadCCD ImageControl.SaveImages
Since the program is vbscript you have access to all the flow control. The program below will follow a field across the sky until we reach a limit in the hour angle.
RAControl.MoveToLimit RAControl.TurnRAOn ImageControl.ClearCCD while RAControl.RA < 10.0 ImageControl.TakeObjectExposure 60.0 ImageControl.ReadCCD ImageControl.SaveImages wend
Again the program is smart enough to parallel the save images of the n'th pass with the exposure of the n'th + 1 image. This makes it unnecessary to clear the ccd before each exposure since the previous exposure's read already did the task.
I will make the code for all this available by next weekend. Any suggestions, comments, etc. are appreciated.