add star bkg

This commit is contained in:
Edward Emelianov 2024-02-21 11:41:56 +03:00
parent 248342ae86
commit 2f33d6773c
7 changed files with 249 additions and 123 deletions

View File

@ -53,11 +53,13 @@ static float camtemp = -30., exptime = 0.1;
static cc_capture_status capstat = CAPTURE_NO;
static double texpstart = 0.;
static uint8_t bitpix = 16; // bit depth: 8 or 16
static il_Image *imagemask = NULL; // mask
static il_Image *imagemask = NULL, *imagebg; // mask & background
static char *maskfilename = NULL, *bgfilename = NULL; // filenames
typedef struct{
int Nstars; // amount of stars
int x0, y0; // center of field in array coordinates
double rotan0; // starting rotation angle
int xs[MAX_STARS], ys[MAX_STARS]; // center of star field in array coordinates
double fwhm; // stars min FWHM, arcsec
double beta; // Moffat `beta` parameter
@ -66,6 +68,7 @@ typedef struct{
double mag[MAX_STARS]; // star magnitude: 0m is 0xffff/0xff ADUs per second
double vX; // X axe drift speed (arcsec/s)
double vY; // Y -//-
double vR; // rotation speed (arcsec/s)
double fluct; // stars position fluctuations (arcsec/sec)
double noiselambda; // poisson noice lambda value
} settings_t;
@ -73,14 +76,16 @@ typedef struct{
static settings_t settings = {
.Nstars = 1,
.x0 = 512, .y0 = 512,
.xs = {0}, .ys = {0},
.fwhm = 1.5, .beta = 1., .scale = 0.03, .mag = {0.},
.fluct = 1., .noiselambda = 3.,
.fwhm = 1.5, .beta = 1., .scale = 0.03,
.fluct = 0.3, .noiselambda = 1.,
};
// min/max for parameters
static const double fwhmmin = 0.1, fwhmmax = 10., scalemin = 0.001, scalemax = 3600., magmin = -30., magmax = 30.;
static const double vmin = -20., vmax = 20., fluctmin = 0., fluctmax = 3., betamin = 0.5;
static const double vrotmin = -36000., vrotmax = 36000.; // limit rotator speed to 10 degrees per second
static const double rotanmin = 0., rotanmax = 1295999; // 0..360degr-1''
static double dX = 0., dY = 0.; // current "sky" coordinates (arcsec) relative to field center (according vdrift)
static double rotangle = 0., sinr = 0., cosr = 1.; // current rotation angle (arcsec) around x0/y0 and its sin/cos
static int Xc = 0, Yc = 0; // current pixel coordinates of "sky" center (due to current image size, clip and scale) + fluctuations
static double Tstart = -1.; // global acquisition start
static double Xfluct = 0., Yfluct = 0.; // fluctuation additions in arcsec
@ -98,13 +103,14 @@ static void test_template(){
FWHM0 = settings.fwhm;
scale0 = settings.scale;
il_Image_free(&star);
DBG("MAKE STAR, wh=%d, beta=%g", templ_wh, settings.beta);
star = il_Image_star(IMTYPE_D, templ_wh, templ_wh, settings.fwhm, settings.beta);
//il_Image_minmax(star);
//DBG("STAR: %dx%d, max=%g, min=%g, %d bytes per pix, type %d; templ_wh=%d", star->height, star->width, star->maxval, star->minval, star->pixbytes, star->type, templ_wh);
il_Image_minmax(star);
DBG("STAR: %dx%d, max=%g, min=%g, %d bytes per pix, type %d; templ_wh=%d", star->height, star->width, star->maxval, star->minval, star->pixbytes, star->type, templ_wh);
double sum = 0., *ptr = (double*)star->data;
int l = templ_wh * templ_wh;
for(int i = 0; i < l; ++i) sum += ptr[i];
//green("sum=%g\n", sum);
green("sum=%g\n", sum);
OMP_FOR()
for(int i = 0; i < l; ++i) ptr[i] /= sum;
}
@ -127,7 +133,8 @@ static void test_template(){
register int w = ima->w;\
int h = ima->h, tw2 = templ_wh/2, X0,Y0, X1,Y1, x0,y0;\
for(int N = 0; N < settings.Nstars; ++N){\
int Xstar = Xc + settings.xs[N] - camera.geometry.xoff, Ystar = Yc + settings.ys[N] - camera.geometry.yoff;\
int Xstar = Xc + (settings.xs[N]*cosr - settings.ys[N]*sinr)/settings.scale; \
int Ystar = Yc + (settings.ys[N]*cosr + settings.xs[N]*sinr)/settings.scale;\
if(Xstar - tw2 < 0){\
X0 = tw2 - Xstar + 1;\
x0 = 0;\
@ -164,6 +171,20 @@ static void test_template(){
}\
}\
}\
if(imagebg){ /* add background */ \
X0 = camera.geometry.xoff; Y0 = camera.geometry.yoff; \
X1 = imagebg->width; Y1 = imagebg->height; \
if(X1-X0 > w) X1 = X0 + w;\
if(Y1-Y0 > h) Y1 = Y0 + h; \
OMP_FOR()\
for(int y = Y0; y < Y1; ++y){\
type *out = &((type*)ima->data)[(y-Y0)*w];\
uint8_t *in = &((uint8_t*)imagebg->data)[y*imagemask->width + X0];\
for(int x = X0; x < X1; ++x, ++in, ++out){\
*out = (*out + *in > maxval) ? maxval : *out + *in;\
}\
} \
}\
if(imagemask){ /* apply mask */ \
X0 = camera.geometry.xoff; Y0 = camera.geometry.yoff; \
X1 = imagemask->width; Y1 = imagemask->height; \
@ -174,12 +195,20 @@ static void test_template(){
type *out = &((type*)ima->data)[(y-Y0)*w];\
uint8_t *in = &((uint8_t*)imagemask->data)[y*imagemask->width + X0];\
for(int x = X0; x < X1; ++x, ++in, ++out){\
type p = il_Poisson(settings.noiselambda); \
/*type p = fabs(il_Normal(0., 3.)); */\
if(*in == 0) *out = p; else *out = (*out+p > maxval) ? maxval : *out + p; \
if(*in == 0) *out = 0;\
}\
} \
}
}\
if(settings.noiselambda > 1.){ /* apply noise */ \
w *= h; \
type *out = (type*)ima->data;\
OMP_FOR()\
for(int i = 0; i < w; ++i){\
type p = il_Poisson(settings.noiselambda); \
out[i] = (out[i] + p > maxval) ? maxval : out[i] + p; \
}\
}\
static void gen16(cc_IMG *ima){
GEN(ima, uint16_t, 0xffff);
@ -214,11 +243,17 @@ static int startexp(){
else if(dT > 1.) dT = 1.; // dT for fluctuations amplitude
if(Tstart < 0.) Tstart = Tnow;
texpstart = Tnow;
double Tfromstart = Tnow - Tstart;
// recalculate center of field coordinates at moment of exp start
dX += (dtime() - Tstart) * settings.vX;
dY += (dtime() - Tstart) * settings.vY;
Xc = dX/settings.scale + settings.x0 - camera.array.xoff;
Yc = dY/settings.scale + settings.y0 - camera.array.yoff;
dX = Tfromstart * settings.vX;
dY = Tfromstart * settings.vY;
rotangle = settings.rotan0 + Tfromstart * settings.vR;
if(rotangle < rotanmin) rotangle += 360.*3600.;
else if(rotangle > rotanmax) rotangle -= 360.*3600.;
sincos(rotangle * M_PI/3600./180., &sinr, &cosr);
double xx = dX/settings.scale, yy = dY/settings.scale;
Xc = xx*cosr - yy*sinr + settings.x0 - camera.array.xoff - camera.geometry.xoff;
Yc = yy*cosr + xx*sinr + settings.y0 - camera.array.yoff - camera.geometry.yoff;
DBG("dX=%g, dY=%g; Xc=%d, Yc=%d", dX, dY, Xc, Yc);
// add fluctuations
double fx = settings.fluct * dT * (2.*drand48() - 1.); // [-fluct*dT, +fluct*dT]
@ -472,7 +507,31 @@ static cc_hresult loadmask(const char *str, cc_charbuff *ans){
snprintf(buf, FILENAME_MAX, "Can't read image '%s'", nm);
res = RESULT_FAIL;
}else{
snprintf(buf, FILENAME_MAX, "Got image '%s'; w=%d, h=%d, type=%d (impix=%d)", nm, imagemask->width, imagemask->height, imagemask->type, imagemask->pixbytes);
if(imagemask->pixbytes != 1){
snprintf(buf, FILENAME_MAX, "Image '%s' isn't a 8-bit image", nm);
res = RESULT_FAIL;
}else
snprintf(buf, FILENAME_MAX, "Got image '%s'; w=%d, h=%d, type=%d (impix=%d)", nm, imagemask->width, imagemask->height, imagemask->type, imagemask->pixbytes);
}
cc_charbufaddline(ans, buf);
FREE(nm);
return res;
}
static cc_hresult loadbg(const char *str, cc_charbuff *ans){
char buf[FILENAME_MAX+32], *bptr = buf;
strncpy(buf, str, FILENAME_MAX+31);
char *val = cc_get_keyval(&bptr);
if(strcmp(bptr, "bkg") != 0) return RESULT_BADKEY;
if(imagebg) il_Image_free(&imagebg);
imagebg = il_Image_read(val);
char *nm = strdup (val);
cc_hresult res = RESULT_OK;
if(!imagebg){
snprintf(buf, FILENAME_MAX, "Can't read image '%s'", nm);
res = RESULT_FAIL;
}else{
snprintf(buf, FILENAME_MAX, "Got image '%s'; w=%d, h=%d, type=%d (impix=%d)", nm, imagebg->width, imagebg->height, imagebg->type, imagebg->pixbytes);
}
cc_charbufaddline(ans, buf);
FREE(nm);
@ -483,17 +542,20 @@ static cc_hresult loadmask(const char *str, cc_charbuff *ans){
static cc_parhandler_t handlers[] = {
{"xc", "x center of field in array coordinates", NULL, (void*)&settings.x0, NULL, NULL, CC_PAR_INT},
{"yc", "y center of field in array coordinates", NULL, (void*)&settings.y0, NULL, NULL, CC_PAR_INT},
{"x", "X coordinate of next star", setXYs, NULL, NULL, NULL, 0},
{"y", "Y coordinate of next star", setXYs, NULL, NULL, NULL, 0},
{"x", "X coordinate of next star (arcsec, in field coordinate system)", setXYs, NULL, NULL, NULL, CC_PAR_INT},
{"y", "Y coordinate of next star (arcsec, in field coordinate system)", setXYs, NULL, NULL, NULL, CC_PAR_INT},
{"fwhm", "stars min FWHM, arcsec", NULL, (void*)&settings.fwhm, (void*)&fwhmmin, (void*)&fwhmmax, CC_PAR_DOUBLE},
{"scale", "CCD scale: arcsec/pix", NULL, (void*)&settings.scale, (void*)&scalemin, (void*)&scalemax, CC_PAR_DOUBLE},
{"mag", "Next star magnitude: 0m is 0xffff/0xff (16/8 bit) ADUs per second", setmag, NULL, NULL, NULL, 0},
{"mask", "load mask image (binary, ANDed)", loadmask, NULL, NULL, NULL, 0},
{"mag", "Next star magnitude: 0m is 0xffff/0xff (16/8 bit) ADUs per second", setmag, NULL, (void*)&magmin, (void*)&magmax, CC_PAR_DOUBLE},
{"mask", "load mask image (binary, ANDed)", loadmask, (void*)&maskfilename, NULL, NULL, CC_PAR_STRING},
{"bkg", "load background image", loadbg, (void*)&bgfilename, NULL, NULL, CC_PAR_STRING},
{"vx", "X axe drift speed (arcsec/s)", NULL, (void*)&settings.vX, (void*)&vmin, (void*)&vmax, CC_PAR_DOUBLE},
{"vy", "Y axe drift speed (arcsec/s)", NULL, (void*)&settings.vY, (void*)&vmin, (void*)&vmax, CC_PAR_DOUBLE},
{"vr", "rotation speed (arcsec/s)", NULL, (void*)&settings.vR, (void*)&vrotmin, (void*)&vrotmax, CC_PAR_DOUBLE},
{"fluct", "stars position fluctuations (arcsec per sec)", NULL, (void*)&settings.fluct, (void*)&fluctmin, (void*)&fluctmax, CC_PAR_DOUBLE},
{"beta", "Moffat `beta` parameter", NULL, (void*)&settings.beta, (void*)&betamin, NULL, CC_PAR_DOUBLE},
{"lambda", "Poisson noice lambda value (>1)", NULL, (void*)&settings.noiselambda, (void*)&noicelambdamin, NULL, CC_PAR_DOUBLE},
{"rotangle", "Starting rotation angle (arcsec)", NULL, (void*)&settings.rotan0, (void*)&rotanmin, (void*)&rotanmax, CC_PAR_DOUBLE},
//{"", "", NULL, (void*)&settings., (void*)&, (void*)&, CC_PAR_DOUBLE},
CC_PARHANDLER_END
};

View File

@ -11,12 +11,15 @@ To restart server (e.g. if hardware was off) kill it with SIGUSR1
cmake options:
- `-DAPOGEE=ON` - compile Apogee plugin
- `-DDEBUG=ON` - make with a lot debugging info
- `-DIMAGEVIEW=ON` - compile with image viewer support (only for standalone) (OpenGL!!!)
- `-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
- `-DFLYCAPT=ON` - compile GrassHopper PointGrey 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 plugin
@ -36,6 +39,7 @@ Usage: ccd_capture [args] [output file prefix]
-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")
@ -43,6 +47,7 @@ Usage: ccd_capture [args] [output file prefix]
-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
@ -64,15 +69,16 @@ Usage: ccd_capture [args] [output file prefix]
--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 local INET socket port to send/receive images
--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
--pidfile=arg PID file (default: /tmp/CCD_Capture.pid)
--path=arg UNIX socket name (command socket)
--plugin=arg common device plugin (e.g devfli.so)
--port=arg local INET socket port
--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)
@ -106,3 +112,44 @@ Mouse functions:
- Wheel up - scroll up, or scroll left (with Shift), or zoom+ (with Ctrl).
- Wheel down - scroll down, or scroll right (with Shift), or zoom- (with Ctrl).
## Plugins custom commands
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`).
### Dummy camera plugin custom commands
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:
- px = (double) [1, inf] - set/get sin period over X axis (pix)
- py = (double) [1, inf] - set/get sin period over Y axis (pix)
### Artifical star plugin custom 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 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).
Commands:
- xc = (int) - x center of field in array coordinates
- yc = (int) - y center of field in array coordinates
- x - X coordinate of next star
- y - Y coordinate of next star
- fwhm = (double) [0.1, 10] - stars min FWHM, arcsec
- scale = (double) [0.001, 3600] - CCD scale: arcsec/pix
- mag - Next star magnitude: 0m is 0xffff/0xff (16/8 bit) ADUs per second
- mask - load mask image (binary, ANDed)
- vx = (double) [-20, 20] - X axe drift speed (arcsec/s)
- vy = (double) [-20, 20] - Y axe drift speed (arcsec/s)
- vr = (double) [-36000, 36000] - rotation speed (arcsec/s)
- fluct = (double) [0, 3] - stars position fluctuations (arcsec per sec)
- beta = (double) [0.5, inf] - Moffat `beta` parameter
- lambda = (double) [1, inf] - Poisson noice lambda value (>1)
- rotangle = (double) [0, 1.296e+06] - Starting rotation angle (arcsec)

View File

@ -745,8 +745,11 @@ static size_t print_val(cc_partype_t t, void *val, char *buf, size_t bufl){
case CC_PAR_DOUBLE:
l = snprintf(buf, bufl, "%g", *(double*)val);
break;
case CC_PAR_STRING:
l = snprintf(buf, bufl, "%s", *(char**)val);
break;
default:
l = snprintf(buf, bufl, "hoojnya");
l = snprintf(buf, bufl, "(undefined)");
break;
}
return l;
@ -795,6 +798,10 @@ cc_hresult cc_plugin_customcmd(const char *str, cc_parhandler_t *handlers, cc_ch
dval = atof(val);
UPDATE_VAL(double, dval, "%g");
break;
case CC_PAR_STRING:
if(*(char**)phptr->ptr) free(*(char**)phptr->ptr);
*(char**)phptr->ptr = strdup(val);
break;
default:
result = RESULT_FAIL;
}
@ -817,7 +824,7 @@ cc_hresult cc_plugin_customcmd(const char *str, cc_parhandler_t *handlers, cc_ch
while(phptr->cmd){
char *bptr = buf; size_t L = 511;
ADDL("\t%s", phptr->cmd);
if(phptr->ptr){
if(phptr->type != CC_PAR_NONE){
ADDL(" = (");
switch(phptr->type){
case CC_PAR_INT:
@ -829,6 +836,9 @@ cc_hresult cc_plugin_customcmd(const char *str, cc_parhandler_t *handlers, cc_ch
case CC_PAR_DOUBLE:
ADDL("double");
break;
case CC_PAR_STRING:
ADDL("string");
break;
default:
ADDL("undefined");
}

View File

@ -275,9 +275,11 @@ typedef enum{
#define CC_CMD_WPOS "wpos"
typedef enum{ // parameter type
CC_PAR_NONE, // no parameter
CC_PAR_INT,
CC_PAR_FLOAT,
CC_PAR_DOUBLE,
CC_PAR_STRING,
} cc_partype_t;
typedef struct{ // custom plugin parameters

View File

@ -606,22 +606,27 @@ int prepare_ccds(){
// run plugincmd handler if available
if(GP->plugincmd){
DBG("Plugincmd");
if(!camera->plugincmd) WARNX(_("Camera plugin have no custom commands"));
if(!camera->plugincmd) ERRX(_("Camera plugin have no custom commands"));
else{
char **p = GP->plugincmd;
cc_charbuff *b = cc_charbufnew();
DBG("got %s", *p);
int stop = FALSE;
while(p && *p){
cc_charbufclr(b);
cc_hresult r = camera->plugincmd(*p, b);
if(r == RESULT_OK || r == RESULT_SILENCE) green("Command '%s'", *p);
else red("Command '%s'", *p);
else{
stop = TRUE;
red("Command '%s'", *p);
}
if(r != RESULT_SILENCE) printf(" returns \"%s\"", cc_hresult2str(r));
if(b->buflen) printf("\n%s", b->buf);
else printf("\n");
++p;
}
cc_charbufdel(&b);
if(stop) signals(9);
}
}
if(GP->fanspeed > -1){

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-02-19 11:54+0300\n"
"POT-Creation-Date: 2024-02-21 11:24+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -392,188 +392,188 @@ msgstr ""
msgid "Camera plugin have no custom commands"
msgstr ""
#: ccdfunc.c:629
#: ccdfunc.c:634
msgid "Camera plugin have no fun speed setter"
msgstr ""
#: ccdfunc.c:632
#: ccdfunc.c:637
msgid "Can't set fan speed"
msgstr ""
#: ccdfunc.c:633
#: ccdfunc.c:638
#, c-format
msgid "Set fan speed to %d"
msgstr ""
#: ccdfunc.c:639
#: ccdfunc.c:644
#, c-format
msgid "Camera model: %s"
msgstr ""
#: ccdfunc.c:640
#: ccdfunc.c:645
#, c-format
msgid "Pixel size: %g x %g"
msgstr ""
#: ccdfunc.c:646
#: ccdfunc.c:651
#, c-format
msgid "Full array: %s"
msgstr ""
#: ccdfunc.c:649
#: ccdfunc.c:654
#, c-format
msgid "Field of view: %s"
msgstr ""
#: ccdfunc.c:652
#: ccdfunc.c:657
#, c-format
msgid "Current format: %s"
msgstr ""
#: ccdfunc.c:654
#: ccdfunc.c:659
msgid "Camera plugin have no temperature setter"
msgstr ""
#: ccdfunc.c:655
#: ccdfunc.c:660
#, c-format
msgid "Can't set T to %g degC"
msgstr ""
#: ccdfunc.c:664
#: ccdfunc.c:669
#, c-format
msgid "Shutter command: %s\n"
msgstr ""
#: ccdfunc.c:666
#: ccdfunc.c:671
#, c-format
msgid "Can't run shutter command %s (unsupported?)"
msgstr ""
#: ccdfunc.c:669
#: ccdfunc.c:674
#, c-format
msgid "Try to configure I/O port as %d"
msgstr ""
#: ccdfunc.c:671
#: ccdfunc.c:676
msgid "Can't configure (unsupported?)"
msgstr ""
#: ccdfunc.c:678
#: ccdfunc.c:683
msgid "Can't get IOport state (unsupported?)"
msgstr ""
#: ccdfunc.c:681
#: ccdfunc.c:686
#, c-format
msgid "Try to write %d to I/O port"
msgstr ""
#: ccdfunc.c:683
#: ccdfunc.c:688
msgid "Can't set IOport"
msgstr ""
#: ccdfunc.c:690
#: ccdfunc.c:695
#, c-format
msgid "Set gain to %g"
msgstr ""
#: ccdfunc.c:691
#: ccdfunc.c:696
#, c-format
msgid "Can't set gain to %g"
msgstr ""
#: ccdfunc.c:696
#: ccdfunc.c:701
#, c-format
msgid "Set brightness to %g"
msgstr ""
#: ccdfunc.c:697
#: ccdfunc.c:702
#, c-format
msgid "Can't set brightness to %g"
msgstr ""
#: ccdfunc.c:703 server.c:278
#: ccdfunc.c:708 server.c:278
#, c-format
msgid "Can't set binning %dx%d"
msgstr ""
#: ccdfunc.c:715 server.c:279
#: ccdfunc.c:720 server.c:279
msgid "Can't set given geometry"
msgstr ""
#: ccdfunc.c:719
#, c-format
msgid "Can't set %d flushes"
msgstr ""
#: ccdfunc.c:722
msgid "Camera plugin have no exposition setter"
msgstr ""
#: ccdfunc.c:724
#, c-format
msgid "Can't set exposure time to %f seconds"
msgid "Can't set %d flushes"
msgstr ""
#: ccdfunc.c:727
msgid "Can't change frame type"
msgid "Camera plugin have no exposition setter"
msgstr ""
#: ccdfunc.c:730
msgid "Can't set bit depth"
#: ccdfunc.c:729
#, c-format
msgid "Can't set exposure time to %f seconds"
msgstr ""
#: ccdfunc.c:732
msgid "Can't change frame type"
msgstr ""
#: ccdfunc.c:735
msgid "Can't set bit depth"
msgstr ""
#: ccdfunc.c:737
msgid "Can't set readout speed"
msgstr ""
#: ccdfunc.c:733
#: ccdfunc.c:738
#, c-format
msgid "Readout mode: %s"
msgstr ""
#: ccdfunc.c:734
#: ccdfunc.c:739
msgid "Only show statistics"
msgstr ""
#: ccdfunc.c:737
#: ccdfunc.c:742
msgid "Can't get current binning"
msgstr ""
#: ccdfunc.c:761
#: ccdfunc.c:766
#, c-format
msgid "Capture frame %d"
msgstr ""
#: ccdfunc.c:762 ccdfunc.c:837 server.c:149 server.c:150
#: ccdfunc.c:767 ccdfunc.c:842 server.c:149 server.c:150
msgid "Camera plugin have no function `start exposition`"
msgstr ""
#: ccdfunc.c:764 ccdfunc.c:839 server.c:155 server.c:156
#: ccdfunc.c:769 ccdfunc.c:844 server.c:155 server.c:156
msgid "Can't start exposition"
msgstr ""
#: ccdfunc.c:769
#: ccdfunc.c:774
msgid "Can't capture image"
msgstr ""
#: ccdfunc.c:772
#: ccdfunc.c:777
msgid "Read grabbed image"
msgstr ""
#: ccdfunc.c:774 ccdfunc.c:852 server.c:173 server.c:174
#: ccdfunc.c:779 ccdfunc.c:857 server.c:173 server.c:174
msgid "Camera plugin have no function `capture`"
msgstr ""
#: ccdfunc.c:776 ccdfunc.c:853
#: ccdfunc.c:781 ccdfunc.c:858
msgid "Can't grab image"
msgstr ""
#: ccdfunc.c:788 client.c:270
#: ccdfunc.c:793 client.c:270
#, c-format
msgid "%d seconds till pause ends\n"
msgstr ""
#: ccdfunc.c:850
#: ccdfunc.c:855
msgid "Some error when capture"
msgstr ""

View File

@ -7,7 +7,7 @@
msgid ""
msgstr "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-02-15 16:32+0300\n"
"POT-Creation-Date: 2024-02-20 16:30+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -21,7 +21,7 @@ msgstr "Project-Id-Version: PACKAGE VERSION\n"
msgid "%.1f seconds till exposition ends"
msgstr "%.1f ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÜËÓÐÏÚÉÃÉÉ"
#: ccdfunc.c:788 client.c:270
#: ccdfunc.c:793 client.c:270
#, c-format
msgid "%d seconds till pause ends\n"
msgstr "%d ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÐÁÕÚÙ\n"
@ -46,7 +46,7 @@ msgstr "
msgid "Camera device unknown"
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÏÐÏÚÎÁÎÏ"
#: ccdfunc.c:639
#: ccdfunc.c:644
#, c-format
msgid "Camera model: %s"
msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s"
@ -60,22 +60,22 @@ msgstr "
msgid "Camera plugin have no custom commands"
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
#: ccdfunc.c:722
#: ccdfunc.c:727
#, fuzzy
msgid "Camera plugin have no exposition setter"
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
#: ccdfunc.c:629
#: ccdfunc.c:634
#, fuzzy
msgid "Camera plugin have no fun speed setter"
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
#: ccdfunc.c:774 ccdfunc.c:852 server.c:173 server.c:174
#: ccdfunc.c:779 ccdfunc.c:857 server.c:173 server.c:174
#, fuzzy
msgid "Camera plugin have no function `capture`"
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
#: ccdfunc.c:762 ccdfunc.c:837 server.c:149 server.c:150
#: ccdfunc.c:767 ccdfunc.c:842 server.c:149 server.c:150
#, fuzzy
msgid "Camera plugin have no function `start exposition`"
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
@ -85,28 +85,28 @@ msgstr "
msgid "Camera plugin have no model name getter"
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
#: ccdfunc.c:654
#: ccdfunc.c:659
#, fuzzy
msgid "Camera plugin have no temperature setter"
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
#: ccdfunc.c:769
#: ccdfunc.c:774
msgid "Can't capture image"
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
#: ccdfunc.c:727
#: ccdfunc.c:732
msgid "Can't change frame type"
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÔÉÐ ËÁÄÒÁ"
#: ccdfunc.c:671
#: ccdfunc.c:676
msgid "Can't configure (unsupported?)"
msgstr "îÅ ÍÏÇÕ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ (ÏÐÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
#: ccdfunc.c:678
#: ccdfunc.c:683
msgid "Can't get IOport state (unsupported?)"
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÓÏÓÔÏÑÎÉÅ ÐÏÒÔÁ I/O (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
#: ccdfunc.c:737
#: ccdfunc.c:742
msgid "Can't get current binning"
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ ÂÉÎÎÉÎÇÁ"
@ -122,7 +122,7 @@ msgstr "
msgid "Can't get max wheel position"
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ËÏÌÅÓÁ"
#: ccdfunc.c:776 ccdfunc.c:853
#: ccdfunc.c:781 ccdfunc.c:858
msgid "Can't grab image"
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
@ -142,7 +142,7 @@ msgstr "
msgid "Can't open OpenGL window, image preview will be inaccessible"
msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÏËÎÏ OpenGL, ÏÔÏÂÒÁÖÅÎÉÅ ÂÕÄÅÔ ÎÅÄÏÓÔÕÐÎÏ"
#: ccdfunc.c:666
#: ccdfunc.c:671
#, c-format
msgid "Can't run shutter command %s (unsupported?)"
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ ÚÁÔ×ÏÒÁ %s (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
@ -152,16 +152,16 @@ msgstr "
msgid "Can't save file with prefix %s"
msgstr "îÅ ÍÏÇÕ ÓÏÈÒÁÎÉÔØ ÆÁÊÌ Ó ÐÒÅÆÉËÓÏÍ %s"
#: ccdfunc.c:719
#: ccdfunc.c:724
#, c-format
msgid "Can't set %d flushes"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ %d ÓÂÒÏÓÏ×"
#: ccdfunc.c:683
#: ccdfunc.c:688
msgid "Can't set IOport"
msgstr "îÅ ÍÏÇÕ ÐÏÍÅÎÑÔØ ÚÎÁÞÅÎÉÑ ÐÏÒÔÁ I/O"
#: ccdfunc.c:655
#: ccdfunc.c:660
#, c-format
msgid "Can't set T to %g degC"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÔÅÍÐÅÒÁÔÕÒÕ × %g ÇÒÁÄã"
@ -178,35 +178,35 @@ msgstr "
msgid "Can't set active wheel number"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ËÏÌÅÓÁ"
#: ccdfunc.c:703 server.c:278
#: ccdfunc.c:708 server.c:278
#, c-format
msgid "Can't set binning %dx%d"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÂÉÎÎÉÎÇ %dx%d"
#: ccdfunc.c:730
#: ccdfunc.c:735
msgid "Can't set bit depth"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÒÁÚÒÑÄÎÏÓÔØ áãð"
#: ccdfunc.c:697
#: ccdfunc.c:702
#, c-format
msgid "Can't set brightness to %g"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
#: ccdfunc.c:724
#: ccdfunc.c:729
#, c-format
msgid "Can't set exposure time to %f seconds"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÜËÓÐÏÚÉÃÉÀ × %f ÓÅËÕÎÄ"
#: ccdfunc.c:632
#: ccdfunc.c:637
msgid "Can't set fan speed"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ×"
#: ccdfunc.c:691
#: ccdfunc.c:696
#, c-format
msgid "Can't set gain to %g"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ Gain × %g"
#: ccdfunc.c:715 server.c:279
#: ccdfunc.c:720 server.c:279
msgid "Can't set given geometry"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÇÅÏÍÅÔÒÉÀ"
@ -220,7 +220,7 @@ msgstr "
msgid "Can't set position %g: out of limits [%g, %g]"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÚÉÃÉÀ %g: ×ÎÅ ÐÒÅÄÅÌÏ× [%g, %g]"
#: ccdfunc.c:732
#: ccdfunc.c:737
msgid "Can't set readout speed"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ÓÞÉÔÙ×ÁÎÉÑ"
@ -229,16 +229,16 @@ msgstr "
msgid "Can't set wheel position %d"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ %d"
#: ccdfunc.c:764 ccdfunc.c:839 server.c:155 server.c:156
#: ccdfunc.c:769 ccdfunc.c:844 server.c:155 server.c:156
msgid "Can't start exposition"
msgstr "îÅ ÍÏÇÕ ÎÁÞÁÔØ ÜËÓÐÏÚÉÃÉÀ"
#: ccdfunc.c:761
#: ccdfunc.c:766
#, c-format
msgid "Capture frame %d"
msgstr "úÁÈ×ÁÔ ËÁÄÒÁ %d"
#: ccdfunc.c:652
#: ccdfunc.c:657
#, c-format
msgid "Current format: %s"
msgstr "ôÅËÕÝÉÊ ÆÏÒÍÁÔ: %s"
@ -256,7 +256,7 @@ msgstr "
msgid "Error saving file"
msgstr "ïÛÉÂËÁ ÓÏÈÒÁÎÅÎÉÑ ÆÁÊÌÁ"
#: ccdfunc.c:649
#: ccdfunc.c:654
#, c-format
msgid "Field of view: %s"
msgstr "ðÏÌÅ ÚÒÅÎÉÑ: %s"
@ -285,7 +285,7 @@ msgstr "
msgid "Found %d wheels, you point number %d"
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ËÏÌÅÓ, ×Ù ÕËÁÚÁÌÉ %d"
#: ccdfunc.c:646
#: ccdfunc.c:651
#, c-format
msgid "Full array: %s"
msgstr "ðÏÌÎÙÊ ÆÏÒÍÁÔ: %s"
@ -324,20 +324,20 @@ msgstr "
msgid "No wheels found"
msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
#: ccdfunc.c:734
#: ccdfunc.c:739
msgid "Only show statistics"
msgstr "ôÏÌØËÏ ÏÔÏÂÒÁÚÉÔØ ÓÔÁÔÉÓÔÉËÕ"
#: ccdfunc.c:640
#: ccdfunc.c:645
#, c-format
msgid "Pixel size: %g x %g"
msgstr "òÁÚÍÅÒ ÐÉËÓÅÌÑ: %g x %g"
#: ccdfunc.c:772
#: ccdfunc.c:777
msgid "Read grabbed image"
msgstr "óÞÉÔÙ×ÁÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ"
#: ccdfunc.c:733
#: ccdfunc.c:738
#, c-format
msgid "Readout mode: %s"
msgstr "òÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ: %s"
@ -346,36 +346,36 @@ msgstr "
msgid "Server timeout"
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
#: ccdfunc.c:696
#: ccdfunc.c:701
#, c-format
msgid "Set brightness to %g"
msgstr "õÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
#: ccdfunc.c:633
#: ccdfunc.c:638
#, c-format
msgid "Set fan speed to %d"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ× × %d"
#: ccdfunc.c:690
#: ccdfunc.c:695
#, c-format
msgid "Set gain to %g"
msgstr "õÓÔÁÎÏ×ÉÔØ Gain × %g"
#: ccdfunc.c:664
#: ccdfunc.c:669
#, c-format
msgid "Shutter command: %s\n"
msgstr "ëÏÍÁÎÄÁ ÚÁÔ×ÏÒÁ: %s\n"
#: ccdfunc.c:850
#: ccdfunc.c:855
msgid "Some error when capture"
msgstr "ïÛÉÂËÁ ÐÒÉ ÚÁÈ×ÁÔÅ"
#: ccdfunc.c:669
#: ccdfunc.c:674
#, c-format
msgid "Try to configure I/O port as %d"
msgstr "ðÏÐÙÔËÁ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ ÐÏÒÔ I/O ËÁË %d"
#: ccdfunc.c:681
#: ccdfunc.c:686
#, c-format
msgid "Try to write %d to I/O port"
msgstr "ðÏÐÙÔËÁ ÚÁÐÉÓÉ %d × ÐÏÒÔ I/O"