kstars
ApnCamera.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00012
00013 #if !defined(AFX_APNCAMERA_H__CF513996_359F_4103_BBA6_2C730AE2C301__INCLUDED_)
00014 #define AFX_APNCAMERA_H__CF513996_359F_4103_BBA6_2C730AE2C301__INCLUDED_
00015
00016 #include "Apogee.h"
00017 #include "Apn.h"
00018 #include "FpgaRegs.h"
00019
00020 #include "ApnCamData.h"
00021 #include "ApnCamData_CCD3011HS.h"
00022 #include "ApnCamData_CCD3011LS.h"
00023 #include "ApnCamData_CCD4240HS.h"
00024 #include "ApnCamData_CCD4240LS.h"
00025 #include "ApnCamData_CCD4710HS.h"
00026 #include "ApnCamData_CCD4710LS.h"
00027 #include "ApnCamData_CCD4720HS.h"
00028 #include "ApnCamData_CCD4720LS.h"
00029 #include "ApnCamData_CCD5520HS.h"
00030 #include "ApnCamData_CCD5520LS.h"
00031 #include "ApnCamData_CCD5710HS.h"
00032 #include "ApnCamData_CCD5710LS.h"
00033 #include "ApnCamData_CCD7700HS.h"
00034 #include "ApnCamData_CCD7700LS.h"
00035 #include "ApnCamData_KAF0261E.h"
00036 #include "ApnCamData_KAF0401E.h"
00037 #include "ApnCamData_KAF1001E.h"
00038 #include "ApnCamData_KAF1301E.h"
00039 #include "ApnCamData_KAF1401E.h"
00040 #include "ApnCamData_KAF1602E.h"
00041 #include "ApnCamData_KAF16801E.h"
00042 #include "ApnCamData_KAF3200E.h"
00043 #include "ApnCamData_KAF4202.h"
00044 #include "ApnCamData_KAF6303E.h"
00045 #include "ApnCamData_TH7899.h"
00046
00047 #include "ApnCamData_CCD4710LS2.h"
00048 #include "ApnCamData_CCD4710LS3.h"
00049 #include "ApnCamData_CCD4710LS4.h"
00050 #include "ApnCamData_CCD4710LS5.h"
00051
00052
00053 class CApnCamera
00054 {
00055 public:
00056 CApnCamera();
00057 ~CApnCamera();
00058
00059 bool InitDriver( unsigned long CamIdA,
00060 unsigned short CamIdB,
00061 unsigned long Option );
00062
00063 bool CloseDriver();
00064 long PreStartExpose( unsigned short BitsPerPixel );
00065 long PostStopExposure( bool DigitizeData );
00066
00067 bool GetImageData( unsigned short *pImageData,
00068 unsigned short &Width,
00069 unsigned short &Height,
00070 unsigned long &Count );
00071
00072 bool GetLineData( unsigned short *pLineBuffer,
00073 unsigned short &Size );
00074
00075 long Read( unsigned short reg, unsigned short& val );
00076 long Write( unsigned short reg, unsigned short val );
00077
00078 long WriteMultiSRMD( unsigned short reg,
00079 unsigned short val[],
00080 unsigned short count );
00081
00082 long WriteMultiMRMD( unsigned short reg[],
00083 unsigned short val[],
00084 unsigned short count );
00085
00086 long QueryStatusRegs( unsigned short& StatusReg,
00087 unsigned short& HeatsinkTempReg,
00088 unsigned short& CcdTempReg,
00089 unsigned short& CoolerDriveReg,
00090 unsigned short& VoltageReg,
00091 unsigned short& TdiCounter,
00092 unsigned short& SequenceCounter );
00093
00094 void SetNetworkTransferMode( Apn_NetworkMode TransferMode );
00095
00096 long InitDefaults();
00097
00098 bool Expose( double Duration, bool Light );
00099 bool BufferImage(char *bufferName );
00100 bool BufferDriftScan(char *bufferName, int delay, int rowCount, int nblock , int npipe);
00101
00102 bool StopExposure( bool DigitizeData );
00103
00104 bool ResetSystem();
00105 bool PauseTimer( bool PauseState );
00106
00107
00108 unsigned short GetExposurePixelsH();
00109 unsigned short GetExposurePixelsV();
00110
00111 bool read_Present();
00112 unsigned short read_FirmwareVersion();
00113
00114 bool read_ShutterState();
00115 bool read_DisableShutter();
00116 void write_DisableShutter( bool DisableShutter );
00117 bool read_ForceShutterOpen();
00118 void write_ForceShutterOpen( bool ForceShutterOpen );
00119 bool read_ShutterAmpControl();
00120 void write_ShutterAmpControl( bool ShutterAmpControl );
00121
00122 bool read_ExternalIoReadout();
00123 void write_ExternalIoReadout( bool ExternalIoReadout );
00124 bool read_FastSequence();
00125 void write_FastSequence( bool FastSequence );
00126
00127 Apn_CameraMode read_CameraMode();
00128 void write_CameraMode( Apn_CameraMode CameraMode );
00129
00130 void write_DataBits( Apn_Resolution BitResolution );
00131
00132 Apn_Status read_ImagingStatus();
00133
00134 Apn_LedMode read_LedMode();
00135 void write_LedMode( Apn_LedMode LedMode );
00136 Apn_LedState read_LedState( unsigned short LedId );
00137 void write_LedState( unsigned short LedId, Apn_LedState LedState );
00138
00139 bool read_CoolerEnable();
00140 void write_CoolerEnable( bool CoolerEnable );
00141 Apn_CoolerStatus read_CoolerStatus();
00142 double read_CoolerSetPoint();
00143 void write_CoolerSetPoint( double SetPoint );
00144 double read_CoolerBackoffPoint();
00145 void write_CoolerBackoffPoint( double BackoffPoint );
00146 double read_CoolerDrive();
00147 double read_TempCCD();
00148 double read_TempHeatsink();
00149 Apn_FanMode read_FanMode();
00150 void write_FanMode( Apn_FanMode FanMode );
00151
00152 void write_RoiBinningH( unsigned short BinningH );
00153 void write_RoiBinningV( unsigned short BinningV );
00154
00155 void write_RoiPixelsV( unsigned short PixelsV );
00156
00157 void write_RoiStartY( unsigned short StartY );
00158
00159 unsigned short read_MaxBinningV();
00160 unsigned short read_OverscanColumns();
00161
00162 double read_ShutterStrobePosition();
00163 void write_ShutterStrobePosition( double Position );
00164 double read_ShutterStrobePeriod();
00165 void write_ShutterStrobePeriod( double Period );
00166
00167 double read_SequenceDelay();
00168 void write_SequenceDelay( double Delay );
00169 bool read_VariableSequenceDelay();
00170 void write_VariableSequenceDelay( bool VariableSequenceDelay );
00171 unsigned short read_ImageCount();
00172 void write_ImageCount( unsigned short Count );
00173
00174 unsigned short read_SequenceCounter();
00175 unsigned short read_TDICounter();
00176 unsigned short read_TDIRows();
00177 void write_TDIRows( unsigned short TdiRows );
00178 double read_TDIRate();
00179 void write_TDIRate( double TdiRate );
00180 unsigned short read_IoPortAssignment();
00181 void write_IoPortAssignment( unsigned short IoPortAssignment );
00182 unsigned short read_IoPortDirection();
00183 void write_IoPortDirection( unsigned short IoPortDirection );
00184 unsigned short read_IoPortData();
00185 void write_IoPortData( unsigned short IoPortData );
00186
00187 unsigned short read_TwelveBitGain();
00188 void write_TwelveBitGain( unsigned short TwelveBitGain );
00189
00190 double read_InputVoltage();
00191 long read_AvailableMemory();
00192
00193 double read_MaxExposureTime();
00194
00195 Apn_NetworkMode read_NetworkTransferMode();
00196 void write_NetworkTransferMode( Apn_NetworkMode TransferMode );
00197
00198 double read_TestLedBrightness();
00199 void write_TestLedBrightness( double TestLedBrightness );
00200
00201
00202
00203 bool ImageReady();
00204 void SignalImagingDone();
00205
00206
00207
00208 Apn_Interface m_CameraInterface;
00209
00210 CApnCamData *m_ApnSensorInfo;
00211
00212 unsigned short m_RoiStartX, m_RoiStartY;
00213 unsigned short m_RoiPixelsH, m_RoiPixelsV;
00214 unsigned short m_RoiBinningH, m_RoiBinningV;
00215
00216 bool m_DigitizeOverscan;
00217 Apn_Resolution m_DataBits;
00218
00219
00220
00221
00222 long LoadVerticalPattern();
00223 long LoadClampPattern();
00224 long LoadSkipPattern();
00225 long LoadRoiPattern( unsigned short Binning );
00226
00227 long WriteHorizontalPattern( APN_HPATTERN_FILE *Pattern,
00228 unsigned short reg,
00229 unsigned short binning );
00230
00231 long InitTwelveBitAD();
00232 long WriteTwelveBitOffset();
00233
00234 void UpdateGeneralStatus();
00235
00236
00237 bool m_ResetVerticalArrays;
00238
00239
00240 Apn_CameraMode m_pvtCameraMode;
00241
00242 Apn_NetworkMode m_pvtNetworkTransferMode;
00243
00244 unsigned short m_pvtImageCount;
00245 unsigned short m_pvtTDIRows;
00246 double m_pvtTDIRate;
00247
00248 double m_pvtSequenceDelay;
00249 double m_pvtShutterStrobePosition;
00250 double m_pvtShutterStrobePeriod;
00251
00252 unsigned short m_pvtExposurePixelsH, m_pvtExposurePixelsV;
00253
00254 unsigned short m_pvtTwelveBitGain;
00255
00256 Apn_LedMode m_pvtLedMode;
00257 Apn_LedState m_pvtLedStateA;
00258 Apn_LedState m_pvtLedStateB;
00259
00260 double m_pvtTestLedBrightness;
00261
00262 bool m_pvtCoolerEnable;
00263 Apn_FanMode m_pvtFanMode;
00264
00265 double m_pvtCoolerBackoffPoint;
00266
00267 Apn_CoolerStatus m_pvtCoolerStatus;
00268 Apn_Status m_pvtImagingStatus;
00269 bool m_pvtShutterState;
00270 bool m_pvtImageInProgress;
00271 bool m_pvtImageReady;
00272
00273 unsigned short m_pvtStatusReg;
00274
00275 double m_pvtCoolerDrive;
00276 double m_pvtCurrentHeatsinkTemp;
00277 double m_pvtCurrentCcdTemp;
00278
00279 double m_pvtInputVoltage;
00280 unsigned short m_pvtIoPortAssignment;
00281 unsigned short m_pvtIoPortDirection;
00282
00283
00284 unsigned short m_pvtBitsPerPixel;
00285 unsigned short m_pvtWidth;
00286 unsigned short m_pvtHeight;
00287
00288
00289
00290 bool sensorInfo();
00291 char m_Sensor[20];
00292 char m_CameraModel[20];
00293 unsigned short m_CameraId;
00294 bool m_InterlineCCD;
00295 bool m_SupportsSerialA;
00296 bool m_SupportsSerialB;
00297 bool m_SensorTypeCCD;
00298 unsigned short m_TotalColumns;
00299 unsigned short m_ImagingColumns;
00300 unsigned short m_ClampColumns;
00301 unsigned short m_PreRoiSkipColumns;
00302 unsigned short m_PostRoiSkipColumns;
00303 unsigned short m_OverscanColumns;
00304 unsigned short m_TotalRows;
00305 unsigned short m_ImagingRows;
00306 unsigned short m_UnderscanRows;
00307 unsigned short m_OverscanRows;
00308 unsigned short m_VFlushBinning;
00309 bool m_HFlushDisable;
00310 unsigned short m_ShutterCloseDelay;
00311 double m_PixelSizeX;
00312 double m_PixelSizeY;
00313 bool m_Color;
00314
00315 double m_ReportedGainSixteenBit;
00316 double m_MinSuggestedExpTime;
00317
00318 unsigned short m_TempRampRateOne;
00319 unsigned short m_TempRampRateTwo;
00320 unsigned short m_DefaultGainTwelveBit;
00321 unsigned short m_DefaultOffsetTwelveBit;
00322 unsigned short m_DefaultRVoltage;
00323
00324 };
00325
00326 #endif // !defined(AFX_APNCAMERA_H__CF513996_359F_4103_BBA6_2C730AE2C301__INCLUDED_)
00327
00328
00329
00330
00331
00332