some more fixes (but still got problems)

This commit is contained in:
2026-07-24 12:36:11 +03:00
parent 6c704fcf9b
commit 39b39fd948
12 changed files with 459 additions and 601 deletions

View File

@@ -287,8 +287,16 @@ static int camcapt(cc_IMG *ima){
ima->bitpix = bitpix; ima->bitpix = bitpix;
ima->w = camera.geometry.w; ima->w = camera.geometry.w;
ima->h = camera.geometry.h; ima->h = camera.geometry.h;
ima->bytelen = ima->w*ima->h*cc_getNbytes(ima); size_t nbytes = cc_getNbytes(ima);
bzero(ima->data, ima->h*ima->w*cc_getNbytes(ima)); size_t bytelen = ima->w * ima->h * nbytes;
if(bytelen > ima->datasize){
WARNX(_("Image size greater than buffer!"));
LOGWARN("ArtStar: Image size greater than buffer!");
ima->h = ima->datasize / ima->w;
}
LOGDBG("ArtStar: create new artifical star image: %zdx%zd pix", ima->w, ima->h);
ima->bytelen = ima->w * ima->h * nbytes;
bzero(ima->data, ima->datasize);
if(!star) ERRX(_("No star template - die")); if(!star) ERRX(_("No star template - die"));
if(bitpix == 16) gen16(ima); if(bitpix == 16) gen16(ima);
else gen8(ima); else gen8(ima);
@@ -368,7 +376,9 @@ static int camsetgeom(cc_frameformat *f){
if(!f) return FALSE; if(!f) return FALSE;
if(f->xoff > ARRAYW-2 || f->yoff > ARRAYH-2) return FALSE; if(f->xoff > ARRAYW-2 || f->yoff > ARRAYH-2) return FALSE;
if(f->xoff < 0 || f->yoff < 0 || f->h < 0 || f->w < 0) return FALSE; if(f->xoff < 0 || f->yoff < 0 || f->h < 0 || f->w < 0) return FALSE;
if(f->h + f->yoff > ARRAYH || f->w + f->xoff > ARRAYW) return FALSE; if(f->h + f->yoff >= ARRAYH || f->w + f->xoff >= ARRAYW) return FALSE;
LOGDBG("ArtStar: geometry changed to: %zdx%zd (offset) - %zdx%zd (w/h)",
f->xoff, f->yoff, f->w, f->h);
camera.geometry = *f; camera.geometry = *f;
return TRUE; return TRUE;
} }

View File

@@ -29,12 +29,6 @@
#include <unistd.h> #include <unistd.h>
#include <usefull_macros.h> #include <usefull_macros.h>
#include "client.h"
#include "cmdlnopts.h"
#ifdef IMAGEVIEW
#include "imageview.h"
#endif
#include "server.h"
#include "socket.h" #include "socket.h"
#ifdef EBUG #ifdef EBUG
@@ -415,6 +409,7 @@ cc_IMG *cc_getshm(key_t key, size_t imsize){
bzero(ptr, sizeof(cc_IMG)); bzero(ptr, sizeof(cc_IMG));
ptr->data = (void*)((uint8_t*)ptr + sizeof(cc_IMG)); ptr->data = (void*)((uint8_t*)ptr + sizeof(cc_IMG));
ptr->MAGICK = CC_SHM_MAGIC; ptr->MAGICK = CC_SHM_MAGIC;
ptr->datasize = imsize;
return ptr; return ptr;
} }
@@ -840,44 +835,6 @@ int cc_kwfromfile(fitsfile *fp, char *filename){
return written; return written;
} }
#if 0
/**
* @brief cc_charbuf2kw - write all keywords from `b` to file `f`
* `b` should be prepared by cc_kwfromfile or similar
* @param b - buffer with '\n'-separated FITS keys
* @param f - file to write
* @return FALSE if failed
*/
int cc_charbuf2kw(cc_charbuff *b, fitsfile *f){
if(!b || !f || !b->buflen) return FALSE;
char key[FLEN_KEYWORD + 1], card[FLEN_CARD+1]; // keyword to update
char *c = b->buf, *eof = b->buf + b->buflen;
while(c < eof){
char *e = strchr(c, '\n');
if(!e || e > eof) break;
//char *ek = strchr(c, ' ');
char *eq = strchr(c, '=');
//if(eq > ek) eq = ek; // if keyword is shorter than 8 letters
//size_t l = eq-c; if(l > FLEN_KEYWORD) l = FLEN_KEYWORD;
//memcpy(key, c, l); key[l] = 0;
memcpy(key, c, 8); key[8] = 0;
size_t l = e - c; if(l > FLEN_CARD) l = FLEN_CARD;
memcpy(card, c, l); card[l] = 0;
int status = 0;
if(eq - c == 8){ // key = val
DBG("Update key `%s` with `%s`", key, card);
fits_update_card(f, key, card, &status);
}else{ // comment etc
DBG("Write full record `%s`", card);
fits_write_record(f, card, &status);
}
if(status) fits_report_error(stderr, status);
c = e + 1;
}
return TRUE;
}
#endif
static size_t print_val(cc_partype_t t, void *val, char *buf, size_t bufl){ static size_t print_val(cc_partype_t t, void *val, char *buf, size_t bufl){
size_t l = 0; size_t l = 0;
switch(t){ switch(t){
@@ -1065,7 +1022,7 @@ void cc_freeimage(cc_IMG **i){
*/ */
int cc_copyimage(cc_IMG *dest, cc_IMG *src, int isshm){ int cc_copyimage(cc_IMG *dest, cc_IMG *src, int isshm){
FNAME(); FNAME();
if(!src || !dest || !src->data) return FALSE; if(!src || !dest || !src->data || src == dest) return FALSE;
if(src->MAGICK != CC_SHM_MAGIC){ if(src->MAGICK != CC_SHM_MAGIC){
WARNX(_("Wrong image: bad magick (0x%X instead of 0x%X)"), src->MAGICK, CC_SHM_MAGIC); WARNX(_("Wrong image: bad magick (0x%X instead of 0x%X)"), src->MAGICK, CC_SHM_MAGIC);
return FALSE; return FALSE;
@@ -1075,6 +1032,8 @@ int cc_copyimage(cc_IMG *dest, cc_IMG *src, int isshm){
return FALSE; return FALSE;
} }
DBG("Lock"); DBG("Lock");
if(isshm) cc_lock_shm(FALSE);
else pthread_mutex_lock(&src->mutex);
pthread_mutex_lock(&dest->mutex); pthread_mutex_lock(&dest->mutex);
dest->MAGICK = CC_SHM_MAGIC; dest->MAGICK = CC_SHM_MAGIC;
if(!dest->data || dest->datasize < src->bytelen){ if(!dest->data || dest->datasize < src->bytelen){
@@ -1085,6 +1044,8 @@ int cc_copyimage(cc_IMG *dest, cc_IMG *src, int isshm){
LOGERR("realloc() failed"); LOGERR("realloc() failed");
WARN("realloc()"); WARN("realloc()");
pthread_mutex_unlock(&dest->mutex); pthread_mutex_unlock(&dest->mutex);
if(isshm) cc_unlock_shm();
else pthread_mutex_unlock(&src->mutex);
return FALSE; return FALSE;
} }
dest->data = nxt; dest->data = nxt;
@@ -1092,30 +1053,13 @@ int cc_copyimage(cc_IMG *dest, cc_IMG *src, int isshm){
DBG("Success"); DBG("Success");
} }
DBG("Copy %zd bytes of fields", offsetof(cc_IMG, end_of_copyable_data) - offsetof(cc_IMG, start_of_copyable_data)); DBG("Copy %zd bytes of fields", offsetof(cc_IMG, end_of_copyable_data) - offsetof(cc_IMG, start_of_copyable_data));
#if 0 size_t oldsz = dest->datasize;
#define COPY(field) dest->field = src->field;
COPY(timestamp);
COPY(bitpix);
COPY(w);
COPY(h);
COPY(bytelen);
COPY(imnumber);
COPY(pixel_x);
COPY(pixel_y);
COPY(gain);
COPY(ccd_temp);
COPY(exposure_time);
COPY(bin_x);
COPY(bin_y);
#undef COPY
memcpy(dest->model, src->model, MODELNM_SZ);
#endif
uint8_t *tagaddr = (uint8_t*)dest + offsetof(cc_IMG, start_of_copyable_data); uint8_t *tagaddr = (uint8_t*)dest + offsetof(cc_IMG, start_of_copyable_data);
uint8_t *srcaddr = (uint8_t*)src + offsetof(cc_IMG, start_of_copyable_data); uint8_t *srcaddr = (uint8_t*)src + offsetof(cc_IMG, start_of_copyable_data);
memcpy(tagaddr, srcaddr, memcpy(tagaddr, srcaddr,
offsetof(cc_IMG, end_of_copyable_data) - offsetof(cc_IMG, start_of_copyable_data)); offsetof(cc_IMG, end_of_copyable_data) - offsetof(cc_IMG, start_of_copyable_data));
DBG("TS after copy: dest=%.5f, src=%.5f", dest->timestamp, src->timestamp);
DBG("Copy %zd bytes of data", src->bytelen); DBG("Copy %zd bytes of data", src->bytelen);
dest->datasize = oldsz;
void *srcdata = src->data; void *srcdata = src->data;
if(isshm){ if(isshm){
srcdata = (void*)((uint8_t*)src + sizeof(cc_IMG)); srcdata = (void*)((uint8_t*)src + sizeof(cc_IMG));
@@ -1124,5 +1068,7 @@ int cc_copyimage(cc_IMG *dest, cc_IMG *src, int isshm){
memcpy(dest->data, srcdata, src->bytelen); memcpy(dest->data, srcdata, src->bytelen);
DBG("All OK"); DBG("All OK");
pthread_mutex_unlock(&dest->mutex); pthread_mutex_unlock(&dest->mutex);
if(isshm) cc_unlock_shm();
else pthread_mutex_unlock(&src->mutex);
return TRUE; return TRUE;
} }

View File

@@ -293,16 +293,6 @@ typedef enum{
#define CC_CMD_FASTSPD "fastspeed" #define CC_CMD_FASTSPD "fastspeed"
#define CC_CMD_DARK "dark" #define CC_CMD_DARK "dark"
#define CC_CMD_INFTY "infty" #define CC_CMD_INFTY "infty"
#if 0
// FITS file keywords
#define CC_CMD_GETHEADERS "getheaders"
#define CC_CMD_AUTHOR "author"
#define CC_CMD_INSTRUMENT "instrument"
#define CC_CMD_OBSERVER "observer"
#define CC_CMD_OBJECT "object"
#define CC_CMD_PROGRAM "program"
#define CC_CMD_OBJTYPE "objtype"
#endif
// focuser // focuser
#define CC_CMD_FOCLIST "foclist" #define CC_CMD_FOCLIST "foclist"

247
ccdfunc.c
View File

@@ -18,7 +18,6 @@
#include <fitsio.h> #include <fitsio.h>
#include <math.h> #include <math.h>
#include <signal.h> // pthread_kill
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <sys/stat.h> #include <sys/stat.h>
@@ -31,7 +30,6 @@
#ifdef IMAGEVIEW #ifdef IMAGEVIEW
#include "imageview.h" #include "imageview.h"
#endif #endif
#include "omp.h"
cc_Camera *camera = NULL; cc_Camera *camera = NULL;
cc_Focuser *focuser = NULL; cc_Focuser *focuser = NULL;
@@ -76,126 +74,6 @@ static int check_filenameprefix(char *buff, int buflen){
return FALSE; return FALSE;
} }
#if 0
/**
* @brief fillFITSheader (server-side only!) - update img->fitsheader by image data and additional headers
* @param img (io) - image to update
* @return img->headerstrings
*/
size_t fillFITSheader(cc_IMG *img){
if(!img) return 0;
img->headerstrings = 0;
char card[FLEN_CARD], templ[2*FLEN_CARD], bufc[FLEN_CARD];
#define FORMKW(in) \
do{ int status = 0, kt = 0; \
fits_parse_template(in, card, &kt, &status); \
if(status) fits_report_error(stderr, status);\
else addrecord(fp, card); \
}while(0)
#define FORMINT(key, val, comment) do{ \
snprintf(templ, FLEN_CARD, "%s = %d / %s", key, val, comment); \
FORMKW(templ); \
}while(0)
#define FORMFLT(key, val, comment) do{ \
snprintf(templ, FLEN_CARD, "%s = %g / %s", key, val, comment); \
FORMKW(templ); \
}while(0)
#define FORMSTR(key, val, comment) do{ \
snprintf(templ, 2*FLEN_CARD, "%s = '%s' / %s", key, val, comment); \
FORMKW(templ); \
}while(0)
calculate_stat(img);
float tmpf = 0.0;
int tmpi = 0;
FORMKW("ORIGIN = 'SAO RAS' / Organization responsible for the data");
FORMKW("OBSERVAT = 'Special Astrophysical Observatory, Russia' / Observatory name");
FORMKW("INSTRUME = 'direct imaging' / Instrument");
if(camera){
snprintf(templ, FLEN_CARD, "VIEWFLD = '(%d, %d)(%d, %d)' / Camera maximal field of view", camera->field.xoff, camera->field.yoff,
camera->field.xoff + camera->field.w, camera->field.yoff + camera->field.h);
FORMKW(templ);
snprintf(templ, FLEN_CARD, "ARRAYFLD = '(%d, %d)(%d, %d)' / Camera full array size (with overscans)", camera->array.xoff, camera->array.yoff,
camera->array.xoff + camera->array.w, camera->array.yoff + camera->array.h);
FORMKW(templ);
snprintf(templ, FLEN_CARD, "GEOMETRY = '(%d, %d)(%d, %d)' / Camera current frame geometry", camera->geometry.xoff, camera->geometry.yoff,
camera->geometry.xoff + camera->geometry.w, camera->geometry.yoff + camera->geometry.h);
}
FORMKW(templ);
if(GP->X0 > -1) FORMINT("X0", GP->X0, "Subframe left border without binning");
if(GP->Y0 > -1) FORMINT("Y0", GP->Y0, "Subframe upper border without binning");
if(GP->dark) sprintf(bufc, "dark");
else if(GP->objtype) strncpy(bufc, GP->objtype, FLEN_CARD);
else sprintf(bufc, "light");
FORMSTR("IMAGETYP", bufc, "Image type");
FORMINT("DATAMIN", 0, "Min pixel value");
FORMINT("DATAMAX", (1<<img->bitpix) - 1, "Max pixel value");
FORMINT("STATMIN", img->min, "Min data value");
FORMINT("STATMAX", img->max, "Max data value");
FORMFLT("STATAVR", img->avr, "Average data value");
FORMFLT("STATSTD", img->std, "Std. of data value");
if(camera){
if(camera->getTcold && camera->getTcold(&tmpf))
FORMFLT("CAMTEMP", tmpf, "Camera temperature at exp. end, degr C");
if(camera->getTbody && camera->getTbody(&tmpf))
FORMFLT("BODYTEMP", tmpf, "Camera body temperature at exp. end, degr C");
if(camera->getThot && camera->getThot(&tmpf))
FORMFLT("HOTTEMP", tmpf, "Camera peltier hot side temperature at exp. end, degr C");
FORMFLT( "EXPTIME", GP->exptime, "Actual exposition time (sec)");
if(camera->getgain && camera->getgain(&tmpf))
FORMFLT("CAMGAIN", tmpf, "CMOS gain value");
if(camera->getbrightness && camera->getbrightness(&tmpf))
FORMFLT("CAMBRIGH", tmpf, "CMOS brightness value");
}
snprintf(templ, 2*FLEN_CARD, "TIMESTAM = %.6f / Time of acquisition end (UNIX)", img->timestamp);
FORMKW(templ);
FORMINT("IMSEQNO", (int)img->imnumber, "Number of image in full sequence");
// BINNING / Binning
snprintf(templ, FLEN_CARD, "BINNING = '%d x %d' / Binning (hbin x vbin)", GP->hbin, GP->vbin);
FORMKW(templ);
FORMINT("XBINNING", GP->hbin, "Binning factor used on X axis");
FORMINT("YBINNING", GP->vbin, "Binning factor used on Y axis");
if(focuser){ // there is a focuser device - add info
if(focuser->getModelName && focuser->getModelName(bufc, FLEN_CARD))
FORMSTR("FOCUSER", bufc, "Focuser model");
if(focuser->getPos && focuser->getPos(&tmpf))
FORMFLT("FOCUS", tmpf, "Current focuser position, mm");
if(focuser->getMinPos && focuser->getMinPos(&tmpf))
FORMFLT("FOCMIN", tmpf, "Minimal focuser position, mm");
if(focuser->getMaxPos && focuser->getMaxPos(&tmpf))
FORMFLT("FOCMAX", tmpf, "Maximal focuser position, mm");
if(focuser->getTbody && focuser->getTbody(&tmpf))
FORMFLT("FOCTEMP", tmpf, "Focuser body temperature, degr C");
}
if(wheel){ // there is a filter wheel device - add info
if(wheel->getModelName && wheel->getModelName(bufc, FLEN_CARD)){
FORMSTR("WHEEL", bufc, "Filter wheel model");
}
if(wheel->getPos && wheel->getPos(&tmpi))
FORMINT("FILTER", tmpi, "Current filter number");
if(wheel->getMaxPos && wheel->getMaxPos(&tmpi))
FORMINT("FILTMAX", tmpi, "Amount of filter positions");
if(wheel->getTbody && wheel->getTbody(&tmpf))
FORMFLT("FILTTEMP", tmpf, "Filter wheel body temperature, degr C");
}
if(GP->addhdr){ // add records from server-side files
char **nxtfile = GP->addhdr;
while(*nxtfile){
cc_kwfromfile(img, *(nxtfile++));
}
}
// add these keywords after all to override records from files
if(GP->observers) FORMSTR("OBSERVER", GP->observers, "Observers");
if(GP->prog_id) FORMSTR("PROG-ID", GP->prog_id, "Observation program identifier");
if(GP->author) FORMSTR("AUTHOR", GP->author, "Author of the program");
if(GP->objname) FORMSTR("OBJECT", GP->objname, "Object name");
if(camera && camera->getModelName && camera->getModelName(bufc, FLEN_CARD))
FORMSTR("DETECTOR", bufc, "Detector model");
if(GP->instrument) FORMSTR("INSTRUME", GP->instrument, "Instrument");
return img->headerstrings;
}
#endif
// save FITS file `img` into GP->outfile or GP->outfileprefix_XXXX.fits // save FITS file `img` into GP->outfile or GP->outfileprefix_XXXX.fits
// if outp != NULL, put into it strdup() of last file name // if outp != NULL, put into it strdup() of last file name
// return FALSE if failed // return FALSE if failed
@@ -296,13 +174,13 @@ int saveFITS(cc_IMG *img, char **outp){
FORMSTR("IMAGETYP", bufc, "Image type"); FORMSTR("IMAGETYP", bufc, "Image type");
// geometry // geometry
snprintf(templ, FLEN_CARD, "VIEWFLD = '(%d, %d)(%d, %d)' / Camera maximal field of view", img->field.xoff, img->field.yoff, snprintf(templ, FLEN_CARD, "VIEWFLD = '(%d, %d)(%d, %d)' / Camera maximal field of view", img->field.xoff, img->field.yoff,
img->field.xoff + img->field.w, img->field.yoff + img->field.h); img->field.xoff + img->field.w - 1, img->field.yoff + img->field.h - 1);
FORMKW(templ); FORMKW(templ);
snprintf(templ, FLEN_CARD, "ARRAYFLD = '(%d, %d)(%d, %d)' / Camera full array size (with overscans)", img->array.xoff, img->array.yoff, snprintf(templ, FLEN_CARD, "ARRAYFLD = '(%d, %d)(%d, %d)' / Camera full array size (with overscans)", img->array.xoff, img->array.yoff,
img->array.xoff + img->array.w, img->array.yoff + img->array.h); img->array.xoff + img->array.w - 1, img->array.yoff + img->array.h - 1);
FORMKW(templ); FORMKW(templ);
snprintf(templ, FLEN_CARD, "GEOMETRY = '(%d, %d)(%d, %d)' / Camera current frame geometry", img->geometry.xoff, img->geometry.yoff, snprintf(templ, FLEN_CARD, "GEOMETRY = '(%d, %d)(%d, %d)' / Camera current frame geometry", img->geometry.xoff, img->geometry.yoff,
img->geometry.xoff + img->geometry.w, img->geometry.yoff + img->geometry.h); img->geometry.xoff + img->geometry.w - 1, img->geometry.yoff + img->geometry.h - 1);
FORMKW(templ); FORMKW(templ);
FORMINT("X0", img->geometry.xoff, "Subframe left border without binning"); FORMINT("X0", img->geometry.xoff, "Subframe left border without binning");
FORMINT("Y0", img->geometry.yoff, "Subframe upper border without binning"); FORMINT("Y0", img->geometry.yoff, "Subframe upper border without binning");
@@ -358,12 +236,7 @@ int saveFITS(cc_IMG *img, char **outp){
// creation date/time // creation date/time
int s = 0; int s = 0;
fits_write_date(fp, &s); fits_write_date(fp, &s);
/*
s = 0;
fits_write_comment(fp, bufhdr->buf, &s);
s = 0;
fits_write_history(fp, bufhdr->buf, &s);
*/
tm_time = localtime(&savetime); tm_time = localtime(&savetime);
WRITEKEY(fp, TDOUBLE, "UNIXTIME", &dsavetime, "File creation time (UNIX)"); WRITEKEY(fp, TDOUBLE, "UNIXTIME", &dsavetime, "File creation time (UNIX)");
strftime(bufc, FLEN_VALUE, "%Y/%m/%d", tm_time); strftime(bufc, FLEN_VALUE, "%Y/%m/%d", tm_time);
@@ -378,6 +251,7 @@ fits_write_history(fp, bufhdr->buf, &s);
//WRITEKEY(fp, TSTRING, "FILE", n, "Input file original name"); //WRITEKEY(fp, TSTRING, "FILE", n, "Input file original name");
if(nbytes == 1) TRYFITS(fits_write_img, fp, TBYTE, 1, width * height, img->data); if(nbytes == 1) TRYFITS(fits_write_img, fp, TBYTE, 1, width * height, img->data);
else TRYFITS(fits_write_img, fp, TUSHORT, 1, width * height, img->data); else TRYFITS(fits_write_img, fp, TUSHORT, 1, width * height, img->data);
cloerr: cloerr:
TRYFITS(fits_close_file, fp); TRYFITS(fits_close_file, fp);
pthread_mutex_unlock(&img->mutex); pthread_mutex_unlock(&img->mutex);
@@ -522,7 +396,7 @@ void focusers(){
verbose(VERBOSE_PRIMARY, _("Found focuser #%d: %s\n"), i, modname); verbose(VERBOSE_PRIMARY, _("Found focuser #%d: %s\n"), i, modname);
} }
} }
if(!setFocuserNo(GP->focdevno, NULL, NULL)) goto retn; if(!setFocuserNo(GP->focdevno, NULL, NULL)) return;
char buf[BUFSIZ]; char buf[BUFSIZ];
if(focuser->getModelName(buf, BUFSIZ)){ if(focuser->getModelName(buf, BUFSIZ)){
verbose(VERBOSE_SECONDARY, "Focuser model: %s", buf); verbose(VERBOSE_SECONDARY, "Focuser model: %s", buf);
@@ -538,11 +412,11 @@ void focusers(){
DBG("FOCMINPOS=%g, FOCMAXPOS=%g", focminpos, focmaxpos); DBG("FOCMINPOS=%g, FOCMAXPOS=%g", focminpos, focmaxpos);
if(!focuser->getPos(&curpos)){ if(!focuser->getPos(&curpos)){
WARNX(_("Can't get current focuser position")); WARNX(_("Can't get current focuser position"));
goto retn; return;
} }
verbose(VERBOSE_PRIMARY, "FOCPOS=%g", curpos); verbose(VERBOSE_PRIMARY, "FOCPOS=%g", curpos);
DBG("Curpos = %g", curpos); DBG("Curpos = %g", curpos);
if(isnan(GP->gotopos) && isnan(GP->addsteps)) goto retn; // no focuser commands if(isnan(GP->gotopos) && isnan(GP->addsteps)) return; // no focuser commands
float tagpos = 0.; float tagpos = 0.;
if(!isnan(GP->gotopos)){ // set absolute position if(!isnan(GP->gotopos)){ // set absolute position
tagpos = GP->gotopos; tagpos = GP->gotopos;
@@ -552,15 +426,13 @@ void focusers(){
DBG("tagpos: %g", tagpos); DBG("tagpos: %g", tagpos);
if(tagpos < focminpos || tagpos > focmaxpos){ if(tagpos < focminpos || tagpos > focmaxpos){
WARNX(_("Can't set position %g: out of limits [%g, %g]"), tagpos, focminpos, focmaxpos); WARNX(_("Can't set position %g: out of limits [%g, %g]"), tagpos, focminpos, focmaxpos);
goto retn; return;
} }
if(tagpos - focminpos < __FLT_EPSILON__){ if(tagpos - focminpos < __FLT_EPSILON__){
if(!focuser->home(GP->async)) WARNX(_("Can't home focuser")); if(!focuser->home(GP->async)) WARNX(_("Can't home focuser"));
}else{ }else{
if(!focuser->setAbsPos(GP->async, tagpos)) WARNX(_("Can't set position %g"), tagpos); if(!focuser->setAbsPos(GP->async, tagpos)) WARNX(_("Can't set position %g"), tagpos);
} }
retn:
focclose();
} }
cc_Wheel *startWheel(){ cc_Wheel *startWheel(){
@@ -628,7 +500,10 @@ void wheels(){
verbose(VERBOSE_PRIMARY, _("Found wheel #%d: %s\n"), i, modname); verbose(VERBOSE_PRIMARY, _("Found wheel #%d: %s\n"), i, modname);
} }
} }
if(!setWheelNo(GP->whldevno, NULL)) goto retn; if(!setWheelNo(GP->whldevno, NULL)){
closewheel();
return;
}
char buf[BUFSIZ]; char buf[BUFSIZ];
if(wheel->getModelName(buf, BUFSIZ)){ if(wheel->getModelName(buf, BUFSIZ)){
verbose(VERBOSE_SECONDARY, _("Wheel model: %s"), buf); verbose(VERBOSE_SECONDARY, _("Wheel model: %s"), buf);
@@ -643,22 +518,14 @@ void wheels(){
}else WARNX(_("Can't get current wheel position")); }else WARNX(_("Can't get current wheel position"));
verbose(VERBOSE_PRIMARY, "WHEELMAXPOS=%d", wmaxpos); verbose(VERBOSE_PRIMARY, "WHEELMAXPOS=%d", wmaxpos);
pos = GP->setwheel; pos = GP->setwheel;
if(pos == -1) goto retn; // no wheel commands if(pos == -1) return; // no wheel commands
if(pos < 0 || pos > wmaxpos){ if(pos < 0 || pos > wmaxpos){
WARNX(_("Wheel position should be from 0 to %d"), wmaxpos); WARNX(_("Wheel position should be from 0 to %d"), wmaxpos);
goto retn; return;
} }
if(!wheel->setPos(pos)) if(!wheel->setPos(pos))
WARNX(_("Can't set wheel position %d"), pos); WARNX(_("Can't set wheel position %d"), pos);
retn:
closewheel();
} }
/*
static void closeall(){
if(camera){camera->close(); camera = NULL;}
if(focuser){focuser->close(); focuser = NULL;}
if(wheel){wheel->close(); wheel = NULL;}
}*/
static cc_capture_status capt(){ static cc_capture_status capt(){
cc_capture_status cs; cc_capture_status cs;
@@ -772,15 +639,15 @@ int prepare_ccds(){
verbose(VERBOSE_SECONDARY, _("Pixel size: %g x %g"), camera->pixX, camera->pixY); verbose(VERBOSE_SECONDARY, _("Pixel size: %g x %g"), camera->pixX, camera->pixY);
x0 = camera->array.xoff; x0 = camera->array.xoff;
y0 = camera->array.yoff; y0 = camera->array.yoff;
x1 = camera->array.xoff + camera->array.w; x1 = camera->array.xoff + camera->array.w - 1;
y1 = camera->array.yoff + camera->array.h; y1 = camera->array.yoff + camera->array.h - 1;
snprintf(buf, BUFSIZ, "(%d, %d)(%d, %d)", x0, y0, x1, y1); snprintf(buf, BUFSIZ, "(%d, %d)(%d, %d)", x0, y0, x1, y1);
verbose(VERBOSE_SECONDARY, _("Full array: %s"), buf); verbose(VERBOSE_SECONDARY, _("Full array: %s"), buf);
snprintf(buf, BUFSIZ, "(%d, %d)(%d, %d)", camera->field.xoff, camera->field.yoff, snprintf(buf, BUFSIZ, "(%d, %d)(%d, %d)", camera->field.xoff, camera->field.yoff,
camera->field.xoff + camera->field.w, camera->field.yoff + camera->field.h); camera->field.xoff + camera->field.w - 1, camera->field.yoff + camera->field.h - 1);
verbose(VERBOSE_SECONDARY, _("Field of view: %s"), buf); verbose(VERBOSE_SECONDARY, _("Field of view: %s"), buf);
snprintf(buf, BUFSIZ, "(%d, %d)(%d, %d)", camera->geometry.xoff, camera->geometry.yoff, snprintf(buf, BUFSIZ, "(%d, %d)(%d, %d)", camera->geometry.xoff, camera->geometry.yoff,
camera->geometry.xoff + camera->geometry.w, camera->geometry.yoff + camera->geometry.h); camera->geometry.xoff + camera->geometry.w - 1, camera->geometry.yoff + camera->geometry.h - 1);
verbose(VERBOSE_SECONDARY, _("Current format: %s"), buf); verbose(VERBOSE_SECONDARY, _("Current format: %s"), buf);
cc_frameformat max, step; cc_frameformat max, step;
if(camera->getgeomlimits && camera->getgeomlimits(&max, &step)){ if(camera->getgeomlimits && camera->getgeomlimits(&max, &step)){
@@ -852,14 +719,14 @@ int prepare_ccds(){
WARNX(_("Can't set binning %dx%d"), GP->hbin, GP->vbin); WARNX(_("Can't set binning %dx%d"), GP->hbin, GP->vbin);
if(camera->getbin) camera->getbin(&GP->hbin, &GP->vbin); if(camera->getbin) camera->getbin(&GP->hbin, &GP->vbin);
} }
if(GP->X0 < 0) GP->X0 = x0; // default values if(GP->X0 < x0) GP->X0 = x0; // default values
else if(GP->X0 > x1-1) GP->X0 = x1-1; else if(GP->X0 > x1-1) GP->X0 = x1-1;
if(GP->Y0 < 0) GP->Y0 = y0; if(GP->Y0 < y0) GP->Y0 = y0;
else if(GP->Y0 > y1-1) GP->Y0 = y1-1; else if(GP->Y0 > y1-1) GP->Y0 = y1-1;
if(GP->X1 < GP->X0+1 || GP->X1 > x1) GP->X1 = x1; if(GP->X1 < GP->X0+1 || GP->X1 > x1) GP->X1 = x1;
if(GP->Y1 < GP->Y0+1 || GP->Y1 > y1) GP->Y1 = y1; if(GP->Y1 < GP->Y0+1 || GP->Y1 > y1) GP->Y1 = y1;
DBG("x1/x0: %d/%d", GP->X1, GP->X0); DBG("x1/x0: %d/%d", GP->X1, GP->X0);
cc_frameformat fmt = {.w = GP->X1 - GP->X0, .h = GP->Y1 - GP->Y0, .xoff = GP->X0, .yoff = GP->Y0}; cc_frameformat fmt = {.w = GP->X1 - GP->X0 + 1, .h = GP->Y1 - GP->Y0 + 1, .xoff = GP->X0, .yoff = GP->Y0};
if(!camera->setgeometry || !camera->setgeometry(&fmt)) if(!camera->setgeometry || !camera->setgeometry(&fmt))
ERRX(_("Can't set given geometry")); ERRX(_("Can't set given geometry"));
verbose(VERBOSE_MESG, "Geometry: off=%d/%d, wh=%d/%d", fmt.xoff, fmt.yoff, fmt.w, fmt.h); verbose(VERBOSE_MESG, "Geometry: off=%d/%d, wh=%d/%d", fmt.xoff, fmt.yoff, fmt.w, fmt.h);
@@ -891,6 +758,42 @@ retn:
return rtn; return rtn;
} }
/**
* @brief image_init_camdata - init image fields with base camera data
* @param img (io) - image
* @param cam etc - camera, focuser and wheel devices
* @return FALSE if failed
*/
int image_init_camdata(cc_IMG *ima){
if(!ima ) return FALSE;
if(camera->getModelName){
if(camera->getModelName(ima->model, MODELNM_SZ-1)) ima->model[MODELNM_SZ-1] = 0;
else ima->model[0] = 0;
}
ima->pixel_x = camera->pixX;
ima->pixel_y = camera->pixY;
// fill constant parameters
if(wheel){
int i;
if(wheel->getModelName){
if(wheel->getModelName(ima->wmodel, MODELNM_SZ-1)) ima->wmodel[MODELNM_SZ-1] = 0;
else ima->wmodel[0] = 0;
}
if(wheel->getMaxPos && wheel->getMaxPos(&i)) ima->wheelmax = i;
else ima->wheelmax = 0;
}
if(focuser){
if(focuser->getModelName){
if(focuser->getModelName(ima->fmodel, MODELNM_SZ-1)) ima->fmodel[MODELNM_SZ-1] = 0;
else ima->fmodel[0] = 0;
}
if(!focuser->getMinPos || !focuser->getMinPos(&ima->focmin)) ima->focmin = NAN;
if(!focuser->getMaxPos || !focuser->getMaxPos(&ima->focmax)) ima->focmax = NAN;
}
return TRUE;
}
// fill base fields of fresh image
void fill_image_fields(cc_IMG *ima){ void fill_image_fields(cc_IMG *ima){
if(!ima) return; if(!ima) return;
ima->gotstat = 0; // fresh image without statistics - recalculate when save ima->gotstat = 0; // fresh image without statistics - recalculate when save
@@ -939,11 +842,14 @@ void ccds(){
cc_frameformat fmt = camera->geometry; cc_frameformat fmt = camera->geometry;
int raw_width = fmt.w / GP->hbin, raw_height = fmt.h / GP->vbin; int raw_width = fmt.w / GP->hbin, raw_height = fmt.h / GP->vbin;
DBG("w=%d, h=%d", raw_width, raw_height); DBG("w=%d, h=%d", raw_width, raw_height);
// allocate maximum available memory - for 16bit image uint8_t bitpix = 16;
uint16_t *img = MALLOC(uint16_t, raw_width * raw_height); if(camera->getbitpix) camera->getbitpix(&bitpix);
DBG("\n\nAllocated image 2x%dx%d=%d", raw_width, raw_height, 2 * raw_width * raw_height); cc_IMG *image = cc_newimage(bitpix, raw_width, raw_height);
cc_IMG ima = {.data = img, .w = raw_width, .h = raw_height}; if(!image) ERRX(_("Can't allocate image memory"));
if(!camera->getbitpix || !camera->getbitpix(&ima.bitpix)) ima.bitpix = 16; if(!image_init_camdata(image)) WARNX(_("Can't fill headers with camera data"));
image->exposure_time = GP->exptime;
image->bin_x = GP->hbin;
image->bin_y = GP->vbin;
if(GP->nframes < 1) GP->nframes = 1; if(GP->nframes < 1) GP->nframes = 1;
for(int j = 0; j < GP->nframes; ++j){ for(int j = 0; j < GP->nframes; ++j){
TIMEINIT(); TIMEINIT();
@@ -962,17 +868,16 @@ void ccds(){
verbose(VERBOSE_SECONDARY, _("Read grabbed image")); verbose(VERBOSE_SECONDARY, _("Read grabbed image"));
TIMESTAMP("Read grabbed"); TIMESTAMP("Read grabbed");
if(!camera->capture) ERRX(_("Camera plugin have no function `capture`")); if(!camera->capture) ERRX(_("Camera plugin have no function `capture`"));
if(!camera->capture(&ima)){ if(!camera->capture(image)){
WARNX(_("Can't grab image")); WARNX(_("Can't grab image"));
break; break;
} }
ima.timestamp = sl_dtime(); fill_image_fields(image);
++ima.imnumber; ++image->imnumber;
ima.gotstat = 0;
TIMESTAMP("Calc stat"); TIMESTAMP("Calc stat");
calculate_stat(&ima); calculate_stat(image);
TIMESTAMP("Save fits"); TIMESTAMP("Save fits");
saveFITS(&ima, NULL); saveFITS(image, NULL);
TIMESTAMP("Ready"); TIMESTAMP("Ready");
if(GP->pause_len && j != (GP->nframes - 1)){ if(GP->pause_len && j != (GP->nframes - 1)){
double delta, time1 = sl_dtime() + GP->pause_len; double delta, time1 = sl_dtime() + GP->pause_len;
@@ -988,7 +893,7 @@ void ccds(){
} }
} }
DBG("FREE img"); DBG("FREE img");
FREE(img); cc_freeimage(&image);
closecam(); closecam();
} }
@@ -1049,8 +954,6 @@ static void *grabnext(void *arg){
return NULL; return NULL;
} }
/** /**
* @brief ccdcaptured - get new image data for viewer * @brief ccdcaptured - get new image data for viewer
* @param img - pointer to cc_IMG* (if cc_IMG* is NULL, will be allocated here) * @param img - pointer to cc_IMG* (if cc_IMG* is NULL, will be allocated here)
@@ -1064,16 +967,12 @@ int ccdcaptured(cc_IMG *imgptr){
DBG("Wait for grabbing thread ends"); DBG("Wait for grabbing thread ends");
if(grabthread){ if(grabthread){
exitgrab = TRUE; exitgrab = TRUE;
//pthread_cancel(grabthread); // this kills some cameras
//pthread_timedjoin_np
pthread_join(grabthread, NULL); pthread_join(grabthread, NULL);
grabthread = 0; grabthread = 0;
} }
DBG("OK"); DBG("OK");
return FALSE; return FALSE;
} }
//cc_frameformat fmt = camera->geometry;
//int raw_width = fmt.w / GP->hbin, raw_height = fmt.h / GP->vbin;
if(!grabthread){ // start new grab if(!grabthread){ // start new grab
TIMESTAMP("Start new grab"); TIMESTAMP("Start new grab");
@@ -1084,8 +983,6 @@ int ccdcaptured(cc_IMG *imgptr){
} }
}else{ // grab in process }else{ // grab in process
if(imgptr->imnumber != lastgrabno){ // done if(imgptr->imnumber != lastgrabno){ // done
/*ssize_t delta = ima->imnumber - lastgrabno;
if(delta > 0 && delta != 1) WARNX("ccdcaptured(): missed %zd images", delta-1);*/
lastgrabno = imgptr->imnumber; lastgrabno = imgptr->imnumber;
TIMESTAMP("Got exp #%zd", lastgrabno); TIMESTAMP("Got exp #%zd", lastgrabno);
framerate(); framerate();

View File

@@ -26,10 +26,13 @@ extern cc_Wheel *wheel;
void calculate_stat(cc_IMG *image); void calculate_stat(cc_IMG *image);
size_t fillFITSheader(cc_IMG *img); size_t fillFITSheader(cc_IMG *img);
int saveFITS(cc_IMG *img, char **outp); // for imageview module int saveFITS(cc_IMG *img, char **outp); // for imageview module
void fill_image_fields(cc_IMG *ima);
int image_init_camdata(cc_IMG *ima);
void focusers(); void focusers();
void wheels(); void wheels();
int prepare_ccds(); int prepare_ccds();
void fill_image_fields(cc_IMG *ima);
void ccds(); void ccds();
void camstop(); void camstop();

View File

@@ -263,17 +263,6 @@ static void send_headers(int sock){
if(GP->dark) SENDMSGW(CC_CMD_DARK, "=1"); if(GP->dark) SENDMSGW(CC_CMD_DARK, "=1");
else SENDMSGW(CC_CMD_DARK, "=0"); else SENDMSGW(CC_CMD_DARK, "=0");
} }
#if 0
// FITS header keywords:
#define CHKHDR(x, cmd) do{if(x) SENDMSG(cmd "=%s", x);}while(0)
CHKHDR(GP->author, CC_CMD_AUTHOR);
CHKHDR(GP->instrument, CC_CMD_INSTRUMENT);
CHKHDR(GP->observers, CC_CMD_OBSERVER);
CHKHDR(GP->objname, CC_CMD_OBJECT);
CHKHDR(GP->prog_id, CC_CMD_PROGRAM);
CHKHDR(GP->objtype, CC_CMD_OBJTYPE);
#undef CHKHDR
#endif
} }
/** /**
@@ -284,11 +273,13 @@ static int readNbytes(int fd, size_t N, uint8_t *buf){
size_t got = 0, need = N; size_t got = 0, need = N;
double t0 = sl_dtime(); double t0 = sl_dtime();
while(sl_dtime() - t0 < CC_CLIENT_TIMEOUT /*&& sl_canread(fd)*/ && need){ while(sl_dtime() - t0 < CC_CLIENT_TIMEOUT /*&& sl_canread(fd)*/ && need){
DBG("Try to read %zd bytes", need);
ssize_t rd = read(fd, buf + got, need); ssize_t rd = read(fd, buf + got, need);
if(rd <= 0){ DBG("readNbytes() got %zd; errno=%d", rd, errno);
if(errno == EAGAIN || errno == EWOULDBLOCK) continue; if(rd == 0) return FALSE; // connection closed
WARNX(_("Server disconnected")); if(rd < 0){
signals(1); if(errno == EAGAIN) continue;
ERR(_("Server disconnected"));
} }
got += rd; need -= rd; got += rd; need -= rd;
t0 = sl_dtime(); t0 = sl_dtime();
@@ -369,14 +360,15 @@ static int getsocksizes(int *imsock){
} }
if(ima.MAGICK != CC_SHM_MAGIC || ima.bytelen < 1) return FALSE; if(ima.MAGICK != CC_SHM_MAGIC || ima.bytelen < 1) return FALSE;
// now copy fields // now copy fields
#define COPY(field) locima->field = ima.field; size_t oldsz = locima->datasize;
COPY(timestamp); DBG("Copy %zd bytes of fields", offsetof(cc_IMG, end_of_copyable_data) - offsetof(cc_IMG, start_of_copyable_data));
COPY(bitpix); uint8_t *tagaddr = (uint8_t*)locima + offsetof(cc_IMG, start_of_copyable_data);
COPY(w); uint8_t *srcaddr = (uint8_t*)&ima + offsetof(cc_IMG, start_of_copyable_data);
COPY(h); memcpy(tagaddr, srcaddr,
COPY(bytelen); offsetof(cc_IMG, end_of_copyable_data) - offsetof(cc_IMG, start_of_copyable_data));
COPY(imnumber); locima->datasize = oldsz; // restore size
#undef COPY DBG("image number: %zd, timestamp: %.3f; w/h: %d/%d",
locima->imnumber, locima->timestamp, locima->w, locima->h);
return TRUE; return TRUE;
} }

View File

@@ -611,6 +611,7 @@ static void mkcuts(cc_IMG *img){
static void change_displayed_image(cc_IMG *img){ static void change_displayed_image(cc_IMG *img){
if(!win || !img) return; if(!win || !img) return;
static size_t lastN = 0; static size_t lastN = 0;
pthread_mutex_lock(&img->mutex);
ssize_t delta = img->imnumber - lastN; ssize_t delta = img->imnumber - lastN;
TIMESTAMP("Got image #%zd", img->imnumber); TIMESTAMP("Got image #%zd", img->imnumber);
if(delta > 0 && delta != 1) WARNX(_("Missed %zd images"), delta-1); if(delta > 0 && delta != 1) WARNX(_("Missed %zd images"), delta-1);
@@ -626,6 +627,7 @@ static void change_displayed_image(cc_IMG *img){
WARN("realloc()"); WARN("realloc()");
LOGERR("Realloc() error"); LOGERR("Realloc() error");
win->image->rawdata = raw; win->image->rawdata = raw;
pthread_mutex_unlock(&img->mutex);
return; return;
} }
win->image->h = h; win->image->w = w; win->image->h = h; win->image->w = w;
@@ -635,6 +637,7 @@ static void change_displayed_image(cc_IMG *img){
WARN("realloc()"); WARN("realloc()");
LOGERR("Realloc() error"); LOGERR("Realloc() error");
win->rawdata = raw; win->rawdata = raw;
pthread_mutex_unlock(&img->mutex);
return; return;
} }
DBG("win->image changed"); DBG("win->image changed");
@@ -687,6 +690,7 @@ static void change_displayed_image(cc_IMG *img){
DBG("Unlock"); DBG("Unlock");
win->image->changed = 1; win->image->changed = 1;
pthread_mutex_unlock(&win->mutex); pthread_mutex_unlock(&win->mutex);
pthread_mutex_unlock(&img->mutex);
} }
void closeGL(){ // killed by external signal or ctrl+c void closeGL(){ // killed by external signal or ctrl+c

Binary file not shown.

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 17:35+0300\n" "POT-Creation-Date: 2026-07-24 12:24+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -28,46 +28,46 @@ msgstr ""
msgid "Get signal %d - exit" msgid "Get signal %d - exit"
msgstr "" msgstr ""
#: main.c:91 #: main.c:93
msgid "Can't use outfile name and prefix together" msgid "Can't use outfile name and prefix together"
msgstr "" msgstr ""
#: main.c:94 ccdfunc.c:222 #: main.c:96 ccdfunc.c:100
#, c-format #, c-format
msgid "File %s exists!" msgid "File %s exists!"
msgstr "" msgstr ""
#: main.c:97 #: main.c:99
#, c-format #, c-format
msgid "Can't set answer timeout to %g" msgid "Can't set answer timeout to %g"
msgstr "" msgstr ""
#: main.c:101 #: main.c:103
msgid "" msgid ""
"Options `port` and `path` can't be used together! Point `port` for TCP " "Options `port` and `path` can't be used together! Point `port` for TCP "
"socket or `path` for UNIX." "socket or `path` for UNIX."
msgstr "" msgstr ""
#: main.c:106 #: main.c:108
#, c-format #, c-format
msgid "Wrong port value: %d" msgid "Wrong port value: %d"
msgstr "" msgstr ""
#: main.c:119 #: main.c:121
#, c-format #, c-format
msgid "Set image port to %s\n" msgid "Set image port to %s\n"
msgstr "" msgstr ""
#: main.c:122 #: main.c:124
msgid "Can't be client and standalone in same time!" msgid "Can't be client and standalone in same time!"
msgstr "" msgstr ""
#: main.c:127 #: main.c:129
#, c-format #, c-format
msgid "Log file %s @ level %d\n" msgid "Log file %s @ level %d\n"
msgstr "" msgstr ""
#: main.c:129 #: main.c:131
msgid "Can't create log file" msgid "Can't create log file"
msgstr "" msgstr ""
@@ -331,422 +331,430 @@ msgstr ""
msgid "%d unused parameters:\n" msgid "%d unused parameters:\n"
msgstr "" msgstr ""
#: ccdfunc.c:211 #: ccdfunc.c:89
msgid "Image not saved: neither filename nor filename prefix pointed" msgid "Image not saved: neither filename nor filename prefix pointed"
msgstr "" msgstr ""
#: ccdfunc.c:230 #: ccdfunc.c:108
#, c-format #, c-format
msgid "Can't save file with prefix %s" msgid "Can't save file with prefix %s"
msgstr "" msgstr ""
#: ccdfunc.c:347 #: ccdfunc.c:225
#, c-format #, c-format
msgid "Added 0 FITS records from %s" msgid "Added 0 FITS records from %s"
msgstr "" msgstr ""
#: ccdfunc.c:348 #: ccdfunc.c:226
#, c-format #, c-format
msgid "Added %d FITS records from %s" msgid "Added %d FITS records from %s"
msgstr "" msgstr ""
#: ccdfunc.c:386 #: ccdfunc.c:260
#, c-format #, c-format
msgid "File saved as '%s'" msgid "File saved as '%s'"
msgstr "" msgstr ""
#: ccdfunc.c:395 #: ccdfunc.c:269
#, c-format #, c-format
msgid "Error saving file %s" msgid "Error saving file %s"
msgstr "" msgstr ""
#: ccdfunc.c:450 #: ccdfunc.c:324
#, c-format #, c-format
msgid "Image stat:\n" msgid "Image stat:\n"
msgstr "" msgstr ""
#: ccdfunc.c:459 #: ccdfunc.c:333
msgid "Focuser device not pointed" msgid "Focuser device not pointed"
msgstr "" msgstr ""
#: ccdfunc.c:466 #: ccdfunc.c:340
msgid "No focusers found" msgid "No focusers found"
msgstr "" msgstr ""
#: ccdfunc.c:484 #: ccdfunc.c:358
#, c-format #, c-format
msgid "Found %d focusers, you point number %d" msgid "Found %d focusers, you point number %d"
msgstr "" msgstr ""
#: ccdfunc.c:489 #: ccdfunc.c:363
msgid "Can't set active focuser number" msgid "Can't set active focuser number"
msgstr "" msgstr ""
#: ccdfunc.c:496 #: ccdfunc.c:370
msgid "Can't get focuser limit positions" msgid "Can't get focuser limit positions"
msgstr "" msgstr ""
#: ccdfunc.c:522 #: ccdfunc.c:396
#, c-format #, c-format
msgid "Found focuser #%d: %s\n" msgid "Found focuser #%d: %s\n"
msgstr "" msgstr ""
#: ccdfunc.c:540 #: ccdfunc.c:414
msgid "Can't get current focuser position" msgid "Can't get current focuser position"
msgstr "" msgstr ""
#: ccdfunc.c:554 #: ccdfunc.c:428
#, c-format #, c-format
msgid "Can't set position %g: out of limits [%g, %g]" msgid "Can't set position %g: out of limits [%g, %g]"
msgstr "" msgstr ""
#: ccdfunc.c:558 #: ccdfunc.c:432
msgid "Can't home focuser" msgid "Can't home focuser"
msgstr "" msgstr ""
#: ccdfunc.c:560 #: ccdfunc.c:434
#, c-format #, c-format
msgid "Can't set position %g" msgid "Can't set position %g"
msgstr "" msgstr ""
#: ccdfunc.c:568 #: ccdfunc.c:440
msgid "Wheel device not pointed" msgid "Wheel device not pointed"
msgstr "" msgstr ""
#: ccdfunc.c:575 #: ccdfunc.c:447
msgid "No wheels found" msgid "No wheels found"
msgstr "" msgstr ""
#: ccdfunc.c:592 #: ccdfunc.c:464
#, c-format #, c-format
msgid "Found %d wheels, you point number %d" msgid "Found %d wheels, you point number %d"
msgstr "" msgstr ""
#: ccdfunc.c:597 #: ccdfunc.c:469
msgid "Can't set active wheel number" msgid "Can't set active wheel number"
msgstr "" msgstr ""
#: ccdfunc.c:603 #: ccdfunc.c:475
msgid "Can't get max wheel position" msgid "Can't get max wheel position"
msgstr "" msgstr ""
#: ccdfunc.c:628 #: ccdfunc.c:500
#, c-format #, c-format
msgid "Found wheel #%d: %s\n" msgid "Found wheel #%d: %s\n"
msgstr "" msgstr ""
#: ccdfunc.c:634 #: ccdfunc.c:509
#, c-format #, c-format
msgid "Wheel model: %s" msgid "Wheel model: %s"
msgstr "" msgstr ""
#: ccdfunc.c:643 #: ccdfunc.c:518
msgid "Can't get current wheel position" msgid "Can't get current wheel position"
msgstr "" msgstr ""
#: ccdfunc.c:648 #: ccdfunc.c:523
#, c-format #, c-format
msgid "Wheel position should be from 0 to %d" msgid "Wheel position should be from 0 to %d"
msgstr "" msgstr ""
#: ccdfunc.c:652 #: ccdfunc.c:527
#, c-format #, c-format
msgid "Can't set wheel position %d" msgid "Can't set wheel position %d"
msgstr "" msgstr ""
#: ccdfunc.c:667 #: ccdfunc.c:534
msgid "Camera plugin have no capture polling funtion." msgid "Camera plugin have no capture polling funtion."
msgstr "" msgstr ""
#: ccdfunc.c:673 #: ccdfunc.c:540
#, c-format #, c-format
msgid "%.1f seconds till exposition ends" msgid "%.1f seconds till exposition ends"
msgstr "" msgstr ""
#: ccdfunc.c:688 #: ccdfunc.c:555
msgid "Camera device not pointed" msgid "Camera device not pointed"
msgstr "" msgstr ""
#: ccdfunc.c:695 ccdfunc.c:696 #: ccdfunc.c:562 ccdfunc.c:563
msgid "No cameras found" msgid "No cameras found"
msgstr "" msgstr ""
#: ccdfunc.c:716 #: ccdfunc.c:583
msgid "Camera plugin have no model name getter" msgid "Camera plugin have no model name getter"
msgstr "" msgstr ""
#: ccdfunc.c:721 #: ccdfunc.c:588
#, c-format #, c-format
msgid "Found camera #%d: %s\n" msgid "Found camera #%d: %s\n"
msgstr "" msgstr ""
#: ccdfunc.c:727 #: ccdfunc.c:594
#, c-format #, c-format
msgid "Found %d cameras, you point number %d" msgid "Found %d cameras, you point number %d"
msgstr "" msgstr ""
#: ccdfunc.c:731 #: ccdfunc.c:598
msgid "Can't set active camera number" msgid "Can't set active camera number"
msgstr "" msgstr ""
#: ccdfunc.c:737 #: ccdfunc.c:604
msgid "Camera plugin have no custom commands" msgid "Camera plugin have no custom commands"
msgstr "" msgstr ""
#: ccdfunc.c:746 ccdfunc.c:749 #: ccdfunc.c:613 ccdfunc.c:616
#, c-format #, c-format
msgid "Command '%s'" msgid "Command '%s'"
msgstr "" msgstr ""
#: ccdfunc.c:751 #: ccdfunc.c:618
#, c-format #, c-format
msgid " returns \"%s\"" msgid " returns \"%s\""
msgstr "" msgstr ""
#: ccdfunc.c:762 #: ccdfunc.c:629
msgid "Camera plugin have no fun speed setter" msgid "Camera plugin have no fun speed setter"
msgstr "" msgstr ""
#: ccdfunc.c:765 #: ccdfunc.c:632
msgid "Can't set fan speed" msgid "Can't set fan speed"
msgstr "" msgstr ""
#: ccdfunc.c:766 #: ccdfunc.c:633
#, c-format #, c-format
msgid "Set fan speed to %d" msgid "Set fan speed to %d"
msgstr "" msgstr ""
#: ccdfunc.c:771 #: ccdfunc.c:638
#, c-format #, c-format
msgid "Camera model: %s" msgid "Camera model: %s"
msgstr "" msgstr ""
#: ccdfunc.c:772 #: ccdfunc.c:639
#, c-format #, c-format
msgid "Pixel size: %g x %g" msgid "Pixel size: %g x %g"
msgstr "" msgstr ""
#: ccdfunc.c:778 #: ccdfunc.c:645
#, c-format #, c-format
msgid "Full array: %s" msgid "Full array: %s"
msgstr "" msgstr ""
#: ccdfunc.c:781 #: ccdfunc.c:648
#, c-format #, c-format
msgid "Field of view: %s" msgid "Field of view: %s"
msgstr "" msgstr ""
#: ccdfunc.c:784 #: ccdfunc.c:651
#, c-format #, c-format
msgid "Current format: %s" msgid "Current format: %s"
msgstr "" msgstr ""
#: ccdfunc.c:787 #: ccdfunc.c:654
#, c-format #, c-format
msgid "Maximal geometry (WxH): %dx%d" msgid "Maximal geometry (WxH): %dx%d"
msgstr "" msgstr ""
#: ccdfunc.c:788 #: ccdfunc.c:655
#, c-format #, c-format
msgid "Minimal offset: %dx%d" msgid "Minimal offset: %dx%d"
msgstr "" msgstr ""
#: ccdfunc.c:789 #: ccdfunc.c:656
#, c-format #, c-format
msgid "Geometry steps: offset - %dx%d, size - %dx%d" msgid "Geometry steps: offset - %dx%d, size - %dx%d"
msgstr "" msgstr ""
#: ccdfunc.c:793 #: ccdfunc.c:660
#, c-format #, c-format
msgid "Current binning: %d x %d" msgid "Current binning: %d x %d"
msgstr "" msgstr ""
#: ccdfunc.c:796 #: ccdfunc.c:663
#, c-format #, c-format
msgid "Current settings: %d bits per pixel" msgid "Current settings: %d bits per pixel"
msgstr "" msgstr ""
#: ccdfunc.c:799 #: ccdfunc.c:666
#, c-format #, c-format
msgid "Current brightness: %g" msgid "Current brightness: %g"
msgstr "" msgstr ""
#: ccdfunc.c:801 #: ccdfunc.c:668
#, c-format #, c-format
msgid "Current gain: %g" msgid "Current gain: %g"
msgstr "" msgstr ""
#: ccdfunc.c:803 #: ccdfunc.c:670
#, c-format #, c-format
msgid "Maximal gain: %g" msgid "Maximal gain: %g"
msgstr "" msgstr ""
#: ccdfunc.c:805 #: ccdfunc.c:672
msgid "Camera plugin have no temperature setter" msgid "Camera plugin have no temperature setter"
msgstr "" msgstr ""
#: ccdfunc.c:806 #: ccdfunc.c:673
#, c-format #, c-format
msgid "Can't set T to %g degC" msgid "Can't set T to %g degC"
msgstr "" msgstr ""
#: ccdfunc.c:814 #: ccdfunc.c:681
#, c-format #, c-format
msgid "Shutter command: %s\n" msgid "Shutter command: %s\n"
msgstr "" msgstr ""
#: ccdfunc.c:816 #: ccdfunc.c:683
#, c-format #, c-format
msgid "Can't run shutter command %s (unsupported?)" msgid "Can't run shutter command %s (unsupported?)"
msgstr "" msgstr ""
#: ccdfunc.c:819 #: ccdfunc.c:686
#, c-format #, c-format
msgid "Try to configure I/O port as %d" msgid "Try to configure I/O port as %d"
msgstr "" msgstr ""
#: ccdfunc.c:821 #: ccdfunc.c:688
msgid "Can't configure (unsupported?)" msgid "Can't configure (unsupported?)"
msgstr "" msgstr ""
#: ccdfunc.c:827 #: ccdfunc.c:694
msgid "Can't get IOport state (unsupported?)" msgid "Can't get IOport state (unsupported?)"
msgstr "" msgstr ""
#: ccdfunc.c:830 #: ccdfunc.c:697
#, c-format #, c-format
msgid "Try to write %d to I/O port" msgid "Try to write %d to I/O port"
msgstr "" msgstr ""
#: ccdfunc.c:832 #: ccdfunc.c:699
msgid "Can't set IOport" msgid "Can't set IOport"
msgstr "" msgstr ""
#: ccdfunc.c:839 #: ccdfunc.c:706
#, c-format #, c-format
msgid "Set gain to %g" msgid "Set gain to %g"
msgstr "" msgstr ""
#: ccdfunc.c:840 #: ccdfunc.c:707
#, c-format #, c-format
msgid "Can't set gain to %g" msgid "Can't set gain to %g"
msgstr "" msgstr ""
#: ccdfunc.c:845 #: ccdfunc.c:712
#, c-format #, c-format
msgid "Set brightness to %g" msgid "Set brightness to %g"
msgstr "" msgstr ""
#: ccdfunc.c:846 #: ccdfunc.c:713
#, c-format #, c-format
msgid "Can't set brightness to %g" msgid "Can't set brightness to %g"
msgstr "" msgstr ""
#: ccdfunc.c:852 server.c:380 #: ccdfunc.c:719 server.c:359
#, c-format #, c-format
msgid "Can't set binning %dx%d" msgid "Can't set binning %dx%d"
msgstr "" msgstr ""
#: ccdfunc.c:864 server.c:381 #: ccdfunc.c:731 server.c:361
msgid "Can't set given geometry" msgid "Can't set given geometry"
msgstr "" msgstr ""
#: ccdfunc.c:868 #: ccdfunc.c:735
#, c-format #, c-format
msgid "Can't set %d flushes" msgid "Can't set %d flushes"
msgstr "" msgstr ""
#: ccdfunc.c:871 #: ccdfunc.c:738
msgid "Camera plugin have no exposition setter" msgid "Camera plugin have no exposition setter"
msgstr "" msgstr ""
#: ccdfunc.c:873 #: ccdfunc.c:740
#, c-format #, c-format
msgid "Can't set exposure time to %f seconds" msgid "Can't set exposure time to %f seconds"
msgstr "" msgstr ""
#: ccdfunc.c:876 #: ccdfunc.c:743
msgid "Can't change frame type" msgid "Can't change frame type"
msgstr "" msgstr ""
#: ccdfunc.c:879 #: ccdfunc.c:746
msgid "Can't set bit depth" msgid "Can't set bit depth"
msgstr "" msgstr ""
#: ccdfunc.c:881 #: ccdfunc.c:748
msgid "Can't set readout speed" msgid "Can't set readout speed"
msgstr "" msgstr ""
#: ccdfunc.c:882 #: ccdfunc.c:749
#, c-format #, c-format
msgid "Readout mode: %s" msgid "Readout mode: %s"
msgstr "" msgstr ""
#: ccdfunc.c:883 #: ccdfunc.c:750
msgid "Only show statistics" msgid "Only show statistics"
msgstr "" msgstr ""
#: ccdfunc.c:886 #: ccdfunc.c:753
msgid "Can't get current binning" msgid "Can't get current binning"
msgstr "" msgstr ""
#: ccdfunc.c:951 #: ccdfunc.c:848
msgid "Can't allocate image memory"
msgstr ""
#: ccdfunc.c:849
msgid "Can't fill headers with camera data"
msgstr ""
#: ccdfunc.c:857
#, c-format #, c-format
msgid "Capture frame %d" msgid "Capture frame %d"
msgstr "" msgstr ""
#: ccdfunc.c:952 ccdfunc.c:1030 server.c:230 #: ccdfunc.c:858 ccdfunc.c:935 server.c:209
msgid "Camera plugin have no function `start exposition`" msgid "Camera plugin have no function `start exposition`"
msgstr "" msgstr ""
#: ccdfunc.c:954 ccdfunc.c:1032 server.c:235 #: ccdfunc.c:860 ccdfunc.c:937 server.c:214
msgid "Can't start exposition" msgid "Can't start exposition"
msgstr "" msgstr ""
#: ccdfunc.c:959 #: ccdfunc.c:865
msgid "Can't capture image" msgid "Can't capture image"
msgstr "" msgstr ""
#: ccdfunc.c:962 #: ccdfunc.c:868
msgid "Read grabbed image" msgid "Read grabbed image"
msgstr "" msgstr ""
#: ccdfunc.c:964 ccdfunc.c:1043 server.c:269 #: ccdfunc.c:870 ccdfunc.c:948 server.c:248
msgid "Camera plugin have no function `capture`" msgid "Camera plugin have no function `capture`"
msgstr "" msgstr ""
#: ccdfunc.c:966 ccdfunc.c:1044 #: ccdfunc.c:872 ccdfunc.c:949
msgid "Can't grab image" msgid "Can't grab image"
msgstr "" msgstr ""
#: ccdfunc.c:980 client.c:577 #: ccdfunc.c:885 client.c:569
#, c-format #, c-format
msgid "%d seconds till pause ends\n" msgid "%d seconds till pause ends\n"
msgstr "" msgstr ""
#. for(int i = 0; i < NFRM; ++i) printf("last[%d]=%g\n", i, lastn[i]); #. for(int i = 0; i < NFRM; ++i) printf("last[%d]=%g\n", i, lastn[i]);
#: ccdfunc.c:1015 #: ccdfunc.c:920
#, c-format #, c-format
msgid "Framerate=%.2f (%g seconds for exp); mean framerate=%.2f" msgid "Framerate=%.2f (%g seconds for exp); mean framerate=%.2f"
msgstr "" msgstr ""
#: ccdfunc.c:1041 #: ccdfunc.c:946
msgid "Some error when capture" msgid "Some error when capture"
msgstr "" msgstr ""
#: ccdfunc.c:1082 #: ccdfunc.c:981
msgid "Can't create grabbing thread" msgid "Can't create grabbing thread"
msgstr "" msgstr ""
#: ccdfunc.c:1113 #: ccdfunc.c:1010
msgid "Point network port or UNIX-socket path" msgid "Point network port or UNIX-socket path"
msgstr "" msgstr ""
#: ccdfunc.c:1117 #: ccdfunc.c:1014
msgid "start_socket(): can't open socket" msgid "start_socket(): can't open socket"
msgstr "" msgstr ""
#: ccdfunc.c:1126 #: ccdfunc.c:1023
msgid "Need exposition time!" msgid "Need exposition time!"
msgstr "" msgstr ""
@@ -758,51 +766,55 @@ msgstr ""
msgid "Can't allocate memory for image" msgid "Can't allocate memory for image"
msgstr "" msgstr ""
#: server.c:243 #: server.c:169
msgid "Can't init camera data"
msgstr ""
#: server.c:222
msgid "Camera disconnected" msgid "Camera disconnected"
msgstr "" msgstr ""
#: server.c:249 #: server.c:228
msgid "Something's wrong with camera" msgid "Something's wrong with camera"
msgstr "" msgstr ""
#: server.c:297 #: server.c:276
msgid "No camera device" msgid "No camera device"
msgstr "" msgstr ""
#: server.c:1099 #: server.c:1088
msgid "server(): need at least command socket fd" msgid "server(): need at least command socket fd"
msgstr "" msgstr ""
#: server.c:1100 #: server.c:1089
msgid "Server run without image transport socket" msgid "Server run without image transport socket"
msgstr "" msgstr ""
#: server.c:1131 #: server.c:1120
msgid "No devices found" msgid "No devices found"
msgstr "" msgstr ""
#: server.c:1176 #: server.c:1165
msgid "Client wants an image, but there's no data" msgid "Client wants an image, but there's no data"
msgstr "" msgstr ""
#: server.c:1205 #: server.c:1194
msgid "Limit of connections reached" msgid "Limit of connections reached"
msgstr "" msgstr ""
#: server.c:1274 #: server.c:1263
#, c-format #, c-format
msgid "Can't create %s" msgid "Can't create %s"
msgstr "" msgstr ""
#: server.c:1310 #: server.c:1299
msgid "Can't lock mutex" msgid "Can't lock mutex"
msgstr "" msgstr ""
#. send message and wait any answer #. send message and wait any answer
#. send message and wait answer starting with 'cmd' #. send message and wait answer starting with 'cmd'
#. send command and wait for answer on it #. send command and wait for answer on it
#: client.c:42 client.c:44 client.c:46 client.c:290 #: client.c:42 client.c:44 client.c:46 client.c:282
msgid "Server disconnected" msgid "Server disconnected"
msgstr "" msgstr ""
@@ -822,87 +834,87 @@ msgstr ""
msgid "Send custom plugin commands\n" msgid "Send custom plugin commands\n"
msgstr "" msgstr ""
#: client.c:342 #: client.c:333
msgid "Can't lock shared memory" msgid "Can't lock shared memory"
msgstr "" msgstr ""
#: client.c:361 #: client.c:352
msgid "Can't open image transport socket" msgid "Can't open image transport socket"
msgstr "" msgstr ""
#: client.c:367 #: client.c:358
msgid "Can't read image header over socket" msgid "Can't read image header over socket"
msgstr "" msgstr ""
#: client.c:400 client.c:430 #: client.c:392 client.c:422
msgid "Can't read image data" msgid "Can't read image data"
msgstr "" msgstr ""
#: client.c:443 #: client.c:435
msgid "Too many FITS headers, truncating" msgid "Too many FITS headers, truncating"
msgstr "" msgstr ""
#: client.c:454 #: client.c:446
#, c-format #, c-format
msgid "Can't read full header, got %zd records from %zd" msgid "Can't read full header, got %zd records from %zd"
msgstr "" msgstr ""
#: client.c:470 #: client.c:462
msgid "Still got old image" msgid "Still got old image"
msgstr "" msgstr ""
#: client.c:495 client.c:595 #: client.c:487 client.c:587
msgid "Can't run without command socket" msgid "Can't run without command socket"
msgstr "" msgstr ""
#: client.c:514 #: client.c:506
msgid "Exposing frame 1..." msgid "Exposing frame 1..."
msgstr "" msgstr ""
#: client.c:516 #: client.c:508
msgid "Wait for exposition end" msgid "Wait for exposition end"
msgstr "" msgstr ""
#: client.c:535 #: client.c:527
msgid "Can't make exposition" msgid "Can't make exposition"
msgstr "" msgstr ""
#. start next capture #. start next capture
#. last image -> should re-expose #. last image -> should re-expose
#: client.c:537 client.c:548 client.c:567 #: client.c:529 client.c:540 client.c:559
#, c-format #, c-format
msgid "Exposing frame %d..." msgid "Exposing frame %d..."
msgstr "" msgstr ""
#: client.c:555 #: client.c:547
msgid "Frame ready, try to grab" msgid "Frame ready, try to grab"
msgstr "" msgstr ""
#. TRUE #. TRUE
#: client.c:557 #: client.c:549
msgid "Can't get next image" msgid "Can't get next image"
msgstr "" msgstr ""
#: client.c:565 #: client.c:557
msgid "Got already saved image, wait next" msgid "Got already saved image, wait next"
msgstr "" msgstr ""
#: client.c:589 #: client.c:581
msgid "Server timeout" msgid "Server timeout"
msgstr "" msgstr ""
#: client.c:640 #: client.c:632
msgid "Camera in error state" msgid "Camera in error state"
msgstr "" msgstr ""
#: client.c:642 #: client.c:634
#, c-format #, c-format
msgid "" msgid ""
"Image wasn't received, state: %d, waiting: %g, lastNo: %d, curNo: %d " "Image wasn't received, state: %d, waiting: %g, lastNo: %d, curNo: %d "
"(timeout: %g)" "(timeout: %g)"
msgstr "" msgstr ""
#: client.c:702 client.c:709 #: client.c:694 client.c:701
msgid "Can't create capturing thread" msgid "Can't create capturing thread"
msgstr "" msgstr ""
@@ -919,38 +931,38 @@ msgstr ""
msgid "Histogram conversion: %s" msgid "Histogram conversion: %s"
msgstr "" msgstr ""
#: imageview.c:616 #: imageview.c:617
#, c-format #, c-format
msgid "Missed %zd images" msgid "Missed %zd images"
msgstr "" msgstr ""
#: imageview.c:711 #: imageview.c:715
msgid "No image changing function defined" msgid "No image changing function defined"
msgstr "" msgstr ""
#: imageview.c:718 #: imageview.c:722
msgid "Can't open OpenGL window, image preview will be inaccessible" msgid "Can't open OpenGL window, image preview will be inaccessible"
msgstr "" msgstr ""
#. save image #. save image
#: imageview.c:752 #: imageview.c:756
msgid "Make screenshot" msgid "Make screenshot"
msgstr "" msgstr ""
#: imageview.c:756 #: imageview.c:760
#, c-format #, c-format
msgid "Set output prefix to %s" msgid "Set output prefix to %s"
msgstr "" msgstr ""
#: imageview.c:769 #: imageview.c:773
#, c-format #, c-format
msgid "Equalization of histogram: %s" msgid "Equalization of histogram: %s"
msgstr "" msgstr ""
#: imageview.c:769 #: imageview.c:773
msgid "on" msgid "on"
msgstr "" msgstr ""
#: imageview.c:769 #: imageview.c:773
msgid "off" msgid "off"
msgstr "" msgstr ""

View File

@@ -1,32 +1,31 @@
# SOME DESCRIPTIVE TITLE. # Russian translation of ccd_capture messages.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # Copyright (C) 2026
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the ccd_capture package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # Edward V. Emelianov <eddyem@yandex.ru>, 2026.
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "Project-Id-Version: PACKAGE VERSION\n" msgstr "Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 17:35+0300\n" "POT-Creation-Date: 2026-07-24 12:15+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2026-07-24 08:59+0300\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: Edward V. Emelianov <eddyem@yandex.ru>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language: russian\n"
"Language: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=koi8-r\n" "Content-Type: text/plain; charset=koi8-r\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: ccdfunc.c:751 #: ccdfunc.c:618
#, c-format #, c-format
msgid " returns \"%s\"" msgid " returns \"%s\""
msgstr " ×ÏÚ×ÒÁÝÁÅÔ \"%s\"" msgstr " ×ÏÚ×ÒÁÝÁÅÔ \"%s\""
#: ccdfunc.c:673 #: ccdfunc.c:540
#, c-format #, c-format
msgid "%.1f seconds till exposition ends" msgid "%.1f seconds till exposition ends"
msgstr "%.1f ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÜËÓÐÏÚÉÃÉÉ" msgstr "%.1f ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÜËÓÐÏÚÉÃÉÉ"
#: ccdfunc.c:980 client.c:577 #: ccdfunc.c:885 client.c:569
#, c-format #, c-format
msgid "%d seconds till pause ends\n" msgid "%d seconds till pause ends\n"
msgstr "%d ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÐÁÕÚÙ\n" msgstr "%d ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÐÁÕÚÙ\n"
@@ -36,12 +35,12 @@ msgstr "%d
msgid "%d unused parameters:\n" msgid "%d unused parameters:\n"
msgstr "%d ÎÅÉÓÐÏÌØÚÕÅÍÙÈ ÐÁÒÁÍÅÔÒÏ×:\n" msgstr "%d ÎÅÉÓÐÏÌØÚÕÅÍÙÈ ÐÁÒÁÍÅÔÒÏ×:\n"
#: ccdfunc.c:348 #: ccdfunc.c:226
#, c-format #, c-format
msgid "Added %d FITS records from %s" msgid "Added %d FITS records from %s"
msgstr "äÏÂÁ×ÌÅÎÏ %d ÚÁÐÉÓÅÊ FITS ÉÚ %s" msgstr "äÏÂÁ×ÌÅÎÏ %d ÚÁÐÉÓÅÊ FITS ÉÚ %s"
#: ccdfunc.c:347 #: ccdfunc.c:225
#, c-format #, c-format
msgid "Added 0 FITS records from %s" msgid "Added 0 FITS records from %s"
msgstr "äÏÂÁ×ÌÅÎÏ 0 ÚÁÐÉÓÅÊ FITS ÉÚ %s" msgstr "äÏÂÁ×ÌÅÎÏ 0 ÚÁÐÉÓÅÊ FITS ÉÚ %s"
@@ -58,54 +57,54 @@ msgstr "
msgid "CMOS gain level" msgid "CMOS gain level"
msgstr "ÕÒÏ×ÅÎØ Gain CMOS" msgstr "ÕÒÏ×ÅÎØ Gain CMOS"
#: ccdfunc.c:688 #: ccdfunc.c:555
msgid "Camera device not pointed" msgid "Camera device not pointed"
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÐÏÄËÌÀÞÅÎÏ" msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÐÏÄËÌÀÞÅÎÏ"
#: server.c:243 #: server.c:222
#, fuzzy #, fuzzy
msgid "Camera disconnected" msgid "Camera disconnected"
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ" msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
#: client.c:640 #: client.c:632
msgid "Camera in error state" msgid "Camera in error state"
msgstr "ëÁÍÅÒÁ × ÓÏÓÔÏÑÎÉÉ ÏÛÉÂËÉ" msgstr "ëÁÍÅÒÁ × ÓÏÓÔÏÑÎÉÉ ÏÛÉÂËÉ"
#: ccdfunc.c:771 #: ccdfunc.c:638
#, c-format #, c-format
msgid "Camera model: %s" msgid "Camera model: %s"
msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s" msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s"
#: ccdfunc.c:667 #: ccdfunc.c:534
msgid "Camera plugin have no capture polling funtion." msgid "Camera plugin have no capture polling funtion."
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÆÕÎËÃÉÉ ÚÁÈ×ÁÔÁ ÉÚÏÂÒÁÖÅÎÉÊ" msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÆÕÎËÃÉÉ ÚÁÈ×ÁÔÁ ÉÚÏÂÒÁÖÅÎÉÊ"
#: ccdfunc.c:737 #: ccdfunc.c:604
msgid "Camera plugin have no custom commands" msgid "Camera plugin have no custom commands"
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ" msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
#: ccdfunc.c:871 #: ccdfunc.c:738
msgid "Camera plugin have no exposition setter" msgid "Camera plugin have no exposition setter"
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÓÅÔÔÅÒÁ ÜËÓÐÏÚÉÃÉÉ" msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÓÅÔÔÅÒÁ ÜËÓÐÏÚÉÃÉÉ"
#: ccdfunc.c:762 #: ccdfunc.c:629
#, fuzzy #, fuzzy
msgid "Camera plugin have no fun speed setter" msgid "Camera plugin have no fun speed setter"
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÓÅÔÔÅÒÁ ÓËÏÒÏÓÔÉ ×ÅÎÔÉÌÑÔÏÒÁ" msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÓÅÔÔÅÒÁ ÓËÏÒÏÓÔÉ ×ÅÎÔÉÌÑÔÏÒÁ"
#: ccdfunc.c:964 ccdfunc.c:1043 server.c:269 #: ccdfunc.c:870 ccdfunc.c:948 server.c:248
msgid "Camera plugin have no function `capture`" msgid "Camera plugin have no function `capture`"
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÆÕÎËÃÉÉ `capture`" msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÆÕÎËÃÉÉ `capture`"
#: ccdfunc.c:952 ccdfunc.c:1030 server.c:230 #: ccdfunc.c:858 ccdfunc.c:935 server.c:209
msgid "Camera plugin have no function `start exposition`" msgid "Camera plugin have no function `start exposition`"
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÆÕÎËÃÉÉ `start exposition`" msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÆÕÎËÃÉÉ `start exposition`"
#: ccdfunc.c:716 #: ccdfunc.c:583
msgid "Camera plugin have no model name getter" msgid "Camera plugin have no model name getter"
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÇÅÔÔÅÒÁ ÎÁÚ×ÁÎÉÑ ÍÏÄÅÌÉ" msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÇÅÔÔÅÒÁ ÎÁÚ×ÁÎÉÑ ÍÏÄÅÌÉ"
#: ccdfunc.c:805 #: ccdfunc.c:672
msgid "Camera plugin have no temperature setter" msgid "Camera plugin have no temperature setter"
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÓÅÔÔÅÒÁ ÔÅÍÐÅÒÁÔÕÒÙ" msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÓÅÔÔÅÒÁ ÔÅÍÐÅÒÁÔÕÒÙ"
@@ -113,214 +112,229 @@ msgstr "
msgid "Can't allocate buffer" msgid "Can't allocate buffer"
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ" msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
#: ccdfunc.c:848
#, fuzzy
msgid "Can't allocate image memory"
msgstr "îÅ ÍÏÇÕ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÒÁÚÄÅÌÑÅÍÕÀ ÐÁÍÑÔØ"
#: server.c:167 #: server.c:167
msgid "Can't allocate memory for image" msgid "Can't allocate memory for image"
msgstr "îÅ ÍÏÇÕ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÄÌÑ ÉÚÏÂÒÁÖÅÎÉÑ" msgstr "îÅ ÍÏÇÕ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÄÌÑ ÉÚÏÂÒÁÖÅÎÉÑ"
#: main.c:122 #: main.c:124
msgid "Can't be client and standalone in same time!" msgid "Can't be client and standalone in same time!"
msgstr "îÅ ÍÏÇÕ ÏÄÎÏ×ÒÅÍÅÎÎÏ ÂÙÔØ ËÌÉÅÎÔÏÍ É ÓÁÍÏÓÔÏÑÔÅÌØÎÙÍ ÐÒÉÌÏÖÅÎÉÅÍ!" msgstr "îÅ ÍÏÇÕ ÏÄÎÏ×ÒÅÍÅÎÎÏ ÂÙÔØ ËÌÉÅÎÔÏÍ É ÓÁÍÏÓÔÏÑÔÅÌØÎÙÍ ÐÒÉÌÏÖÅÎÉÅÍ!"
#: ccdfunc.c:959 #: ccdfunc.c:865
msgid "Can't capture image" msgid "Can't capture image"
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ" msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
#: ccdfunc.c:876 #: ccdfunc.c:743
msgid "Can't change frame type" msgid "Can't change frame type"
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÔÉÐ ËÁÄÒÁ" msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÔÉÐ ËÁÄÒÁ"
#: ccdfunc.c:821 #: ccdfunc.c:688
msgid "Can't configure (unsupported?)" msgid "Can't configure (unsupported?)"
msgstr "îÅ ÍÏÇÕ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ (ÏÐÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)" msgstr "îÅ ÍÏÇÕ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ (ÏÐÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
#: server.c:1274 #: server.c:1263
#, c-format #, c-format
msgid "Can't create %s" msgid "Can't create %s"
msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ %s" msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ %s"
#: client.c:702 client.c:709 #: client.c:694 client.c:701
msgid "Can't create capturing thread" msgid "Can't create capturing thread"
msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÐÏÔÏË ÚÁÈ×ÁÔÁ ÉÚÏÂÒÁÖÅÎÉÊ" msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÐÏÔÏË ÚÁÈ×ÁÔÁ ÉÚÏÂÒÁÖÅÎÉÊ"
#: ccdfunc.c:1082 #: ccdfunc.c:981
msgid "Can't create grabbing thread" msgid "Can't create grabbing thread"
msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÐÏÔÏË ÚÁÈ×ÁÔÁ" msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÐÏÔÏË ÚÁÈ×ÁÔÁ"
#: main.c:129 #: main.c:131
msgid "Can't create log file" msgid "Can't create log file"
msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÌÏÇ-ÆÁÊÌ" msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÌÏÇ-ÆÁÊÌ"
#: ccdfunc.c:827 #: ccdfunc.c:849
#, fuzzy
msgid "Can't fill headers with camera data"
msgstr "îÅ ÍÏÇÕ ÓÞÉÔÁÔØ ÄÁÎÎÙÅ ÉÚÏÂÒÁÖÅÎÉÑ"
#: ccdfunc.c:694
msgid "Can't get IOport state (unsupported?)" msgid "Can't get IOport state (unsupported?)"
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÓÏÓÔÏÑÎÉÅ ÐÏÒÔÁ I/O (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)" msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÓÏÓÔÏÑÎÉÅ ÐÏÒÔÁ I/O (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
#: ccdfunc.c:886 #: ccdfunc.c:753
msgid "Can't get current binning" msgid "Can't get current binning"
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ ÂÉÎÎÉÎÇÁ" msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ ÂÉÎÎÉÎÇÁ"
#: ccdfunc.c:540 #: ccdfunc.c:414
msgid "Can't get current focuser position" msgid "Can't get current focuser position"
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÔÅËÕÝÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ" msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÔÅËÕÝÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
#: ccdfunc.c:643 #: ccdfunc.c:518
msgid "Can't get current wheel position" msgid "Can't get current wheel position"
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÔÅËÕÝÕÀ ÐÏÚÉÃÉÀ ÔÕÒÅÌÉ" msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÔÅËÕÝÕÀ ÐÏÚÉÃÉÀ ÔÕÒÅÌÉ"
#: ccdfunc.c:496 #: ccdfunc.c:370
msgid "Can't get focuser limit positions" msgid "Can't get focuser limit positions"
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ" msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
#: ccdfunc.c:603 #: ccdfunc.c:475
msgid "Can't get max wheel position" msgid "Can't get max wheel position"
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ÔÕÒÅÌÉ" msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ÔÕÒÅÌÉ"
#. TRUE #. TRUE
#: client.c:557 #: client.c:549
msgid "Can't get next image" msgid "Can't get next image"
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÏÞÅÒÅÄÎÏÅ ÉÚÏÂÒÁÖÅÎÉÅ" msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÏÞÅÒÅÄÎÏÅ ÉÚÏÂÒÁÖÅÎÉÅ"
#: ccdfunc.c:966 ccdfunc.c:1044 #: ccdfunc.c:872 ccdfunc.c:949
msgid "Can't grab image" msgid "Can't grab image"
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ" msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
#: ccdfunc.c:558 #: ccdfunc.c:432
msgid "Can't home focuser" msgid "Can't home focuser"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÆÏËÕÓÅÒ × ÎÕÌØ" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÆÏËÕÓÅÒ × ÎÕÌØ"
#: server.c:169
#, fuzzy
msgid "Can't init camera data"
msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!"
#: imageview.c:314 #: imageview.c:314
msgid "Can't init mutex!" msgid "Can't init mutex!"
msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!" msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!"
#: server.c:1310 #: server.c:1299
msgid "Can't lock mutex" msgid "Can't lock mutex"
msgstr "îÅ ÍÏÇÕ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÍØÀÔÅËÓ" msgstr "îÅ ÍÏÇÕ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÍØÀÔÅËÓ"
#: client.c:342 #: client.c:333
msgid "Can't lock shared memory" msgid "Can't lock shared memory"
msgstr "îÅ ÍÏÇÕ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÒÁÚÄÅÌÑÅÍÕÀ ÐÁÍÑÔØ" msgstr "îÅ ÍÏÇÕ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÒÁÚÄÅÌÑÅÍÕÀ ÐÁÍÑÔØ"
#: client.c:535 #: client.c:527
msgid "Can't make exposition" msgid "Can't make exposition"
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ÜËÓÐÏÚÉÃÉÀ" msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ÜËÓÐÏÚÉÃÉÀ"
#: imageview.c:718 #: imageview.c:722
msgid "Can't open OpenGL window, image preview will be inaccessible" msgid "Can't open OpenGL window, image preview will be inaccessible"
msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÏËÎÏ OpenGL, ÏÔÏÂÒÁÖÅÎÉÅ ÂÕÄÅÔ ÎÅÄÏÓÔÕÐÎÏ" msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÏËÎÏ OpenGL, ÏÔÏÂÒÁÖÅÎÉÅ ÂÕÄÅÔ ÎÅÄÏÓÔÕÐÎÏ"
#: client.c:361 #: client.c:352
msgid "Can't open image transport socket" msgid "Can't open image transport socket"
msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÔÒÁÎÓÐÏÒÔÎÙÊ ÓÏËÅÔ" msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÔÒÁÎÓÐÏÒÔÎÙÊ ÓÏËÅÔ"
#: client.c:454 #: client.c:446
#, c-format #, c-format
msgid "Can't read full header, got %zd records from %zd" msgid "Can't read full header, got %zd records from %zd"
msgstr "îÅ ÍÏÇÕ ÓÞÉÔÁÔØ ×ÅÓØ ÚÁÌÏÇÏ×Ï, ÐÏÌÕÞÉÌ ÌÉÛØ %zd ÚÁÐÉÓÅÊ ÉÚ %zd" msgstr "îÅ ÍÏÇÕ ÓÞÉÔÁÔØ ×ÅÓØ ÚÁÌÏÇÏ×Ï, ÐÏÌÕÞÉÌ ÌÉÛØ %zd ÚÁÐÉÓÅÊ ÉÚ %zd"
#: client.c:400 client.c:430 #: client.c:392 client.c:422
msgid "Can't read image data" msgid "Can't read image data"
msgstr "îÅ ÍÏÇÕ ÓÞÉÔÁÔØ ÄÁÎÎÙÅ ÉÚÏÂÒÁÖÅÎÉÑ" msgstr "îÅ ÍÏÇÕ ÓÞÉÔÁÔØ ÄÁÎÎÙÅ ÉÚÏÂÒÁÖÅÎÉÑ"
#: client.c:367 #: client.c:358
msgid "Can't read image header over socket" msgid "Can't read image header over socket"
msgstr "îÅ ÍÏÇÕ ÓÞÉÔÁÔØ ÚÁÇÏÌÏ×ÏË ÉÚÏÂÒÁÖÅÎÉÑ ÐÏ ÓÏËÅÔÕ" msgstr "îÅ ÍÏÇÕ ÓÞÉÔÁÔØ ÚÁÇÏÌÏ×ÏË ÉÚÏÂÒÁÖÅÎÉÑ ÐÏ ÓÏËÅÔÕ"
#: ccdfunc.c:816 #: ccdfunc.c:683
#, c-format #, c-format
msgid "Can't run shutter command %s (unsupported?)" msgid "Can't run shutter command %s (unsupported?)"
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ ÚÁÔ×ÏÒÁ %s (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)" msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ ÚÁÔ×ÏÒÁ %s (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
#: client.c:495 client.c:595 #: client.c:487 client.c:587
msgid "Can't run without command socket" msgid "Can't run without command socket"
msgstr "îÅ ÍÏÇÕ ÒÁÂÏÔÁÔØ ÂÅÚ ËÏÍÁÎÄÎÏÇÏ ÓÏËÅÔÁ" msgstr "îÅ ÍÏÇÕ ÒÁÂÏÔÁÔØ ÂÅÚ ËÏÍÁÎÄÎÏÇÏ ÓÏËÅÔÁ"
#: ccdfunc.c:230 #: ccdfunc.c:108
#, c-format #, c-format
msgid "Can't save file with prefix %s" msgid "Can't save file with prefix %s"
msgstr "îÅ ÍÏÇÕ ÓÏÈÒÁÎÉÔØ ÆÁÊÌ Ó ÐÒÅÆÉËÓÏÍ %s" msgstr "îÅ ÍÏÇÕ ÓÏÈÒÁÎÉÔØ ÆÁÊÌ Ó ÐÒÅÆÉËÓÏÍ %s"
#: ccdfunc.c:868 #: ccdfunc.c:735
#, c-format #, c-format
msgid "Can't set %d flushes" msgid "Can't set %d flushes"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ %d ÓÂÒÏÓÏ×" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ %d ÓÂÒÏÓÏ×"
#: ccdfunc.c:832 #: ccdfunc.c:699
msgid "Can't set IOport" msgid "Can't set IOport"
msgstr "îÅ ÍÏÇÕ ÐÏÍÅÎÑÔØ ÚÎÁÞÅÎÉÑ ÐÏÒÔÁ I/O" msgstr "îÅ ÍÏÇÕ ÐÏÍÅÎÑÔØ ÚÎÁÞÅÎÉÑ ÐÏÒÔÁ I/O"
#: ccdfunc.c:806 #: ccdfunc.c:673
#, c-format #, c-format
msgid "Can't set T to %g degC" msgid "Can't set T to %g degC"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÔÅÍÐÅÒÁÔÕÒÕ × %g ÇÒÁÄã" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÔÅÍÐÅÒÁÔÕÒÕ × %g ÇÒÁÄã"
#: ccdfunc.c:731 #: ccdfunc.c:598
msgid "Can't set active camera number" msgid "Can't set active camera number"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÊ ËÁÍÅÒÙ" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÊ ËÁÍÅÒÙ"
#: ccdfunc.c:489 #: ccdfunc.c:363
msgid "Can't set active focuser number" msgid "Can't set active focuser number"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ÆÏËÕÓÅÒÁ" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ÆÏËÕÓÅÒÁ"
#: ccdfunc.c:597 #: ccdfunc.c:469
msgid "Can't set active wheel number" msgid "Can't set active wheel number"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ËÏÌÅÓÁ" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ËÏÌÅÓÁ"
#: main.c:97 #: main.c:99
#, c-format #, c-format
msgid "Can't set answer timeout to %g" msgid "Can't set answer timeout to %g"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÔÁÊÍÁÕÔ ÏÔ×ÅÔÁ × %g" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÔÁÊÍÁÕÔ ÏÔ×ÅÔÁ × %g"
#: ccdfunc.c:852 server.c:380 #: ccdfunc.c:719 server.c:359
#, c-format #, c-format
msgid "Can't set binning %dx%d" msgid "Can't set binning %dx%d"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÂÉÎÎÉÎÇ %dx%d" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÂÉÎÎÉÎÇ %dx%d"
#: ccdfunc.c:879 #: ccdfunc.c:746
msgid "Can't set bit depth" msgid "Can't set bit depth"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÒÁÚÒÑÄÎÏÓÔØ áãð" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÒÁÚÒÑÄÎÏÓÔØ áãð"
#: ccdfunc.c:846 #: ccdfunc.c:713
#, c-format #, c-format
msgid "Can't set brightness to %g" msgid "Can't set brightness to %g"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
#: ccdfunc.c:873 #: ccdfunc.c:740
#, c-format #, c-format
msgid "Can't set exposure time to %f seconds" msgid "Can't set exposure time to %f seconds"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÜËÓÐÏÚÉÃÉÀ × %f ÓÅËÕÎÄ" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÜËÓÐÏÚÉÃÉÀ × %f ÓÅËÕÎÄ"
#: ccdfunc.c:765 #: ccdfunc.c:632
msgid "Can't set fan speed" msgid "Can't set fan speed"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ×" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ×"
#: ccdfunc.c:840 #: ccdfunc.c:707
#, c-format #, c-format
msgid "Can't set gain to %g" msgid "Can't set gain to %g"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ gain × %g" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ gain × %g"
#: ccdfunc.c:864 server.c:381 #: ccdfunc.c:731 server.c:361
msgid "Can't set given geometry" msgid "Can't set given geometry"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÇÅÏÍÅÔÒÉÀ" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÇÅÏÍÅÔÒÉÀ"
#: ccdfunc.c:560 #: ccdfunc.c:434
#, c-format #, c-format
msgid "Can't set position %g" msgid "Can't set position %g"
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÐÏÚÉÃÉÀ ÎÁ %g" msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÐÏÚÉÃÉÀ ÎÁ %g"
#: ccdfunc.c:554 #: ccdfunc.c:428
#, c-format #, c-format
msgid "Can't set position %g: out of limits [%g, %g]" msgid "Can't set position %g: out of limits [%g, %g]"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÚÉÃÉÀ %g: ×ÎÅ ÐÒÅÄÅÌÏ× [%g, %g]" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÚÉÃÉÀ %g: ×ÎÅ ÐÒÅÄÅÌÏ× [%g, %g]"
#: ccdfunc.c:881 #: ccdfunc.c:748
msgid "Can't set readout speed" msgid "Can't set readout speed"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ÓÞÉÔÙ×ÁÎÉÑ" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ÓÞÉÔÙ×ÁÎÉÑ"
#: ccdfunc.c:652 #: ccdfunc.c:527
#, c-format #, c-format
msgid "Can't set wheel position %d" msgid "Can't set wheel position %d"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ %d" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ %d"
#: ccdfunc.c:954 ccdfunc.c:1032 server.c:235 #: ccdfunc.c:860 ccdfunc.c:937 server.c:214
msgid "Can't start exposition" msgid "Can't start exposition"
msgstr "îÅ ÍÏÇÕ ÎÁÞÁÔØ ÜËÓÐÏÚÉÃÉÀ" msgstr "îÅ ÍÏÇÕ ÎÁÞÁÔØ ÜËÓÐÏÚÉÃÉÀ"
@@ -328,45 +342,45 @@ msgstr "
msgid "Can't unlock socket mutex" msgid "Can't unlock socket mutex"
msgstr "îÅ ÍÏÇÕ ÒÁÚÂÌÏËÉÒÏ×ÁÔØ ÍØÀÔÅËÓ ÓÏËÅÔÁ" msgstr "îÅ ÍÏÇÕ ÒÁÚÂÌÏËÉÒÏ×ÁÔØ ÍØÀÔÅËÓ ÓÏËÅÔÁ"
#: main.c:91 #: main.c:93
msgid "Can't use outfile name and prefix together" msgid "Can't use outfile name and prefix together"
msgstr "îÅ ÍÏÇÕ ÏÄÎÏ×ÒÅÍÅÎÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÉÍÑ ÆÁÊÌÁ É ÐÒÅÆÉËÓ" msgstr "îÅ ÍÏÇÕ ÏÄÎÏ×ÒÅÍÅÎÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÉÍÑ ÆÁÊÌÁ É ÐÒÅÆÉËÓ"
#: ccdfunc.c:951 #: ccdfunc.c:857
#, c-format #, c-format
msgid "Capture frame %d" msgid "Capture frame %d"
msgstr "úÁÈ×ÁÔ ËÁÄÒÁ %d" msgstr "úÁÈ×ÁÔ ËÁÄÒÁ %d"
#: server.c:1176 #: server.c:1165
msgid "Client wants an image, but there's no data" msgid "Client wants an image, but there's no data"
msgstr "ëÌÉÅÎÔ ÖÄÅÔ ÉÚÏÂÒÁÖÅÎÉÑ, ÎÏ ÄÁÎÎÙÅ ÏÔÓÕÔÓÔ×ÕÀÔ" msgstr "ëÌÉÅÎÔ ÖÄÅÔ ÉÚÏÂÒÁÖÅÎÉÑ, ÎÏ ÄÁÎÎÙÅ ÏÔÓÕÔÓÔ×ÕÀÔ"
#: ccdfunc.c:746 ccdfunc.c:749 #: ccdfunc.c:613 ccdfunc.c:616
#, c-format #, c-format
msgid "Command '%s'" msgid "Command '%s'"
msgstr "ëÏÍÁÎÄÁ '%s'" msgstr "ëÏÍÁÎÄÁ '%s'"
#: ccdfunc.c:793 #: ccdfunc.c:660
#, c-format #, c-format
msgid "Current binning: %d x %d" msgid "Current binning: %d x %d"
msgstr "ôÅËÕÝÉÊ ÂÉÎÎÉÎÇ: %d x %d" msgstr "ôÅËÕÝÉÊ ÂÉÎÎÉÎÇ: %d x %d"
#: ccdfunc.c:799 #: ccdfunc.c:666
#, c-format #, c-format
msgid "Current brightness: %g" msgid "Current brightness: %g"
msgstr "ôÅËÕÝÁÑ ÑÒËÏÓÔØ: %g" msgstr "ôÅËÕÝÁÑ ÑÒËÏÓÔØ: %g"
#: ccdfunc.c:784 #: ccdfunc.c:651
#, c-format #, c-format
msgid "Current format: %s" msgid "Current format: %s"
msgstr "ôÅËÕÝÉÊ ÆÏÒÍÁÔ: %s" msgstr "ôÅËÕÝÉÊ ÆÏÒÍÁÔ: %s"
#: ccdfunc.c:801 #: ccdfunc.c:668
#, c-format #, c-format
msgid "Current gain: %g" msgid "Current gain: %g"
msgstr "ôÅËÕÝÉÊ gain: %s" msgstr "ôÅËÕÝÉÊ gain: %s"
#: ccdfunc.c:796 #: ccdfunc.c:663
#, c-format #, c-format
msgid "Current settings: %d bits per pixel" msgid "Current settings: %d bits per pixel"
msgstr "ôÅËÕÝÉÅ ÎÁÓÔÒÏÊËÉ: %d ÂÉÔ ÎÁ ÐÉËÓÅÌØ" msgstr "ôÅËÕÝÉÅ ÎÁÓÔÒÏÊËÉ: %d ÂÉÔ ÎÁ ÐÉËÓÅÌØ"
@@ -375,93 +389,93 @@ msgstr "
msgid "Display image in OpenGL window" msgid "Display image in OpenGL window"
msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ × ÏËÎÅ OpenGL" msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ × ÏËÎÅ OpenGL"
#: imageview.c:769 #: imageview.c:773
#, c-format #, c-format
msgid "Equalization of histogram: %s" msgid "Equalization of histogram: %s"
msgstr "üË×ÁÌÉÚÁÃÉÑ ÇÉÓÔÏÇÒÁÍÍÙ: %s" msgstr "üË×ÁÌÉÚÁÃÉÑ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
#: ccdfunc.c:395 #: ccdfunc.c:269
#, c-format #, c-format
msgid "Error saving file %s" msgid "Error saving file %s"
msgstr "ïÛÉÂËÁ ÓÏÈÒÁÎÅÎÉÑ ÆÁÊÌÁ %s" msgstr "ïÛÉÂËÁ ÓÏÈÒÁÎÅÎÉÑ ÆÁÊÌÁ %s"
#. start next capture #. start next capture
#. last image -> should re-expose #. last image -> should re-expose
#: client.c:537 client.c:548 client.c:567 #: client.c:529 client.c:540 client.c:559
#, c-format #, c-format
msgid "Exposing frame %d..." msgid "Exposing frame %d..."
msgstr "üËÓÐÏÎÉÒÕÀ ËÁÄÒ %d..." msgstr "üËÓÐÏÎÉÒÕÀ ËÁÄÒ %d..."
#: client.c:514 #: client.c:506
msgid "Exposing frame 1..." msgid "Exposing frame 1..."
msgstr "üËÓÐÏÎÉÒÕÀ ËÁÄÒ 1..." msgstr "üËÓÐÏÎÉÒÕÀ ËÁÄÒ 1..."
#: ccdfunc.c:781 #: ccdfunc.c:648
#, c-format #, c-format
msgid "Field of view: %s" msgid "Field of view: %s"
msgstr "ðÏÌÅ ÚÒÅÎÉÑ: %s" msgstr "ðÏÌÅ ÚÒÅÎÉÑ: %s"
#: main.c:94 ccdfunc.c:222 #: main.c:96 ccdfunc.c:100
#, c-format #, c-format
msgid "File %s exists!" msgid "File %s exists!"
msgstr "æÁÊÌ %s ÓÕÝÅÓÔ×ÕÅÔ!" msgstr "æÁÊÌ %s ÓÕÝÅÓÔ×ÕÅÔ!"
#: ccdfunc.c:386 #: ccdfunc.c:260
#, c-format #, c-format
msgid "File saved as '%s'" msgid "File saved as '%s'"
msgstr "æÁÊÌ ÓÏÈÒÁÎÅÎ ËÁË '%s'" msgstr "æÁÊÌ ÓÏÈÒÁÎÅÎ ËÁË '%s'"
#: ccdfunc.c:459 #: ccdfunc.c:333
msgid "Focuser device not pointed" msgid "Focuser device not pointed"
msgstr "õÓÔÒÏÊÓÔ×Ï ÆÏËÕÓÅÒÁ ÎÅ ÕËÁÚÁÎÏ" msgstr "õÓÔÒÏÊÓÔ×Ï ÆÏËÕÓÅÒÁ ÎÅ ÕËÁÚÁÎÏ"
#: ccdfunc.c:727 #: ccdfunc.c:594
#, c-format #, c-format
msgid "Found %d cameras, you point number %d" msgid "Found %d cameras, you point number %d"
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ËÁÍÅÒ, ×Ù ÕËÁÚÁÌÉ %d" msgstr "ïÂÎÁÒÕÖÅÎÏ %d ËÁÍÅÒ, ×Ù ÕËÁÚÁÌÉ %d"
#: ccdfunc.c:484 #: ccdfunc.c:358
#, c-format #, c-format
msgid "Found %d focusers, you point number %d" msgid "Found %d focusers, you point number %d"
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ÆÏËÕÓÅÒÏ×, ×Ù ÕËÁÚÁÌÉ %d" msgstr "ïÂÎÁÒÕÖÅÎÏ %d ÆÏËÕÓÅÒÏ×, ×Ù ÕËÁÚÁÌÉ %d"
#: ccdfunc.c:592 #: ccdfunc.c:464
#, c-format #, c-format
msgid "Found %d wheels, you point number %d" msgid "Found %d wheels, you point number %d"
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ËÏÌÅÓ, ×Ù ÕËÁÚÁÌÉ %d" msgstr "ïÂÎÁÒÕÖÅÎÏ %d ËÏÌÅÓ, ×Ù ÕËÁÚÁÌÉ %d"
#: ccdfunc.c:721 #: ccdfunc.c:588
#, c-format #, c-format
msgid "Found camera #%d: %s\n" msgid "Found camera #%d: %s\n"
msgstr "ïÂÎÁÒÕÖÅÎÁ ËÁÍÅÒÁ ÎÏÍÅÒ %d: %s\n" msgstr "ïÂÎÁÒÕÖÅÎÁ ËÁÍÅÒÁ ÎÏÍÅÒ %d: %s\n"
#: ccdfunc.c:522 #: ccdfunc.c:396
#, c-format #, c-format
msgid "Found focuser #%d: %s\n" msgid "Found focuser #%d: %s\n"
msgstr "ïÂÎÁÒÕÖÅÎ ÆÏËÕÓÅÒ ÎÏÍÅÒ %d: %s\n" msgstr "ïÂÎÁÒÕÖÅÎ ÆÏËÕÓÅÒ ÎÏÍÅÒ %d: %s\n"
#: ccdfunc.c:628 #: ccdfunc.c:500
#, c-format #, c-format
msgid "Found wheel #%d: %s\n" msgid "Found wheel #%d: %s\n"
msgstr "ïÂÎÁÒÕÖÅÎÁ ÔÕÒÅÌØ ÎÏÍÅÒ %d: %s\n" msgstr "ïÂÎÁÒÕÖÅÎÁ ÔÕÒÅÌØ ÎÏÍÅÒ %d: %s\n"
#: client.c:555 #: client.c:547
msgid "Frame ready, try to grab" msgid "Frame ready, try to grab"
msgstr "ëÁÄÒ ÇÏÔÏ×, ÐÙÔÁÀÓØ ÓÞÉÔÁÔØ" msgstr "ëÁÄÒ ÇÏÔÏ×, ÐÙÔÁÀÓØ ÓÞÉÔÁÔØ"
#. for(int i = 0; i < NFRM; ++i) printf("last[%d]=%g\n", i, lastn[i]); #. for(int i = 0; i < NFRM; ++i) printf("last[%d]=%g\n", i, lastn[i]);
#: ccdfunc.c:1015 #: ccdfunc.c:920
#, c-format #, c-format
msgid "Framerate=%.2f (%g seconds for exp); mean framerate=%.2f" msgid "Framerate=%.2f (%g seconds for exp); mean framerate=%.2f"
msgstr "%.2f ËÁÄÒÏ× × ÓÅËÕÎÄÕ (%g ÓÅËÕÎÄ ÎÁ ÜËÓÐÏÚÉÃÉÀ); ÓÒÅÄÎÑÑ ÓËÏÒÏÓÔØ " msgstr "%.2f ËÁÄÒÏ× × ÓÅËÕÎÄÕ (%g ÓÅËÕÎÄ ÎÁ ÜËÓÐÏÚÉÃÉÀ); ÓÒÅÄÎÑÑ ÓËÏÒÏÓÔØ "
"%.2f" "%.2f"
#: ccdfunc.c:778 #: ccdfunc.c:645
#, c-format #, c-format
msgid "Full array: %s" msgid "Full array: %s"
msgstr "ðÏÌÎÙÊ ÆÏÒÍÁÔ: %s" msgstr "ðÏÌÎÙÊ ÆÏÒÍÁÔ: %s"
#: ccdfunc.c:789 #: ccdfunc.c:656
#, c-format #, c-format
msgid "Geometry steps: offset - %dx%d, size - %dx%d" msgid "Geometry steps: offset - %dx%d, size - %dx%d"
msgstr "ûÁÇ ÉÚÍÅÒÅÎÉÑ ÇÅÏÍÅÔÒÉÉ: ÓÍÅÝÅÎÉÑ - %dx%d, ÒÁÚÍÅÒÁ - %dx%d" msgstr "ûÁÇ ÉÚÍÅÒÅÎÉÑ ÇÅÏÍÅÔÒÉÉ: ÓÍÅÝÅÎÉÑ - %dx%d, ÒÁÚÍÅÒÁ - %dx%d"
@@ -472,7 +486,7 @@ msgstr "
msgid "Get signal %d - exit" msgid "Get signal %d - exit"
msgstr "ðÏÌÕÅÎ ÓÉÇÎÁÌ %d - ×ÙÈÏÄ" msgstr "ðÏÌÕÅÎ ÓÉÇÎÁÌ %d - ×ÙÈÏÄ"
#: client.c:565 #: client.c:557
msgid "Got already saved image, wait next" msgid "Got already saved image, wait next"
msgstr "ðÏÌÕÞÉÌ ÕÖÅ ÓÏÈÒÁÎÅÎÎÏÅ ÉÚÏÂÒÁÖÅÎÉÅ, ÖÄÕ ÓÌÅÄÕÀÝÅÇÏ" msgstr "ðÏÌÕÞÉÌ ÕÖÅ ÓÏÈÒÁÎÅÎÎÏÅ ÉÚÏÂÒÁÖÅÎÉÅ, ÖÄÕ ÓÌÅÄÕÀÝÅÇÏ"
@@ -489,33 +503,33 @@ msgstr "
msgid "INET image socket port" msgid "INET image socket port"
msgstr "ÐÏÒÔ ÌÏËÁÌØÎÏÇÏ ÓÅÔÅ×ÏÇÏ ÓÏËÅÔÁ ÐÅÒÅÄÁÞÉ ÉÚÏÂÒÁÖÅÎÉÑ" msgstr "ÐÏÒÔ ÌÏËÁÌØÎÏÇÏ ÓÅÔÅ×ÏÇÏ ÓÏËÅÔÁ ÐÅÒÅÄÁÞÉ ÉÚÏÂÒÁÖÅÎÉÑ"
#: ccdfunc.c:211 #: ccdfunc.c:89
msgid "Image not saved: neither filename nor filename prefix pointed" msgid "Image not saved: neither filename nor filename prefix pointed"
msgstr "éÚÏÂÒÁÖÅÎÉÅ ÎÅ ÓÏÈÒÁÎÅÎÏ: ÎÅ ÕËÁÚÁÎÏ ÎÉ ÉÍÅÎÉ ÆÁÊÌÁ, ÎÉ ÐÒÅÆÉËÓÁ" msgstr "éÚÏÂÒÁÖÅÎÉÅ ÎÅ ÓÏÈÒÁÎÅÎÏ: ÎÅ ÕËÁÚÁÎÏ ÎÉ ÉÍÅÎÉ ÆÁÊÌÁ, ÎÉ ÐÒÅÆÉËÓÁ"
#: ccdfunc.c:450 #: ccdfunc.c:324
#, c-format #, c-format
msgid "Image stat:\n" msgid "Image stat:\n"
msgstr "óÔÁÔÉÓÔÉËÁ ÐÏ ÉÚÏÂÒÁÖÅÎÉÀ: \n" msgstr "óÔÁÔÉÓÔÉËÁ ÐÏ ÉÚÏÂÒÁÖÅÎÉÀ: \n"
#: client.c:642 #: client.c:634
#, c-format #, c-format
msgid "Image wasn't received, state: %d, waiting: %g, lastNo: %d, curNo: %d " msgid "Image wasn't received, state: %d, waiting: %g, lastNo: %d, curNo: %d "
"(timeout: %g)" "(timeout: %g)"
msgstr "éÚÏÂÒÁÖÅÎÉÅ ÎÅ ÂÙÌÏ ÐÏÌÕÞÅÎÏ. óÏÓÔÏÑÎÉÅ: %d, ÏÖÉÄÁÎÉÅ: %g, ÐÏÓÌÅÄÎÉÊ " msgstr "éÚÏÂÒÁÖÅÎÉÅ ÎÅ ÂÙÌÏ ÐÏÌÕÞÅÎÏ. óÏÓÔÏÑÎÉÅ: %d, ÏÖÉÄÁÎÉÅ: %g, ÐÏÓÌÅÄÎÉÊ "
"ÎÏÍÅÒ: %d, ÔÅËÕÝÉÊ ÎÏÍÅÒ: %d (ÔÁÊÍÁÕÔ: %g)" "ÎÏÍÅÒ: %d, ÔÅËÕÝÉÊ ÎÏÍÅÒ: %d (ÔÁÊÍÁÕÔ: %g)"
#: server.c:1205 #: server.c:1194
msgid "Limit of connections reached" msgid "Limit of connections reached"
msgstr "äÏÓÔÉÇÎÕÔ ÐÒÅÄÅÌ ËÏÌÉÞÅÓÔ×Á ÐÏÄËÌÀÞÅÎÉÊ" msgstr "äÏÓÔÉÇÎÕÔ ÐÒÅÄÅÌ ËÏÌÉÞÅÓÔ×Á ÐÏÄËÌÀÞÅÎÉÊ"
#: main.c:127 #: main.c:129
#, c-format #, c-format
msgid "Log file %s @ level %d\n" msgid "Log file %s @ level %d\n"
msgstr "ìÏÇ-ÆÁÊÌ %s Ó ÕÒÏ×ÎÅÍ %d\n" msgstr "ìÏÇ-ÆÁÊÌ %s Ó ÕÒÏ×ÎÅÍ %d\n"
#. save image #. save image
#: imageview.c:752 #: imageview.c:756
msgid "Make screenshot" msgid "Make screenshot"
msgstr "óÄÅÌÁÔØ ÓËÒÉÎÛÏÔ" msgstr "óÄÅÌÁÔØ ÓËÒÉÎÛÏÔ"
@@ -524,22 +538,22 @@ msgstr "
msgid "Master killed with sig=%d" msgid "Master killed with sig=%d"
msgstr "èÏÚÑÉÎ ÕÂÉÔ Ó ÓÉÇÎÁÌÏÍ %d" msgstr "èÏÚÑÉÎ ÕÂÉÔ Ó ÓÉÇÎÁÌÏÍ %d"
#: ccdfunc.c:803 #: ccdfunc.c:670
#, c-format #, c-format
msgid "Maximal gain: %g" msgid "Maximal gain: %g"
msgstr "îÁÉÂÏÌØÛÉÊ gain: %g" msgstr "îÁÉÂÏÌØÛÉÊ gain: %g"
#: ccdfunc.c:787 #: ccdfunc.c:654
#, c-format #, c-format
msgid "Maximal geometry (WxH): %dx%d" msgid "Maximal geometry (WxH): %dx%d"
msgstr "îÁÉÂÏÌØÛÁÑ ÇÅÏÍÅÔÒÉÑ (WxH): %dx%d" msgstr "îÁÉÂÏÌØÛÁÑ ÇÅÏÍÅÔÒÉÑ (WxH): %dx%d"
#: ccdfunc.c:788 #: ccdfunc.c:655
#, c-format #, c-format
msgid "Minimal offset: %dx%d" msgid "Minimal offset: %dx%d"
msgstr "íÉÎÉÍÁÌØÎÏÅ ÓÍÅÝÅÎÉÅ: %dx%d" msgstr "íÉÎÉÍÁÌØÎÏÅ ÓÍÅÝÅÎÉÅ: %dx%d"
#: imageview.c:616 #: imageview.c:617
#, c-format #, c-format
msgid "Missed %zd images" msgid "Missed %zd images"
msgstr "ðÒÏÐÕÝÅÎÏ %zd ÉÚÏÂÒÁÖÅÎÉÊ" msgstr "ðÒÏÐÕÝÅÎÏ %zd ÉÚÏÂÒÁÖÅÎÉÊ"
@@ -548,59 +562,59 @@ msgstr "
msgid "N flushes before exposing (default: 1)" msgid "N flushes before exposing (default: 1)"
msgstr "N ÚÁÓ×ÅÞÉ×ÁÎÉÊ ÐÅÒÅÄ ÜËÓÐÏÚÉÃÉÅÊ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 1)" msgstr "N ÚÁÓ×ÅÞÉ×ÁÎÉÊ ÐÅÒÅÄ ÜËÓÐÏÚÉÃÉÅÊ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 1)"
#: ccdfunc.c:1126 #: ccdfunc.c:1023
msgid "Need exposition time!" msgid "Need exposition time!"
msgstr "õËÁÖÉÔÅ ×ÒÅÍÑ ÜËÓÐÏÚÉÃÉÉ!" msgstr "õËÁÖÉÔÅ ×ÒÅÍÑ ÜËÓÐÏÚÉÃÉÉ!"
#: server.c:297 #: server.c:276
msgid "No camera device" msgid "No camera device"
msgstr "îÅ ÕËÁÚÁÎÏ ÕÓÔÒÏÊÓÔ×Ï ËÁÍÅÒÙ" msgstr "îÅ ÕËÁÚÁÎÏ ÕÓÔÒÏÊÓÔ×Ï ËÁÍÅÒÙ"
#: ccdfunc.c:695 ccdfunc.c:696 #: ccdfunc.c:562 ccdfunc.c:563
msgid "No cameras found" msgid "No cameras found"
msgstr "ëÁÍÅÒ ÎÅ ÏÂÎÁÒÕÖÅÎÏ" msgstr "ëÁÍÅÒ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
#: server.c:1131 #: server.c:1120
#, fuzzy #, fuzzy
msgid "No devices found" msgid "No devices found"
msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ" msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
#: ccdfunc.c:466 #: ccdfunc.c:340
msgid "No focusers found" msgid "No focusers found"
msgstr "æÏËÕÓÅÒÏ× ÎÅ ÏÂÎÁÒÕÖÅÎÏ" msgstr "æÏËÕÓÅÒÏ× ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
#: imageview.c:711 #: imageview.c:715
msgid "No image changing function defined" msgid "No image changing function defined"
msgstr "îÅ ÏÐÒÅÄÅÌÅÎÁ ÆÕÎËÃÉÑ, ÏÔ×ÅÔÓÔ×ÅÎÎÁÑ ÚÁ ÓÍÅÎÕ ÉÚÏÂÒÁÖÅÎÉÊ" msgstr "îÅ ÏÐÒÅÄÅÌÅÎÁ ÆÕÎËÃÉÑ, ÏÔ×ÅÔÓÔ×ÅÎÎÁÑ ÚÁ ÓÍÅÎÕ ÉÚÏÂÒÁÖÅÎÉÊ"
#: ccdfunc.c:575 #: ccdfunc.c:447
msgid "No wheels found" msgid "No wheels found"
msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ" msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
#: ccdfunc.c:883 #: ccdfunc.c:750
msgid "Only show statistics" msgid "Only show statistics"
msgstr "ôÏÌØËÏ ÏÔÏÂÒÁÚÉÔØ ÓÔÁÔÉÓÔÉËÕ" msgstr "ôÏÌØËÏ ÏÔÏÂÒÁÚÉÔØ ÓÔÁÔÉÓÔÉËÕ"
#: main.c:101 #: main.c:103
msgid "Options `port` and `path` can't be used together! Point `port` for " msgid "Options `port` and `path` can't be used together! Point `port` for "
"TCP socket or `path` for UNIX." "TCP socket or `path` for UNIX."
msgstr "ïÐÃÉÉ `port` É `path` ÎÅ ÍÏÇÕÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÓÏ×ÍÅÓÔÎÏ! õËÁÖÉÔÅ " msgstr "ïÐÃÉÉ `port` É `path` ÎÅ ÍÏÇÕÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÓÏ×ÍÅÓÔÎÏ! õËÁÖÉÔÅ "
"`port` ÄÌÑ TCP-ÓÏËÅÔÏ× ÉÌÉ `path` ÄÌÑ UNIX." "`port` ÄÌÑ TCP-ÓÏËÅÔÏ× ÉÌÉ `path` ÄÌÑ UNIX."
#: ccdfunc.c:772 #: ccdfunc.c:639
#, c-format #, c-format
msgid "Pixel size: %g x %g" msgid "Pixel size: %g x %g"
msgstr "òÁÚÍÅÒ ÐÉËÓÅÌÑ: %g x %g" msgstr "òÁÚÍÅÒ ÐÉËÓÅÌÑ: %g x %g"
#: ccdfunc.c:1113 #: ccdfunc.c:1010
msgid "Point network port or UNIX-socket path" msgid "Point network port or UNIX-socket path"
msgstr "õËÁÖÉÔÅ ÓÅÔÅ×ÏÊ ÐÏÒÔ ÉÌÉ ÐÕÔØ Ë UNIX-ÓÏËÅÔÕ" msgstr "õËÁÖÉÔÅ ÓÅÔÅ×ÏÊ ÐÏÒÔ ÉÌÉ ÐÕÔØ Ë UNIX-ÓÏËÅÔÕ"
#: ccdfunc.c:962 #: ccdfunc.c:868
msgid "Read grabbed image" msgid "Read grabbed image"
msgstr "óÞÉÔÙ×ÁÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ" msgstr "óÞÉÔÙ×ÁÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ"
#: ccdfunc.c:882 #: ccdfunc.c:749
#, c-format #, c-format
msgid "Readout mode: %s" msgid "Readout mode: %s"
msgstr "òÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ: %s" msgstr "òÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ: %s"
@@ -612,7 +626,7 @@ msgstr "
#. send message and wait any answer #. send message and wait any answer
#. send message and wait answer starting with 'cmd' #. send message and wait answer starting with 'cmd'
#. send command and wait for answer on it #. send command and wait for answer on it
#: client.c:42 client.c:44 client.c:46 client.c:290 #: client.c:42 client.c:44 client.c:46 client.c:282
msgid "Server disconnected" msgid "Server disconnected"
msgstr "óÅÒ×ÅÒ ÏÔËÌÀÞÅÎ" msgstr "óÅÒ×ÅÒ ÏÔËÌÀÞÅÎ"
@@ -620,66 +634,66 @@ msgstr "
msgid "Server disconnected?" msgid "Server disconnected?"
msgstr "óÅÒ×ÅÒ ÏÔËÌÀÞÅÎ?" msgstr "óÅÒ×ÅÒ ÏÔËÌÀÞÅÎ?"
#: server.c:1100 #: server.c:1089
msgid "Server run without image transport socket" msgid "Server run without image transport socket"
msgstr "óÅÒ×ÅÒ ÚÁÐÕÝÅÎ ÂÅÚ ÔÒÁÎÓÐÏÒÔÎÏÇÏ ÓÏËÅÔÁ (ÔÏÌØËÏ SHM)" msgstr "óÅÒ×ÅÒ ÚÁÐÕÝÅÎ ÂÅÚ ÔÒÁÎÓÐÏÒÔÎÏÇÏ ÓÏËÅÔÁ (ÔÏÌØËÏ SHM)"
#: client.c:589 #: client.c:581
msgid "Server timeout" msgid "Server timeout"
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ" msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
#: ccdfunc.c:845 #: ccdfunc.c:712
#, c-format #, c-format
msgid "Set brightness to %g" msgid "Set brightness to %g"
msgstr "õÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g" msgstr "õÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
#: ccdfunc.c:766 #: ccdfunc.c:633
#, c-format #, c-format
msgid "Set fan speed to %d" msgid "Set fan speed to %d"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ× × %d" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ× × %d"
#: ccdfunc.c:839 #: ccdfunc.c:706
#, c-format #, c-format
msgid "Set gain to %g" msgid "Set gain to %g"
msgstr "õÓÔÁÎÏ×ÉÔØ Gain × %g" msgstr "õÓÔÁÎÏ×ÉÔØ Gain × %g"
#: main.c:119 #: main.c:121
#, c-format #, c-format
msgid "Set image port to %s\n" msgid "Set image port to %s\n"
msgstr "õÓÔÁÎÁ×ÌÉ×ÁÀ ÎÏÍÅÒ ÔÒÁÎÓÐÏÒÔÎÏÇÏ ÐÏÒÔÁ × %d\n" msgstr "õÓÔÁÎÁ×ÌÉ×ÁÀ ÎÏÍÅÒ ÔÒÁÎÓÐÏÒÔÎÏÇÏ ÐÏÒÔÁ × %d\n"
#: imageview.c:756 #: imageview.c:760
#, c-format #, c-format
msgid "Set output prefix to %s" msgid "Set output prefix to %s"
msgstr "õÓÔÁÎÁ×ÌÉ×ÁÀ ×ÙÈÏÄÎÏÊ ÐÒÅÆÉËÓ × %s" msgstr "õÓÔÁÎÁ×ÌÉ×ÁÀ ×ÙÈÏÄÎÏÊ ÐÒÅÆÉËÓ × %s"
#: ccdfunc.c:814 #: ccdfunc.c:681
#, c-format #, c-format
msgid "Shutter command: %s\n" msgid "Shutter command: %s\n"
msgstr "ëÏÍÁÎÄÁ ÚÁÔ×ÏÒÁ: %s\n" msgstr "ëÏÍÁÎÄÁ ÚÁÔ×ÏÒÁ: %s\n"
#: ccdfunc.c:1041 #: ccdfunc.c:946
msgid "Some error when capture" msgid "Some error when capture"
msgstr "ïÛÉÂËÁ ÐÒÉ ÚÁÈ×ÁÔÅ" msgstr "ïÛÉÂËÁ ÐÒÉ ÚÁÈ×ÁÔÅ"
#: server.c:249 #: server.c:228
msgid "Something's wrong with camera" msgid "Something's wrong with camera"
msgstr "þÔÏ-ÔÏ ËÁÍÅÒÅ ÐÏÐÌÏÈÅÌÏ" msgstr "þÔÏ-ÔÏ ËÁÍÅÒÅ ÐÏÐÌÏÈÅÌÏ"
#: client.c:470 #: client.c:462
msgid "Still got old image" msgid "Still got old image"
msgstr "÷ÓÅ ÅÝÅ ÐÏÌÕÞÁÀ ÓÔÁÒÙÅ ÉÚÏÂÒÁÖÅÎÉÑ" msgstr "÷ÓÅ ÅÝÅ ÐÏÌÕÞÁÀ ÓÔÁÒÙÅ ÉÚÏÂÒÁÖÅÎÉÑ"
#: client.c:443 #: client.c:435
msgid "Too many FITS headers, truncating" msgid "Too many FITS headers, truncating"
msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÚÁÇÏÌÏ×ËÏ× FITS, ÏÂÒÅÚÁÀ" msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÚÁÇÏÌÏ×ËÏ× FITS, ÏÂÒÅÚÁÀ"
#: ccdfunc.c:819 #: ccdfunc.c:686
#, c-format #, c-format
msgid "Try to configure I/O port as %d" msgid "Try to configure I/O port as %d"
msgstr "ðÏÐÙÔËÁ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ ÐÏÒÔ I/O ËÁË %d" msgstr "ðÏÐÙÔËÁ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ ÐÏÒÔ I/O ËÁË %d"
#: ccdfunc.c:830 #: ccdfunc.c:697
#, c-format #, c-format
msgid "Try to write %d to I/O port" msgid "Try to write %d to I/O port"
msgstr "ðÏÐÙÔËÁ ÚÁÐÉÓÉ %d × ÐÏÒÔ I/O" msgstr "ðÏÐÙÔËÁ ÚÁÐÉÓÉ %d × ÐÏÒÔ I/O"
@@ -688,25 +702,25 @@ msgstr "
msgid "UNIX socket name (command socket)" msgid "UNIX socket name (command socket)"
msgstr "ÉÍÑ UNIX-ÓÏËÅÔÁ" msgstr "ÉÍÑ UNIX-ÓÏËÅÔÁ"
#: client.c:516 #: client.c:508
msgid "Wait for exposition end" msgid "Wait for exposition end"
msgstr "öÄÕ, ÐÏËÁ ÎÅ ËÏÎÞÉÔÓÑ ÜËÓÐÏÚÉÃÉÑ" msgstr "öÄÕ, ÐÏËÁ ÎÅ ËÏÎÞÉÔÓÑ ÜËÓÐÏÚÉÃÉÑ"
#: ccdfunc.c:568 #: ccdfunc.c:440
msgid "Wheel device not pointed" msgid "Wheel device not pointed"
msgstr "õÓÔÒÏÊÓÔ×Ï ÔÕÒÅÌÉ ÎÅ ÕËÁÚÁÎÏ" msgstr "õÓÔÒÏÊÓÔ×Ï ÔÕÒÅÌÉ ÎÅ ÕËÁÚÁÎÏ"
#: ccdfunc.c:634 #: ccdfunc.c:509
#, fuzzy, c-format #, fuzzy, c-format
msgid "Wheel model: %s" msgid "Wheel model: %s"
msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s" msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s"
#: ccdfunc.c:648 #: ccdfunc.c:523
#, c-format #, c-format
msgid "Wheel position should be from 0 to %d" msgid "Wheel position should be from 0 to %d"
msgstr "ðÏÚÉÃÉÑ ËÏÌÅÓÁ ÄÏÌÖÎÁ ÂÙÔØ ÏÔ 0 ÄÏ %d" msgstr "ðÏÚÉÃÉÑ ËÏÌÅÓÁ ÄÏÌÖÎÁ ÂÙÔØ ÏÔ 0 ÄÏ %d"
#: main.c:106 #: main.c:108
#, c-format #, c-format
msgid "Wrong port value: %d" msgid "Wrong port value: %d"
msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÎÏÍÅÒ ÐÏÒÔÁ: %d" msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÎÏÍÅÒ ÐÏÒÔÁ: %d"
@@ -859,11 +873,11 @@ msgstr "
msgid "observing program name" msgid "observing program name"
msgstr "ÎÁÚ×ÁÎÉÅ ÐÒÏÇÒÁÍÍÙ" msgstr "ÎÁÚ×ÁÎÉÅ ÐÒÏÇÒÁÍÍÙ"
#: imageview.c:769 #: imageview.c:773
msgid "off" msgid "off"
msgstr "×ÙËÌ" msgstr "×ÙËÌ"
#: imageview.c:769 #: imageview.c:773
msgid "on" msgid "on"
msgstr "×ËÌ" msgstr "×ËÌ"
@@ -907,7 +921,7 @@ msgstr "
msgid "run in 8-bit mode" msgid "run in 8-bit mode"
msgstr "8-ÂÉÔÎÙÊ ÒÅÖÉÍ" msgstr "8-ÂÉÔÎÙÊ ÒÅÖÉÍ"
#: server.c:1099 #: server.c:1088
msgid "server(): need at least command socket fd" msgid "server(): need at least command socket fd"
msgstr "server(): ÎÕÖÅÎ ËÁË ÍÉÎÉÍÕÍ ÄÅÓËÒÉÐÔÏÒ ËÏÍÁÎÄÎÏÇÏ ÓÏËÅÔÁ" msgstr "server(): ÎÕÖÅÎ ËÁË ÍÉÎÉÍÕÍ ÄÅÓËÒÉÐÔÏÒ ËÏÍÁÎÄÎÏÇÏ ÓÏËÅÔÁ"
@@ -943,7 +957,7 @@ msgstr "
msgid "start (!=0) or stop(==0) infinity capturing loop" msgid "start (!=0) or stop(==0) infinity capturing loop"
msgstr "ÎÁÞÁÔØ (!=0) ÉÌÉ ÚÁËÏÎÞÉÔØ (==0) ÂÅÓËÏÎÅÞÎÙÊ ÃÉËÌ ÚÁÈ×ÁÔÁ ÉÚÏÂÒÁÖÅÎÉÊ" msgstr "ÎÁÞÁÔØ (!=0) ÉÌÉ ÚÁËÏÎÞÉÔØ (==0) ÂÅÓËÏÎÅÞÎÙÊ ÃÉËÌ ÚÁÈ×ÁÔÁ ÉÚÏÂÒÁÖÅÎÉÊ"
#: ccdfunc.c:1117 #: ccdfunc.c:1014
msgid "start_socket(): can't open socket" msgid "start_socket(): can't open socket"
msgstr "start_socket(): ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ÓÏËÅÔ" msgstr "start_socket(): ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ÓÏËÅÔ"
@@ -960,6 +974,3 @@ msgstr "
#: cmdlnopts.c:68 #: cmdlnopts.c:68
msgid "wheel device plugin (e.g. devdummy.so)" msgid "wheel device plugin (e.g. devdummy.so)"
msgstr "ÐÌÁÇÉÎ ÕÓÔÒÏÊÓÔ×Á ÔÕÒÅÌÉ (ÎÁÐÒÉÍÅÒ, devdummy.so)" msgstr "ÐÌÁÇÉÎ ÕÓÔÒÏÊÓÔ×Á ÔÕÒÅÌÉ (ÎÁÐÒÉÍÅÒ, devdummy.so)"
#~ msgid "Camera device unknown"
#~ msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÏÐÏÚÎÁÎÏ"

8
main.c
View File

@@ -61,11 +61,13 @@ void signals(int signo){
if(!GP->client){ if(!GP->client){
DBG("Cancel capturing and close all"); DBG("Cancel capturing and close all");
stop_server(); stop_server();
}else exit(signo); }else{
#ifdef IMAGEVIEW #ifdef IMAGEVIEW
DBG("KILL GL"); DBG("KILL GL");
closeGL(); closeGL();
#endif #endif
exit(signo);
}
//DBG("exit(%d)", signo); //DBG("exit(%d)", signo);
//exit(signo); //exit(signo);
} }
@@ -156,7 +158,9 @@ int main(int argc, char **argv){
} }
#endif #endif
if(camerainit) ccds(); if(camerainit) ccds();
signals(0); closewheel();
focclose();
return 0;
} }
LOGMSG("Started"); LOGMSG("Started");
#ifndef EBUG #ifndef EBUG

View File

@@ -165,33 +165,12 @@ static void fixima(){
size_t len = camera->array.h * camera->array.w * 2; size_t len = camera->array.h * camera->array.w * 2;
ima = cc_getshm(GP->shmkey, len); ima = cc_getshm(GP->shmkey, len);
if(!ima) ERR(_("Can't allocate memory for image")); if(!ima) ERR(_("Can't allocate memory for image"));
ima->datasize = ima->bytelen; if(!image_init_camdata(ima)){
WARNX(_("Can't init camera data"));
LOGWARN("Can't init camera data");
}
// init shared semaphore // init shared semaphore
cc_init_sem(TRUE); cc_init_sem(TRUE);
if(camera->getModelName){
if(camera->getModelName(ima->model, MODELNM_SZ-1)) ima->model[MODELNM_SZ-1] = 0;
else ima->model[0] = 0;
}
ima->pixel_x = camera->pixX;
ima->pixel_y = camera->pixY;
// fill constant parameters
if(wheel){
int i;
if(wheel->getModelName){
if(wheel->getModelName(ima->wmodel, MODELNM_SZ-1)) ima->wmodel[MODELNM_SZ-1] = 0;
else ima->wmodel[0] = 0;
}
if(wheel->getMaxPos && wheel->getMaxPos(&i)) ima->wheelmax = i;
else ima->wheelmax = 0;
}
if(focuser){
if(focuser->getModelName){
if(focuser->getModelName(ima->fmodel, MODELNM_SZ-1)) ima->fmodel[MODELNM_SZ-1] = 0;
else ima->fmodel[0] = 0;
}
if(!focuser->getMinPos || !focuser->getMinPos(&ima->focmin)) ima->focmin = NAN;
if(!focuser->getMaxPos || !focuser->getMaxPos(&ima->focmax)) ima->focmax = NAN;
}
} }
TIMESTAMP("Lock SHM image"); TIMESTAMP("Lock SHM image");
cc_lock_shm(TRUE); cc_lock_shm(TRUE);
@@ -279,7 +258,7 @@ static inline void cameracapturestate(){ // capturing - wait for exposition ends
return; return;
} }
fill_image_fields(ima); fill_image_fields(ima);
//fillFITSheader(ima); LOGDBG("Captured new image %zdx%zd pix", ima->w, ima->h);
++ima->imnumber; // increment counter ++ima->imnumber; // increment counter
cc_unlock_shm(); cc_unlock_shm();
LOGDBG("cameracapturestate(): SHM UNlocked"); LOGDBG("cameracapturestate(): SHM UNlocked");
@@ -378,7 +357,9 @@ static int camdevini(int n){
if(GP->vbin < 1) GP->vbin = 1; if(GP->vbin < 1) GP->vbin = 1;
fixima(); fixima();
if(!camera->setbin || !camera->setbin(GP->hbin, GP->vbin)) WARNX(_("Can't set binning %dx%d"), GP->hbin, GP->vbin); if(!camera->setbin || !camera->setbin(GP->hbin, GP->vbin)) WARNX(_("Can't set binning %dx%d"), GP->hbin, GP->vbin);
if(!camera->setgeometry || !camera->setgeometry(&curformat)) WARNX(_("Can't set given geometry")); if(!camera->setgeometry || !camera->setgeometry(&curformat)){
WARNX(_("Can't set given geometry"));
}else curformat = camera->geometry;
return TRUE; return TRUE;
} }
@@ -616,7 +597,7 @@ static cc_hresult formathandler(int fd, const char *key, const char *val){
fmt.w -= fmt.xoff; fmt.h -= fmt.yoff; fmt.w -= fmt.xoff; fmt.h -= fmt.yoff;
int r = camera->setgeometry(&fmt); int r = camera->setgeometry(&fmt);
if(!r) return CC_RESULT_FAIL; if(!r) return CC_RESULT_FAIL;
curformat = fmt; curformat = camera->geometry;
DBG("curformat: w=%d, h=%d", curformat.w, curformat.h); DBG("curformat: w=%d, h=%d", curformat.w, curformat.h);
//fixima(); //fixima();
} }
@@ -1069,7 +1050,7 @@ static void *sendimage(void *C){
close(client); close(client);
return NULL; return NULL;
} }
LOGDBG("sendimage(): SHM locked"); LOGDBG("sendimage(): SHM locked; new image size: %dx%d", ima->w, ima->h);
cc_IMG *locimage = cc_newimage(ima->bitpix, ima->w, ima->h); cc_IMG *locimage = cc_newimage(ima->bitpix, ima->w, ima->h);
if(!locimage || !cc_copyimage(locimage, ima, FALSE)){ if(!locimage || !cc_copyimage(locimage, ima, FALSE)){
cc_unlock_shm(); cc_unlock_shm();
@@ -1079,12 +1060,20 @@ static void *sendimage(void *C){
} }
cc_unlock_shm(); cc_unlock_shm();
LOGDBG("sendimage(): SHM UNlocked"); LOGDBG("sendimage(): SHM UNlocked");
int sent_ok = TRUE;
do{ do{
// send image body // send image body
if(!cc_senddata(client, locimage, sizeof(cc_IMG))) break; if(!cc_senddata(client, locimage, sizeof(cc_IMG))){ sent_ok = FALSE; break; }
// send image itself (client can close socket if don't need image data) // send image itself (client can close socket if don't need image data)
if(!cc_senddata(client, locimage->data, locimage->bytelen)) break; if(!cc_senddata(client, locimage->data, locimage->bytelen)){ sent_ok = FALSE; break; }
}while(0); }while(0);
if(!sent_ok){
DBG("Some error occured during data transmission");
close(client);
cc_freeimage(&locimage);
return NULL;
}
DBG("OK, wait until client receives data");
shutdown(client, SHUT_WR); // tell client we are closing socket shutdown(client, SHUT_WR); // tell client we are closing socket
recv(client, locimage->data, locimage->bytelen, MSG_NOSIGNAL); // block until client close his side recv(client, locimage->data, locimage->bytelen, MSG_NOSIGNAL); // block until client close his side
cc_freeimage(&locimage); cc_freeimage(&locimage);