Supports FLI cameras/focusers/wheels and cameras: ZWO, Basler, HikRobot, PointGrey, Apogee.
Allows to run as standalone application or imaging server/client.
To restart server (e.g. if hardware was off) kill it with SIGUSR1 or send command restartTheServer
.
The tool itself depends on usefull_macros librariy.
"Artifical star" plugin depends on my improclib.
Image viewer depends on OpenGL and GLUT libraries (also depending on X11).
All other plugins (excluding "dummy camera") depends on third-party libraries. Apogee plugin also
depends on apogee C wrapper.
I will try later to combine all third-party libraries in this repository.
cmake options:
-DAPOGEE=ON
- compile Apogee plugin-DASTAR=ON
- compile "artifical star" plugin-DBASLER=ON
- compile Basler support plugin-DDEBUG=ON
- make with a lot debugging info-DDUMMY=OFF
- compile without dummy camera plugin-DEXAMPLES=ON
- compile also some exaples of libccdcapture use-DFLI=ON
- compile FLI support plugin-DFLYCAP=ON
- compile GrassHopper PointGrey plugin-DHIKROBOT=ON
- compile HikRobot support plugin-DIMAGEVIEW=OFF
- compile without image viewer support (OpenGL!!!)-DZWO=ON
- compile ZWO support pluginUsage: ccd_capture [args] [output file prefix]
Args are:
-8, --8bit run in 8-bit mode
-A, --author=arg program author
-C, --cameradev=arg camera device plugin (e.g. devfli.so)
-D, --display Display image in OpenGL window
-F, --focuserdev=arg focuser device plugin (e.g. devzwo.so)
-I, --instrument=arg instrument name
-L, --list list connected devices
-N, --obsname=arg observers' names
-O, --object=arg object name
-P, --prog-id=arg observing program name
-V, --verbose verbose level (-V - messages, -VV - debug, -VVV - all shit)
-W, --wheeldev=arg wheel device plugin (e.g. devdummy.so)
-Y, --objtype=arg object type (neon, object, flat etc)
-_, --plugincmd custom camera device plugin command
-a, --addsteps=arg move focuser to relative position, mm (only for standalone)
-c, --conf-ioport=arg configure I/O port pins to given value (decimal number, pin1 is LSB, 1 == output, 0 == input)
-d, --dark not open shutter, when exposing ("dark frames")
-f, --fast fast readout mode
-g, --goto=arg move focuser to absolute position, mm
-h, --hbin=arg horizontal binning to N pixels
-i, --get-ioport get value of I/O port pins
-k, --shmkey=arg shared memory (with image data) key (default: 7777777)
-l, --nflushes=arg N flushes before exposing (default: 1)
-n, --nframes=arg make series of N frames
-o, --outfile=arg output file name
-p, --pause=arg make pause for N seconds between expositions
-r, --addrec add records to header from given file[s]
-s, --set-ioport=arg set I/O port pins to given value (decimal number, pin1 is LSB)
-t, --set-temp=arg set CCD temperature to given value (degr C)
-v, --vbin=arg vertical binning to N pixels
-w, --wheel-set=arg set wheel position
-x, --exptime=arg set exposure time to given value (seconds!)
--X0=arg absolute (not divided by binning!) frame X0 coordinate (-1 - all with overscan)
--X1=arg absolute frame X1 coordinate (-1 - all with overscan)
--Y0=arg absolute frame Y0 coordinate (-1 - all with overscan)
--Y1=arg absolute frame Y1 coordinate (-1 - all with overscan)
--async move stepper motor asynchronous
--brightness=arg CMOS brightness level
--camdevno=arg camera device number (if many: 0, 1, 2 etc)
--cancel cancel current exposition
--client run as client
--close-shutter close shutter
--focdevno=arg focuser device number (if many: 0, 1, 2 etc)
--forceimsock force using image through socket transition even if can use SHM
--gain=arg CMOS gain level
--help show this help
--imageport=arg INET image socket port
--infty=arg start (!=0) or stop(==0) infinity capturing loop
--logfile=arg logging file name (if run as server)
--open-shutter open shutter
--path=arg UNIX socket name (command socket)
--plugin=arg common device plugin (e.g devfli.so)
--port=arg local INET command socket port
--restart restart image server
--rewrite rewrite output file if exists
--set-fan=arg set fan speed (0 - off, 1 - low, 2 - high)
--shutter-on-high run exposition on HIGH @ pin5 I/O port
--shutter-on-low run exposition on LOW @ pin5 I/O port
--viewer passive viewer (only get last images)
--wait wait while exposition ends
--wheeldevno=arg filter wheel device number (if many: 0, 1, 2 etc)
In image view mode you can display menu by clicking of right mouse key or use shortcuts:
-n
flag);-n
flag);Mouse functions:
When you run the server you need at least to point:
-C libdev….so
);--port=port
, or UNIX socket, then point --path=path
(for unnamed sockets use "\0" as first--imageport=port
- to have ability to transmit image to other PCs by-k=key
(default value: 7777777).To send commands to server you can use client, open netcat
session, use my tty_term
or any other tools. Server have text protocol (send help\n
to see full list):
filename
, not filenameprefix
)Send expstate=1
to start capture. As only the frame is ready server will send expstate=4
to all
clients connected.
When you send a command to server you will receive:
Command info
equivalent to sequential commands camlist
, hbin
, vbin
, tcold
, tbody
, thot
,
exptime
, lastfilename
, expstate
and camflags
.
Command getheaders
returns base FITS-header of last file.
To run client you should point --client
and same ports' options like for server (command socket and
image SHM key or socket).
Use --forceimsock
to forse getting image through INET socket even if run on the same PC as server.
Client have no options to connect to server on other host, so you need to make proxy with ssh or other
tool. Maybe later I will add --host
option for these purposes (but for security you will still have
to use ssh-proxy for command socket).
Using client as pure viewer (using --viewer
option) you can't run expositions - just can view last
files done by command from other clients. But if you will send to server infty=1
, it will run in
infinity mode, making frame by frame while at least one client connected. To turn this off send
infty=0
.
Without image view options (--viewer
or -D
) client just send given options to server and shuts down,
but you can wait until image done with option --wait
(be careful: when reading process takes too long
time taking server in busy state, client can decide to shut down by timeout).
Since version 1.2.0 introduced custom camera plugin commands system. Commonly to read help just
type -_help
. You can point as much custom commands in one commandline as you need. They can be a
procedures/flags (like -_cmd
) or a setters/getters (like -_key
and -_key=value
).
To transmit these custom commands to server use plugincmd=key[=value]
.
This plugin simply emulates image aqcuisition process where images are 2-D sinusoide with given periods.
Each next frame will be shifted by one pixel.
Commands:
This plugin lets you to emulate star field with up to 32 stars. You can shift center of field emulating
telescope correction, also you can rotate field emulating derotation.
All stars (Moffat) have the same FWHM and scale parameters. Their coordinates (arcsec) are given by arrays x
and y
with a hardware magnitude mag
. You can emulate image drift and rotation. Also you can add
a little image position (full frame position) fluctuations. To emulate poisson noice just point its lambda
value (lambda==1
means no noise).
Two additional commands - mask
and bkg
allows you to load binary mask and background.
The background image (8-bit monochrome) will be added to generated star field. After that if you
pointed an mask image it will be AND-ed with result: all non-zero pixels on mask remains the same
pixels of resulting image, but zeros will clean them emulating holes or screens.
And at last Poisson noice will be added to full frame.
Commands:
beta
parameterConnect to server, send infty
and simply get up to N images (or quit if no images in 5 seconds).
Usage:
-U, --isun use UNIX socket
-h, --help show this help
-i, --infty run in infinity capturing loop (else - request each frame)
-k, --shmkey=arg shared memory (with image data) key (default: 7777777)
-n, --nframes=arg make series of N frames (2 default)
-s, --sock=arg command socket name or port
-x, --exptime=arg set exposure time to given value (seconds!)