Camera/Detector Standard Comments
- Doug has posted aproposed camera/detector interface and filter wheel
interface standards. My comments:
(1) Call it "Detector" not "CCDCamera" - this is in keeping with the
professionals' terminology (images are called data, e.g.). There is a
rising interest in ASCOM among professionals, and we should try to be
consistent so they are comfortable with our level of professionalism.
(2) Change CameraXSize and CameraYSize to XSize/YSize or maybe even Rows
(3) Add Name and Description properties similar to those used in Telescope.
(4) Change XYBinning to CanXYBin. The former sounds like a property with a
value that can be set, like XYBinning = 2. Anyway it has a
CanSetTemperature so CanXYBin is consistent.
(5) *VITAL* It needs an asynchronous image download capability similar to
the way MaxIm can set AutoDownload to False then test for ImageReady and
download the image when desired. This is vital to achieving, for example,
overlapping slew and image download, an important capability.
(6) Add a SetFullFrame() method, which will un-subframe. The alternative is
to set the sub-frame to the full frame size one axis at a time. See next
section for related ideas.
(7) Revisit StartX/StartY/NumX/NumY names and functionality. I am not sure
reading back those values is that necessary. The names are not mnemonic.
Perhaps SubframeOriginX or SubFrameLeft, SubframeOriginY or SubFrameTop,
SubframeWidth, SubframeHeight. But another idea is to have a SetSubframe()
(as opposed to SetFullFrame()) that takes 4 arguments Left, Top, Width,
Height. Yet another idea would be to define a Subframe or Rectangle object
as part of the standard. This would be used in lieu of 4 separate numbers
for the subframing functionality. You could say Set x =
Detector.NewSubframe(Left, Top, Width, Height). If the dimension parameters
were missing, it would create a full-frame Subframe. Its properties would
be Left, Top, Width and Height. It could have a SetFullFrame() method
(replacing (6) above), though this might be a bit over the top. You'd have
to create a Subframe then use it to set the detector's frame to full. You
could make several of these Subframe objects and keep them around. Then
implement a Detector.Subframe -property- that takes a Subframe object as
its value, and returns a new one (that you could keep and re-use later)
when queried. Anyway, you get the idea.
(8) Should there be a way to enumerate the legal binning values? I didn't
see, for example, a way to tell if the detector is restricted to power of
two binning levels. This might be a little cleaner than having the client
scan and catch thrown errors as a way to enumerate the legal binning
calues. A collection of legal binning values would be one way to do it.
(9) The Setup dialog should always be there. At a minimum, it should
display an ASCOM logo and show the camera type and version of the driver.
Let's hash this one out and get it on the track towards a standard!!!