Artemis SDK. Copyright Artemis CCD Limited October 2011 Version

Similar documents
SDK-S User Manual K-21-A ( ) 1 Copyright 2013 B&W Tek, Inc.

SBIG ASTRONOMICAL INSTRUMENTS

SCD - Scorpion Camera Drivers Specification Documentation

.NET Wrapper SDK Descriptor

V.I.R.U.S. API User Manual. Version 3.0

SpiNNaker Application Programming Interface (API)

ArduCAM USB Camera C/C++ SDK

/14/14 Fixed an issue with tm_waitnextframe when setting an exposure greater than 5 seconds.

Test Applet. User Documentation. FrameGrabberTest for microenable 5 AQ8-CXP6B

AFRecorder 4800R Serial Port Programming Interface Description For Software Version 9.5 (Last Revision )

Test Applet. User Documentation. FrameGrabberTest for microenable 5 marathon AF2

VueMetrix Firmware Uploader

CLD BF70x CDC Library v.1.3 Users Guide Users Guide Revision 1.3. For Use With Analog Devices ADSP-BF70x Series Processors. Closed Loop Design, LLC

DCAMAPI Library for LabVIEW

ArduCAM USB Camera SDK

CLD SC58x CDC Library v.1.00 Users Guide Users Guide Revision For Use With Analog Devices ADSP-SC58x Series Processors. Closed Loop Design, LLC

ArduCAM USB Camera SDK

Motor Objects. Methods

PusleIR Multitouch Screen Software SDK Specification. Revision 4.0

USB Interrupt Transfer Example PSoC 3 / PSoC 5

AUTO FOCUS MODULE CUSTOM CAMERAS FOR MASS PRODUCTION APPLICATIONS USER GUIDE

#include <tobii/tobii.h> char const* tobii_error_message( tobii_error_t error );

SIMATIC Industrial software Readme SIMATIC S7-PLCSIM Advanced V2.0 SP1 Readme

NOVEMBER 19, 2018 FLI KELPER SCMOS CAMERA ASCOM DRIVERS PETER OLEYNIKOV

PDF Document structure, that need for managing of PDF file. It uses in all functions from EMF2PDF SDK.

Future Technology Devices International Ltd. Application Note AN_172. Vinculum-II. Using the USB Slave Driver

int result; int waitstat; int stat = PmcaAsyncGetGain(&result); // stat receives request id

Introduction to the Artemis CCD Camera. Steve Chambers and Jon Grove.

Visual Profiler. User Guide

½ Caution! Introduction. Blind.switch 5701/1.0

ARC API User Manual. Version 3.0

pco.software development kit

DGILib USER GUIDE Atmel-42771A-DGILib_User Guide-09/2016

ADWGC C library User's Guide Revision February /20

Nubotics Device Interface DLL

RoboRemo User Manual v1.9.1

Airence C Library v1.2 for Windows

OEM API Specification

5X80 Series. Software Development Kit (SDK) for 5080, 5180, and 5380 Decoded Miniature Image Scan Engines. User s Guide

AET60 BioCARDKey. Application Programming Interface. Subject to change without prior notice

OptimiData. JPEG2000 Software Development Kit for C/C++ Reference Manual. Version 1.6. from

The NGT30 is an easy to use, 5v compatible propeller graphics device. It communicates simply with UART communication.

Lumio Release Note Lumio Multi-Touch Communication Protocol

HumidiProbe User Guide

AET60 API version 1.4 February Introduction...3 Features...3 Application Programming Interface...4

OSPREY Instruction Manual

USB BF70x Bulk Library v.1.1 Users Guide Users Guide Revision 1.1. For Use With Analog Devices ADSP-BF70x Series Processors. Closed Loop Design, LLC

cctalk Product Manual for Ardac Elite

Read section 8 of this document for detailed instructions on how to use this interface spec with LibUSB For OSX

HumidiProbe. Temperature and Humidity Sensor. User's Guide. humidiprobe.en r7 Copyright Pico Technology Limited. All rights reserved.

EZ-Red Power I/O module for PC See for other manuals

NVJPEG. DA _v0.2.0 October nvjpeg Libary Guide

EL6483: Brief Overview of C Programming Language

USB BF70x HID Library v.1.1 Users Guide Users Guide Revision 1.1. For Use With Analog Devices ADSP-BF70x Series Processors. Closed Loop Design, LLC

Construction of the unpopulated basic PCB kit. S Chambers and J Grove

VIP-102B IP Solutions Setup Tool Reference Manual

NEXCOM. MiniPCIe NISK-NVRAM Library User Manual. Manual Rev.: V0.4

Quantum Random Number Generator QRNG

libquadflash API 1 General Operations

C4 - Application Note. AutoStart. Rev 1.0. AT - Automation Technology GmbH

HART USER GUIDE FOR GASSONIC OBSERVER-H ULTRASONIC GAS LEAK DETECTOR

Control & Interface Electronics. CCD Sensor

Table of Contents. Getting Started. Automation Technology

PSK Propagation Reporter DLL Documentation 2013-Mar-10 Philip Gladstone

Venstar Thermostat Adapter

I Introduction to Real-time Applications By Prawat Nagvajara

Coyote. Software Guide

I3000 User s Guide Revision: V1.20 Date: st 22 st

Model IR4000M. HART Field Device Specification Multi-Point Monitor. Instruction Manual 07-08

ANPR ACCESS ANPR ACCESS HD

An overview of how to write your function and fill out the FUNCTIONINFO structure. Allocating and freeing memory.

[CAMERA PROGRAMMER'S MANUAL] EMERGENT VISION TECHNOLOGIES INC March 3, 2013

Ventana Data Sheet. Description

PHYTEC-USB-CAM Series communication protocol

Week 3 Lecture 2. Types Constants and Variables

Call DLL from Limnor Applications

Revision: 09/21/ East Main Pullman, WA (509) Voice and Fax

111 Highland Drive Putnam, CT USA PHONE (860) FAX (860) SM32Pro SDK

General API Concepts. Introduction CHAPTER

Multicast Dissemination Protocol (MDP) Developer's Guide

USB BF70x Audio 1.0 Library v.1.2 Users Guide Users Guide Revision 1.3. For Use With Analog Devices ADSP-BF70x Series Processors

Pointers, Dynamic Data, and Reference Types

Introduction. Overview

robotics/ openel.h File Reference Macros Macro Definition Documentation Typedefs Functions

IO-Warrior Dynamic Library V1.5 for Windows

Artemis Focuser User Guide. S Chambers

Wireless M-Bus Host Controller Interface DLL

MyroC. MyroC.3.1b. Generated by Doxygen Tue Feb :24:21

WiFi Counter/Temperature Transmitter

USB Dynamic Industrial Interface V A Universal Application Programming Interface To Data Acquisition Products Users Manual

Communication Protocol Manual JOFRA ATC Copyright 2007 AMETEK Denmark A/S

Modbus/TCP NETIO M2M API protocols docs

Arduino Uno. Power & Interface. Arduino Part 1. Introductory Medical Device Prototyping. Digital I/O Pins. Reset Button. USB Interface.

STD_CU43USBSW_V1.0E. CUnet (MKY43) USB Unit. CU-43USB Software Manual

Generalised User Interface for Embedded Applications using an LCD screen and keypad.

Communications API. TEAM A : Communications and Integration Group. April 15, 1995

USB-910H API DLL and Include File Reference Manual

2G Actuator Communications Protocol Document Rotary & Linear Actuators

UNIVERSITY OF HAWAII AT MANOA Institute for Astrononmy

AVT PvAPI. Programmers Reference Manual. Version 1.24 November 22, 2010

Transcription:

Artemis SDK Copyright Artemis CCD Limited October 2011 Version 3.55.0.0

Introduction The Artemis Software Development Kit (SDK) provides easy access to the functions in the Artemis camera driver DLL. Using the SDK is much more straightforward than managing the low-level USB communication, and has the added benefit of protecting applications from any future changes to the low-level protocol, as well as providing a common software interface to a range of different camera types. Installation Installation of the SDK is simply a matter of running the installer program, ArtemisSDK.exe. The installation includes the SDK itself and a sample application, Snapshot, which is a very simple image capture program. Software environment The Artemis library and SDK were developed using Microsoft Visual C/C++ V6.0. Provided that the relevant calling conventions are adhered to, it should be possible to use the SDK with other versions of C/C++, and it should also be possible to adapt the SDK for use with other languages such as Visual Basic if necessary - however a VB interface is not part of this SDK.

Basic Principles 1. Connection to driver Since there is an essentially common interface to a number of cameras in the Artemis range, the first thing an application has to do is to select the DLL it is to use. For the standard Artemis cameras, this is ArtemisHSC.dll and so the SDK has to be connected to the driver using the call: ArtemisLoadDLL("ArtemisHSC.dll"); For the USB1 cameras the relevant dll is loaded using: ArtemisLoadDLL("ArtemisCCD.dll"); This will return TRUE if successful, or FALSE if the DLL (or a DLL which it requires) cannot be loaded. At the end of the session it is good practice, although not essential, to disconnect from the driver using: ArtemisUnLoadDLL( ); 2. Connection to camera Once the driver is selected, you must choose which camera to connect to. Each driver can potentially communicate with multiple cameras of the same type, each of which is given an index number when it is connected to the USB. The index number is not necessarily the same as the order in which the devices are connected. To connect to a camera, use the function ArtemisConnect(int Device); which returns a handle that must be used in all subsequent communication with the camera. The Device number can be a positive integer if you know the index number of the camera you are connecting to, or it can be -1 to connect to the first available camera. 3. Taking an exposure With the connection established you can interrogate the camera to discover its sensor dimensions, or simply trigger an exposure which will default to full-frame. While the exposure is in progress you can query the camera's status, which will indicate whether the camera is exposing, downloading, idle, etc. During the download you can ask how much of the image has been received. Finally you can retrieve the downloaded image for display, saving, processing, etc. 4. Colour information If the camera is programmed with colour information then this can be retrieved using the function ArtemisColourProperties, which always returns ARTEMIS_OK: int ArtemisColourProperties( ArtemisHandle hcam, ARTEMISCOLOURTYPE *colourtype, int *normaloffsetx, int *normaloffsety, int *previewoffsetx, int *previewoffsety); The function returns two sets of bayer offsets, one for imaging with preview mode disabled (normaloffsetx and normaloffsety) and one for imaging with preview mode enabled (previewoffsetx and previewoffsety), since in general the bayer offsets are different for the two imaging modes. The offsets are the pixel (x,y) coordinates of that red filter array element which is closest to (0,0), and they are guaranteed to be always either 0 or 1. The offsets are only changed if the return value of *colourtype is ARTEMIS_COLOUR_RGGB (see the definition of ARTEMISCOLOURTYPE below).

5. Shutter control There is no function for opening and closing the shutter, but the API provides a means to keep the shutter closed for dark frames. The function ArtemisSetDarkMode (see below) enables/disables dark mode, ie the mode in which the shutter is to be kept closed during exposures, and the function ArtemisGetDarkMode can be used to determine whether or not dark mode is enabled. Additionally, the cameraflags parameter in the ARTEMISPROPERTIES structure which is returned by the ArtemisProperties function indicates whether or not the camera has a mechanical shutter (see the definition of ARTEMISPROPERTIESCAMERAFLAGS below).

Definitions There follows a list of definitions and functions included in the SDK, with a brief description of each one and its parameters. Prototypes and definitions for the functions can be found in the files ArtemisHSCAPI.h and.cpp (or in the files ArtemisCCDAPI.h and.cpp for the USB1 cameras). Error codes returned by various functions: enum ARTEMISERROR ARTEMIS_OK = 0, ARTEMIS_INVALID_PARAMETER, ARTEMIS_NOT_CONNECTED, ARTEMIS_NOT_IMPLEMENTED, ARTEMIS_NO_RESPONSE, ARTEMIS_INVALID_FUNCTION, Other enumerated types enum ARTEMISCOLOURTYPE ARTEMIS_COLOUR_UNKNOWN = 0, ARTEMIS_COLOUR_NONE, ARTEMIS_COLOUR_RGGB enum ARTEMISPRECHARGEMODE PRECHARGE_NONE = 0, PRECHARGE_ICPS, PRECHARGE_FULL, // Precharge ignored // In-camera precharge subtraction // Precharge sent with image data enum ARTEMISPROPERTIESCCDFLAGS ARTEMIS_PROPERTIES_CCDFLAGS_INTERLACED =1, // CCD is interlaced type ARTEMIS_PROPERTIES_CCDFLAGS_DUMMY=0x7FFFFFFF // force size to 4 bytes enum ARTEMISPROPERTIESCAMERAFLAGS // Camera has readout FIFO fitted ARTEMIS_PROPERTIES_CAMERAFLAGS_FIFO =1, // Camera has external trigger capabilities ARTEMIS_PROPERTIES_CAMERAFLAGS_EXT_TRIGGER =2, // Camera can return preview data ARTEMIS_PROPERTIES_CAMERAFLAGS_PREVIEW =4, // Camera can return subsampled data ARTEMIS_PROPERTIES_CAMERAFLAGS_SUBSAMPLE =8, // Camera has a mechanical shutter ARTEMIS_PROPERTIES_CAMERAFLAGS_HAS_SHUTTER =16, // Camera has a guide port ARTEMIS_PROPERTIES_CAMERAFLAGS_HAS_GUIDE_PORT =32, // Camera has GPIO capability ARTEMIS_PROPERTIES_CAMERAFLAGS_HAS_GPIO =64, // force size to 4 bytes ARTEMIS_PROPERTIES_CAMERAFLAGS_DUMMY=0x7FFFFFFF

enum ARTEMISCAMERASTATE CAMERA_ERROR = -1, CAMERA_IDLE = 0, CAMERA_WAITING, CAMERA_EXPOSING, CAMERA_READING, CAMERA_DOWNLOADING, CAMERA_FLUSHING, Parameters for ArtemisSendMessage enum ARTEMISSENDMSG ARTEMIS_LE_LOW =0, ARTEMIS_LE_HIGH =1, ARTEMIS_GUIDE_NORTH =10, ARTEMIS_GUIDE_SOUTH =11, ARTEMIS_GUIDE_EAST =12, ARTEMIS_GUIDE_WEST =13, ARTEMIS_GUIDE_STOP =14, Parameters for ArtemisGet/SetProcessing enum ARTEMISPROCESSING ARTEMIS_PROCESS_LINEARISE ARTEMIS_PROCESS_VBE =1,// compensate for JFET nonlinearity =2,// adjust for 'Venetian Blind effect' camera/ccd properties struct ARTEMISPROPERTIES int Protocol; int npixelsx; int npixelsy; float PixelMicronsX; float PixelMicronsY; int ccdflags; int cameraflags; char Description[40]; char Manufacturer[40]; Handle type definition typedef void* ArtemisHandle;

Interface Functions // Return API version. XYY X=major, YY=minor extern int ArtemisAPIVersion(); // ** Deprecated - use ArtemisDeviceName instead // Get USB Identifier of Nth FTDI device. Return false if no such device. // pname must be at least 40 chars long. extern bool ArtemisFTName(int Device, char *pname); // ** Deprecated - use ArtemisDeviceSerial instead // Get USB Serial number of Nth FTDI device. Return false if no such device. // pname must be at least 40 chars long. extern bool ArtemisFTSerial(int Device, char *pname); // ** Deprecated - use ArtemisDeviceIsCamera instead // Return true if Nth FTDI device exists and is a camera. extern bool ArtemisIsCamera(int Device); // Get USB Identifier of Nth USB device. Return false if no such device. // pname must be at least 40 chars long. extern bool ArtemisDeviceName(int Device, char *pname); // Get USB Serial number of Nth USB device. Return false if no such device. // pname must be at least 40 chars long. extern bool ArtemisDeviceSerial(int Device, char *pname); // Return true if Nth USB device exists and is a camera. extern bool ArtemisDeviceIsCamera(int Device); // Disconnect from given device. // Returns true if disconnected as requested extern bool ArtemisDisconnect(ArtemisHandle hcam); // Connect to given device. If Device=-1, connect to first available // Returns handle if connected as requested, else NULL extern ArtemisHandle ArtemisConnect(int Device); // Disconnect all connected devices extern bool ArtemisDisconnectAll(); // Returns TRUE if currently connected to a device extern bool ArtemisIsConnected(ArtemisHandle hcam); // Fills in pprop with camera properties extern int ArtemisProperties(ArtemisHandle hcam, struct ARTEMISPROPERTIES *pprop); // Displays the Artemis setup dialog, if any extern int ArtemisSetupDialog(); // Abort exposure, if one is in progress extern int ArtemisAbortExposure(ArtemisHandle hcam); // Set the start x,y coords for imaging subframe. // X,Y in unbinned coordinates extern int ArtemisSubframePos(ArtemisHandle hcam, int x, int y); // Set the width and height of imaging subframe // W,H in unbinned coordinates extern int ArtemisSubframeSize(ArtemisHandle hcam, int w, int h);

// set the pos and size of imaging subframe inunbinned coords extern int ArtemisSubframe(ArtemisHandle hcam, int x, int y, int w, int h); // Get the pos and size of imaging subframe extern int ArtemisGetSubframe(ArtemisHandle hcam, int *x, int *y, int *w, int *h); // Set the x,y binning factors extern int ArtemisBin(ArtemisHandle hcam, int x, int y); // Get the x,y binning factors extern int ArtemisGetBin(ArtemisHandle hcam, int *x, int *y); // Set the Precharge mode extern int ArtemisPrechargeMode(ArtemisHandle hcam, int mode); // Clear the VRegs extern int ArtemisClearVRegs(ArtemisHandle hcam); // Set the FIFO usage flag extern int ArtemisFIFO(ArtemisHandle hcam, bool benable); // Start an exposure extern int ArtemisStartExposure(ArtemisHandle hcam, float Seconds); // Prematurely end an exposure, collecting image data. extern int ArtemisStopExposure(ArtemisHandle hcam); // Retrieve the downloaded image as a 2D array of type VARIANT extern int ArtemisGetImageArray(ArtemisHandle hcam, VARIANT *pimagearray); // Retrieve image dimensions and binning factors. // x,y are actual CCD locations. w,h are pixel dimensions of image extern int ArtemisGetImageData(ArtemisHandle hcam, int *x, int *y, int *w, int *h, int *binx, int *biny); // Upload a compressed object file to the Artemis PIC extern int ArtemisReflash(ArtemisHandle hcam,char *objfile); // Return true if amp switched off during exposures extern bool ArtemisGetAmplifierSwitched(ArtemisHandle hcam); // Set whether amp is switched off during exposures extern int ArtemisSetAmplifierSwitched(ArtemisHandle hcam, bool bswitched); // Return duration of last exposure, in seconds extern float ArtemisLastExposureDuration(ArtemisHandle hcam); // Return time remaining in current exposure, in seconds extern float ArtemisExposureTimeRemaining(ArtemisHandle hcam); // Return ptr to static buffer containing time of start of last exposure extern char* ArtemisLastStartTime(ArtemisHandle hcam); // Return true if an image is ready to be retrieved extern bool ArtemisImageReady(ArtemisHandle hcam); // Switch off all guide relays extern int ArtemisStopGuiding(ArtemisHandle hcam); // Activate a guide relay for a short interval extern int ArtemisPulseGuide(ArtemisHandle hcam, int axis, int milli);

// Activate a guide relay extern int ArtemisGuide(ArtemisHandle hcam, int axis); // Set download thread to high or normal priority extern int ArtemisHighPriority(ArtemisHandle hcam, bool bhigh); // Retrieve the current camera state extern int ArtemisCameraState(ArtemisHandle hcam); // Percentage downloaded extern int ArtemisDownloadPercent(ArtemisHandle hcam); // Return pointer to internal image buffer (actually unsigned shorts) extern void* ArtemisImageBuffer(ArtemisHandle hcam); // Set the CCD amplifier on or off extern int ArtemisAmplifier(ArtemisHandle hcam, bool bon); // Set the webcam Long Exposure control extern int ArtemisWebcamLE(ArtemisHandle hcam, bool bhigh); // Reset the camera PIC extern int ArtemisReset(ArtemisHandle hcam); // Get current image processing options extern int ArtemisGetProcessing(ArtemisHandle hcam); // Set current image processing options extern int ArtemisSetProcessing(ArtemisHandle hcam, int options); // Set External Trigger mode (if supported by camera). True=wait for trigger. extern int ArtemisTriggeredExposure(ArtemisHandle hcam, bool bawaittrigger); // Set preview mode (if supported by camera). True=preview mode enabled. extern int ArtemisSetPreview(ArtemisHandle hcam, bool bprev); // Set subsampling mode (if supported by camera). True=subsampling enabled. extern int ArtemisSetSubSample(ArtemisHandle hcam, bool bsub); // Return true if dark mode is set - ie the shutter is kept closed during exposures extern bool ArtemisGetDarkMode(ArtemisHandle hcam); // Enable/disable dark mode - ie the shutter is to be kept closed during exposures extern int ArtemisSetDarkMode(ArtemisHandle hcam, bool benable); // Return colour properties extern int ArtemisColourProperties(ArtemisHandle hcam, ARTEMISCOLOURTYPE *colourtype, int *normaloffsetx, int *normaloffsety, int *previewoffsetx, int *previewoffsety);

// Send a packet of data to a peripheral, and receive a reply. // psenddata points to an 8 byte array which is sent to the peripheral. // precvdata points to an 8 byte array which is filled with the peripheral's response. // Returns ARTEMIS_OK if the peripheral responds, in which case precvdata contains its reply. // Returns ARTEMIS_NO_RESPONSE if the peripheral doesn't respond. // If the peripheral does not respond, precvdata is not guaranteed to be preserved. // psenddata and precvdata may be the same but must not be NULL. extern int ArtemisPeripheral(ArtemisHandle hcam, int PeripheralID, unsigned char *psenddata, unsigned char *precvdata); // Diagnostic Functions // Ping the camera, return the result. -1 on error. extern int ArtemisDiagnosticPing(ArtemisHandle hcam, int send); // Ping the FIFO, return the result. -1 on error. extern int ArtemisDiagnosticPingFIFO(ArtemisHandle hcam, int send); // Set the CCD clocks running (firmware doesn't return!) extern int ArtemisDiagnosticRunCCD(ArtemisHandle hcam); // Measure the precharge level extern int ArtemisDiagnosticPrecharge(ArtemisHandle hcam); // Connects to kernel only, safe to use before firmware // has been uploaded. // Returns handle if connected as requested extern ArtemisHandle ArtemisDiagnosticConnect(int Device); // Miscellaneous commands to set voltages etc. // Not to be called if the CCD is installed! extern int ArtemisDiagnosticCommand(ArtemisHandle hcam, int cmd); // Return the last FT USB error condition seen // Calling this function clears the internal error state extern int ArtemisDiagnosticUSBError(ArtemisHandle hcam); // Access LE/Guide ports from 3rd-party software // msg is the command to execute // unit is the camera number // returns: // 0 OK // 1 camera busy // 2 no camera active // 3 invalid command extern int ArtemisSendMessage(int msg, int unit);

// Access peripherals from 3rd-party software // peripheral is the peripheral's device ID // send and recv are 8-byte buffers for message-passing // unit is the camera number // returns: // 0 OK // 1 camera busy // 2 no camera active // 3 invalid command // 4 no response fropm peripheral extern int ArtemisSendPeripheralMessage(int peripheral, char *send, char *recv, int unit); // Get camera description, for 3rd-party software // recv is a 40-byte buffer for the data // info tells which data to return: // 0 camera description from firmware // 1 FTDI device name // 2 FTDI device serial number // unit is the camera number // returns: // 0 OK // 1 camera busy // 2 no camera active extern int ArtemisGetDescription(char *recv, int info, int unit); // Check camera licensing info. // returns: // true if camera is licensed, or if no licence required. // false if camera licence is invalid. extern bool ArtemisIsLicensed(ArtemisHandle hcam); // Get camera's input voltage. // returns: // vinput=input voltage extern int ArtemisDiagnosticInputVoltage(ArtemisHandle hcam, float* vinput); // Get camera's ClkSub and Amp voltages. // returns: // vclksub=clk Sub voltage // vamp=amp voltage extern int ArtemisDiagnosticClkSubAmpVoltage(ArtemisHandle hcam, float* vclksub, float* vamp); // Try to load the Artemis DLL. // Returns true if loaded ok. extern bool ArtemisLoadDLL(char *FileName); // Unload the Artemis DLL. extern void ArtemisUnLoadDLL();

The following functions are defined for the HSC (High speed USB) cameras only: // Return the temperature indicated by a given sensor. // A sensor number of 0 will return the number of sensors in the // temperature parameter. // A sensor number of 1 or more will return the temperature in // degrees Celsius * 100 extern int ArtemisTemperatureSensorInfo(ArtemisHandle hcam, int sensor, int* temperature); // Returns information on the Peltier cooler. // flags: b0-4 capabilities // b0 0 = no cooling 1=cooling // b1 0= always on 1= controllable // b2 0 = on/off control not available 1= on off cooling control // b3 0= no selectable power levels 1= selectable power levels // b4 0 = no temperature set point cooling 1= set point cooling // b5-7 report what s actually happening // b5 0=normal control 1=warming up // b6 0=cooling off 1=cooling on // b7 0= no set point control 1=set point control // level is the current cooler power level. // minlvl is the minimum power level than can be set on order to prevent // rapid warming. // maxlvl is the maximum power level than can be set or returned, can be // used to scale power to a percentage. // setpoint is the current temperature setpoint, in degrees Celsius * 100 extern int ArtemisCoolingInfo(ArtemisHandle hcam, int* flags, int* level, int* minlvl, int* maxlvl, int* setpoint); // Sets the cooling setpoint or power level. // If the camera supports setpoint cooling (b4 in flags // from ArtemisCoolingInfo) then setpoint is the desired temperature // in degrees Celsius * 100. Otherwise if the camera supports power // level control (b3 in flags) then setpoint is the desired power // level. extern int ArtemisSetCooling(ArtemisHandle hcam, int setpoint); // Starts the warm-up sequence. extern int ArtemisCoolerWarmUp(ArtemisHandle hcam); // Reconnects the camera's USB controller. extern int ArtemisReconnectUSB(ArtemisHandle hcam); // Return camera type and firmware serial number // flags low byte=camera type, 1=4021, 2=11002 extern int ArtemisCameraSerial(ArtemisHandle hcam, int* flags, int* serial);