mirror of
https://github.com/eddyem/CCD_Capture.git
synced 2026-08-12 09:49:25 +03:00
some more fixes (but still got problems)
This commit is contained in:
@@ -287,8 +287,16 @@ static int camcapt(cc_IMG *ima){
|
||||
ima->bitpix = bitpix;
|
||||
ima->w = camera.geometry.w;
|
||||
ima->h = camera.geometry.h;
|
||||
ima->bytelen = ima->w*ima->h*cc_getNbytes(ima);
|
||||
bzero(ima->data, ima->h*ima->w*cc_getNbytes(ima));
|
||||
size_t nbytes = 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(bitpix == 16) gen16(ima);
|
||||
else gen8(ima);
|
||||
@@ -368,7 +376,9 @@ static int camsetgeom(cc_frameformat *f){
|
||||
if(!f) 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->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;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
74
ccdcapture.c
74
ccdcapture.c
@@ -29,12 +29,6 @@
|
||||
#include <unistd.h>
|
||||
#include <usefull_macros.h>
|
||||
|
||||
#include "client.h"
|
||||
#include "cmdlnopts.h"
|
||||
#ifdef IMAGEVIEW
|
||||
#include "imageview.h"
|
||||
#endif
|
||||
#include "server.h"
|
||||
#include "socket.h"
|
||||
|
||||
#ifdef EBUG
|
||||
@@ -415,6 +409,7 @@ cc_IMG *cc_getshm(key_t key, size_t imsize){
|
||||
bzero(ptr, sizeof(cc_IMG));
|
||||
ptr->data = (void*)((uint8_t*)ptr + sizeof(cc_IMG));
|
||||
ptr->MAGICK = CC_SHM_MAGIC;
|
||||
ptr->datasize = imsize;
|
||||
return ptr;
|
||||
}
|
||||
|
||||
@@ -840,44 +835,6 @@ int cc_kwfromfile(fitsfile *fp, char *filename){
|
||||
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){
|
||||
size_t l = 0;
|
||||
switch(t){
|
||||
@@ -1065,7 +1022,7 @@ void cc_freeimage(cc_IMG **i){
|
||||
*/
|
||||
int cc_copyimage(cc_IMG *dest, cc_IMG *src, int isshm){
|
||||
FNAME();
|
||||
if(!src || !dest || !src->data) return FALSE;
|
||||
if(!src || !dest || !src->data || src == dest) return FALSE;
|
||||
if(src->MAGICK != CC_SHM_MAGIC){
|
||||
WARNX(_("Wrong image: bad magick (0x%X instead of 0x%X)"), src->MAGICK, CC_SHM_MAGIC);
|
||||
return FALSE;
|
||||
@@ -1075,6 +1032,8 @@ int cc_copyimage(cc_IMG *dest, cc_IMG *src, int isshm){
|
||||
return FALSE;
|
||||
}
|
||||
DBG("Lock");
|
||||
if(isshm) cc_lock_shm(FALSE);
|
||||
else pthread_mutex_lock(&src->mutex);
|
||||
pthread_mutex_lock(&dest->mutex);
|
||||
dest->MAGICK = CC_SHM_MAGIC;
|
||||
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");
|
||||
WARN("realloc()");
|
||||
pthread_mutex_unlock(&dest->mutex);
|
||||
if(isshm) cc_unlock_shm();
|
||||
else pthread_mutex_unlock(&src->mutex);
|
||||
return FALSE;
|
||||
}
|
||||
dest->data = nxt;
|
||||
@@ -1092,30 +1053,13 @@ int cc_copyimage(cc_IMG *dest, cc_IMG *src, int isshm){
|
||||
DBG("Success");
|
||||
}
|
||||
DBG("Copy %zd bytes of fields", offsetof(cc_IMG, end_of_copyable_data) - offsetof(cc_IMG, start_of_copyable_data));
|
||||
#if 0
|
||||
#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
|
||||
size_t oldsz = dest->datasize;
|
||||
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);
|
||||
memcpy(tagaddr, srcaddr,
|
||||
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);
|
||||
dest->datasize = oldsz;
|
||||
void *srcdata = src->data;
|
||||
if(isshm){
|
||||
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);
|
||||
DBG("All OK");
|
||||
pthread_mutex_unlock(&dest->mutex);
|
||||
if(isshm) cc_unlock_shm();
|
||||
else pthread_mutex_unlock(&src->mutex);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
10
ccdcapture.h
10
ccdcapture.h
@@ -293,16 +293,6 @@ typedef enum{
|
||||
#define CC_CMD_FASTSPD "fastspeed"
|
||||
#define CC_CMD_DARK "dark"
|
||||
#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
|
||||
#define CC_CMD_FOCLIST "foclist"
|
||||
|
||||
247
ccdfunc.c
247
ccdfunc.c
@@ -18,7 +18,6 @@
|
||||
|
||||
#include <fitsio.h>
|
||||
#include <math.h>
|
||||
#include <signal.h> // pthread_kill
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
@@ -31,7 +30,6 @@
|
||||
#ifdef IMAGEVIEW
|
||||
#include "imageview.h"
|
||||
#endif
|
||||
#include "omp.h"
|
||||
|
||||
cc_Camera *camera = NULL;
|
||||
cc_Focuser *focuser = NULL;
|
||||
@@ -76,126 +74,6 @@ static int check_filenameprefix(char *buff, int buflen){
|
||||
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
|
||||
// if outp != NULL, put into it strdup() of last file name
|
||||
// return FALSE if failed
|
||||
@@ -296,13 +174,13 @@ int saveFITS(cc_IMG *img, char **outp){
|
||||
FORMSTR("IMAGETYP", bufc, "Image type");
|
||||
// geometry
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
FORMINT("X0", img->geometry.xoff, "Subframe left 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
|
||||
int s = 0;
|
||||
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);
|
||||
WRITEKEY(fp, TDOUBLE, "UNIXTIME", &dsavetime, "File creation time (UNIX)");
|
||||
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");
|
||||
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);
|
||||
|
||||
cloerr:
|
||||
TRYFITS(fits_close_file, fp);
|
||||
pthread_mutex_unlock(&img->mutex);
|
||||
@@ -522,7 +396,7 @@ void focusers(){
|
||||
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];
|
||||
if(focuser->getModelName(buf, BUFSIZ)){
|
||||
verbose(VERBOSE_SECONDARY, "Focuser model: %s", buf);
|
||||
@@ -538,11 +412,11 @@ void focusers(){
|
||||
DBG("FOCMINPOS=%g, FOCMAXPOS=%g", focminpos, focmaxpos);
|
||||
if(!focuser->getPos(&curpos)){
|
||||
WARNX(_("Can't get current focuser position"));
|
||||
goto retn;
|
||||
return;
|
||||
}
|
||||
verbose(VERBOSE_PRIMARY, "FOCPOS=%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.;
|
||||
if(!isnan(GP->gotopos)){ // set absolute position
|
||||
tagpos = GP->gotopos;
|
||||
@@ -552,15 +426,13 @@ void focusers(){
|
||||
DBG("tagpos: %g", tagpos);
|
||||
if(tagpos < focminpos || tagpos > focmaxpos){
|
||||
WARNX(_("Can't set position %g: out of limits [%g, %g]"), tagpos, focminpos, focmaxpos);
|
||||
goto retn;
|
||||
return;
|
||||
}
|
||||
if(tagpos - focminpos < __FLT_EPSILON__){
|
||||
if(!focuser->home(GP->async)) WARNX(_("Can't home focuser"));
|
||||
}else{
|
||||
if(!focuser->setAbsPos(GP->async, tagpos)) WARNX(_("Can't set position %g"), tagpos);
|
||||
}
|
||||
retn:
|
||||
focclose();
|
||||
}
|
||||
|
||||
cc_Wheel *startWheel(){
|
||||
@@ -628,7 +500,10 @@ void wheels(){
|
||||
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];
|
||||
if(wheel->getModelName(buf, BUFSIZ)){
|
||||
verbose(VERBOSE_SECONDARY, _("Wheel model: %s"), buf);
|
||||
@@ -643,22 +518,14 @@ void wheels(){
|
||||
}else WARNX(_("Can't get current wheel position"));
|
||||
verbose(VERBOSE_PRIMARY, "WHEELMAXPOS=%d", wmaxpos);
|
||||
pos = GP->setwheel;
|
||||
if(pos == -1) goto retn; // no wheel commands
|
||||
if(pos == -1) return; // no wheel commands
|
||||
if(pos < 0 || pos > wmaxpos){
|
||||
WARNX(_("Wheel position should be from 0 to %d"), wmaxpos);
|
||||
goto retn;
|
||||
return;
|
||||
}
|
||||
if(!wheel->setPos(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(){
|
||||
cc_capture_status cs;
|
||||
@@ -772,15 +639,15 @@ int prepare_ccds(){
|
||||
verbose(VERBOSE_SECONDARY, _("Pixel size: %g x %g"), camera->pixX, camera->pixY);
|
||||
x0 = camera->array.xoff;
|
||||
y0 = camera->array.yoff;
|
||||
x1 = camera->array.xoff + camera->array.w;
|
||||
y1 = camera->array.yoff + camera->array.h;
|
||||
x1 = camera->array.xoff + camera->array.w - 1;
|
||||
y1 = camera->array.yoff + camera->array.h - 1;
|
||||
snprintf(buf, BUFSIZ, "(%d, %d)(%d, %d)", x0, y0, x1, y1);
|
||||
verbose(VERBOSE_SECONDARY, _("Full array: %s"), buf);
|
||||
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);
|
||||
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);
|
||||
cc_frameformat 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);
|
||||
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;
|
||||
if(GP->Y0 < 0) GP->Y0 = y0;
|
||||
if(GP->Y0 < y0) GP->Y0 = y0;
|
||||
else if(GP->Y0 > y1-1) GP->Y0 = y1-1;
|
||||
if(GP->X1 < GP->X0+1 || GP->X1 > x1) GP->X1 = x1;
|
||||
if(GP->Y1 < GP->Y0+1 || GP->Y1 > y1) GP->Y1 = y1;
|
||||
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))
|
||||
ERRX(_("Can't set given geometry"));
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* @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){
|
||||
if(!ima) return;
|
||||
ima->gotstat = 0; // fresh image without statistics - recalculate when save
|
||||
@@ -939,11 +842,14 @@ void ccds(){
|
||||
cc_frameformat fmt = camera->geometry;
|
||||
int raw_width = fmt.w / GP->hbin, raw_height = fmt.h / GP->vbin;
|
||||
DBG("w=%d, h=%d", raw_width, raw_height);
|
||||
// allocate maximum available memory - for 16bit image
|
||||
uint16_t *img = MALLOC(uint16_t, raw_width * raw_height);
|
||||
DBG("\n\nAllocated image 2x%dx%d=%d", raw_width, raw_height, 2 * raw_width * raw_height);
|
||||
cc_IMG ima = {.data = img, .w = raw_width, .h = raw_height};
|
||||
if(!camera->getbitpix || !camera->getbitpix(&ima.bitpix)) ima.bitpix = 16;
|
||||
uint8_t bitpix = 16;
|
||||
if(camera->getbitpix) camera->getbitpix(&bitpix);
|
||||
cc_IMG *image = cc_newimage(bitpix, raw_width, raw_height);
|
||||
if(!image) ERRX(_("Can't allocate image memory"));
|
||||
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;
|
||||
for(int j = 0; j < GP->nframes; ++j){
|
||||
TIMEINIT();
|
||||
@@ -962,17 +868,16 @@ void ccds(){
|
||||
verbose(VERBOSE_SECONDARY, _("Read grabbed image"));
|
||||
TIMESTAMP("Read grabbed");
|
||||
if(!camera->capture) ERRX(_("Camera plugin have no function `capture`"));
|
||||
if(!camera->capture(&ima)){
|
||||
if(!camera->capture(image)){
|
||||
WARNX(_("Can't grab image"));
|
||||
break;
|
||||
}
|
||||
ima.timestamp = sl_dtime();
|
||||
++ima.imnumber;
|
||||
ima.gotstat = 0;
|
||||
fill_image_fields(image);
|
||||
++image->imnumber;
|
||||
TIMESTAMP("Calc stat");
|
||||
calculate_stat(&ima);
|
||||
calculate_stat(image);
|
||||
TIMESTAMP("Save fits");
|
||||
saveFITS(&ima, NULL);
|
||||
saveFITS(image, NULL);
|
||||
TIMESTAMP("Ready");
|
||||
if(GP->pause_len && j != (GP->nframes - 1)){
|
||||
double delta, time1 = sl_dtime() + GP->pause_len;
|
||||
@@ -988,7 +893,7 @@ void ccds(){
|
||||
}
|
||||
}
|
||||
DBG("FREE img");
|
||||
FREE(img);
|
||||
cc_freeimage(&image);
|
||||
closecam();
|
||||
}
|
||||
|
||||
@@ -1049,8 +954,6 @@ static void *grabnext(void *arg){
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief ccdcaptured - get new image data for viewer
|
||||
* @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");
|
||||
if(grabthread){
|
||||
exitgrab = TRUE;
|
||||
//pthread_cancel(grabthread); // this kills some cameras
|
||||
//pthread_timedjoin_np
|
||||
pthread_join(grabthread, NULL);
|
||||
grabthread = 0;
|
||||
}
|
||||
DBG("OK");
|
||||
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
|
||||
TIMESTAMP("Start new grab");
|
||||
@@ -1084,8 +983,6 @@ int ccdcaptured(cc_IMG *imgptr){
|
||||
}
|
||||
}else{ // grab in process
|
||||
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;
|
||||
TIMESTAMP("Got exp #%zd", lastgrabno);
|
||||
framerate();
|
||||
|
||||
@@ -26,10 +26,13 @@ extern cc_Wheel *wheel;
|
||||
void calculate_stat(cc_IMG *image);
|
||||
size_t fillFITSheader(cc_IMG *img);
|
||||
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 wheels();
|
||||
int prepare_ccds();
|
||||
void fill_image_fields(cc_IMG *ima);
|
||||
void ccds();
|
||||
void camstop();
|
||||
|
||||
|
||||
38
client.c
38
client.c
@@ -263,17 +263,6 @@ static void send_headers(int sock){
|
||||
if(GP->dark) SENDMSGW(CC_CMD_DARK, "=1");
|
||||
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;
|
||||
double t0 = sl_dtime();
|
||||
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);
|
||||
if(rd <= 0){
|
||||
if(errno == EAGAIN || errno == EWOULDBLOCK) continue;
|
||||
WARNX(_("Server disconnected"));
|
||||
signals(1);
|
||||
DBG("readNbytes() got %zd; errno=%d", rd, errno);
|
||||
if(rd == 0) return FALSE; // connection closed
|
||||
if(rd < 0){
|
||||
if(errno == EAGAIN) continue;
|
||||
ERR(_("Server disconnected"));
|
||||
}
|
||||
got += rd; need -= rd;
|
||||
t0 = sl_dtime();
|
||||
@@ -369,14 +360,15 @@ static int getsocksizes(int *imsock){
|
||||
}
|
||||
if(ima.MAGICK != CC_SHM_MAGIC || ima.bytelen < 1) return FALSE;
|
||||
// now copy fields
|
||||
#define COPY(field) locima->field = ima.field;
|
||||
COPY(timestamp);
|
||||
COPY(bitpix);
|
||||
COPY(w);
|
||||
COPY(h);
|
||||
COPY(bytelen);
|
||||
COPY(imnumber);
|
||||
#undef COPY
|
||||
size_t oldsz = locima->datasize;
|
||||
DBG("Copy %zd bytes of fields", offsetof(cc_IMG, end_of_copyable_data) - offsetof(cc_IMG, start_of_copyable_data));
|
||||
uint8_t *tagaddr = (uint8_t*)locima + offsetof(cc_IMG, start_of_copyable_data);
|
||||
uint8_t *srcaddr = (uint8_t*)&ima + offsetof(cc_IMG, start_of_copyable_data);
|
||||
memcpy(tagaddr, srcaddr,
|
||||
offsetof(cc_IMG, end_of_copyable_data) - offsetof(cc_IMG, start_of_copyable_data));
|
||||
locima->datasize = oldsz; // restore size
|
||||
DBG("image number: %zd, timestamp: %.3f; w/h: %d/%d",
|
||||
locima->imnumber, locima->timestamp, locima->w, locima->h);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@@ -611,6 +611,7 @@ static void mkcuts(cc_IMG *img){
|
||||
static void change_displayed_image(cc_IMG *img){
|
||||
if(!win || !img) return;
|
||||
static size_t lastN = 0;
|
||||
pthread_mutex_lock(&img->mutex);
|
||||
ssize_t delta = img->imnumber - lastN;
|
||||
TIMESTAMP("Got image #%zd", img->imnumber);
|
||||
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()");
|
||||
LOGERR("Realloc() error");
|
||||
win->image->rawdata = raw;
|
||||
pthread_mutex_unlock(&img->mutex);
|
||||
return;
|
||||
}
|
||||
win->image->h = h; win->image->w = w;
|
||||
@@ -635,6 +637,7 @@ static void change_displayed_image(cc_IMG *img){
|
||||
WARN("realloc()");
|
||||
LOGERR("Realloc() error");
|
||||
win->rawdata = raw;
|
||||
pthread_mutex_unlock(&img->mutex);
|
||||
return;
|
||||
}
|
||||
DBG("win->image changed");
|
||||
@@ -687,6 +690,7 @@ static void change_displayed_image(cc_IMG *img){
|
||||
DBG("Unlock");
|
||||
win->image->changed = 1;
|
||||
pthread_mutex_unlock(&win->mutex);
|
||||
pthread_mutex_unlock(&img->mutex);
|
||||
}
|
||||
|
||||
void closeGL(){ // killed by external signal or ctrl+c
|
||||
|
||||
Binary file not shown.
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -28,46 +28,46 @@ msgstr ""
|
||||
msgid "Get signal %d - exit"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:91
|
||||
#: main.c:93
|
||||
msgid "Can't use outfile name and prefix together"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:94 ccdfunc.c:222
|
||||
#: main.c:96 ccdfunc.c:100
|
||||
#, c-format
|
||||
msgid "File %s exists!"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:97
|
||||
#: main.c:99
|
||||
#, c-format
|
||||
msgid "Can't set answer timeout to %g"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:101
|
||||
#: main.c:103
|
||||
msgid ""
|
||||
"Options `port` and `path` can't be used together! Point `port` for TCP "
|
||||
"socket or `path` for UNIX."
|
||||
msgstr ""
|
||||
|
||||
#: main.c:106
|
||||
#: main.c:108
|
||||
#, c-format
|
||||
msgid "Wrong port value: %d"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:119
|
||||
#: main.c:121
|
||||
#, c-format
|
||||
msgid "Set image port to %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:122
|
||||
#: main.c:124
|
||||
msgid "Can't be client and standalone in same time!"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:127
|
||||
#: main.c:129
|
||||
#, c-format
|
||||
msgid "Log file %s @ level %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:129
|
||||
#: main.c:131
|
||||
msgid "Can't create log file"
|
||||
msgstr ""
|
||||
|
||||
@@ -331,422 +331,430 @@ msgstr ""
|
||||
msgid "%d unused parameters:\n"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:211
|
||||
#: ccdfunc.c:89
|
||||
msgid "Image not saved: neither filename nor filename prefix pointed"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:230
|
||||
#: ccdfunc.c:108
|
||||
#, c-format
|
||||
msgid "Can't save file with prefix %s"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:347
|
||||
#: ccdfunc.c:225
|
||||
#, c-format
|
||||
msgid "Added 0 FITS records from %s"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:348
|
||||
#: ccdfunc.c:226
|
||||
#, c-format
|
||||
msgid "Added %d FITS records from %s"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:386
|
||||
#: ccdfunc.c:260
|
||||
#, c-format
|
||||
msgid "File saved as '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:395
|
||||
#: ccdfunc.c:269
|
||||
#, c-format
|
||||
msgid "Error saving file %s"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:450
|
||||
#: ccdfunc.c:324
|
||||
#, c-format
|
||||
msgid "Image stat:\n"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:459
|
||||
#: ccdfunc.c:333
|
||||
msgid "Focuser device not pointed"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:466
|
||||
#: ccdfunc.c:340
|
||||
msgid "No focusers found"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:484
|
||||
#: ccdfunc.c:358
|
||||
#, c-format
|
||||
msgid "Found %d focusers, you point number %d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:489
|
||||
#: ccdfunc.c:363
|
||||
msgid "Can't set active focuser number"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:496
|
||||
#: ccdfunc.c:370
|
||||
msgid "Can't get focuser limit positions"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:522
|
||||
#: ccdfunc.c:396
|
||||
#, c-format
|
||||
msgid "Found focuser #%d: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:540
|
||||
#: ccdfunc.c:414
|
||||
msgid "Can't get current focuser position"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:554
|
||||
#: ccdfunc.c:428
|
||||
#, c-format
|
||||
msgid "Can't set position %g: out of limits [%g, %g]"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:558
|
||||
#: ccdfunc.c:432
|
||||
msgid "Can't home focuser"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:560
|
||||
#: ccdfunc.c:434
|
||||
#, c-format
|
||||
msgid "Can't set position %g"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:568
|
||||
#: ccdfunc.c:440
|
||||
msgid "Wheel device not pointed"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:575
|
||||
#: ccdfunc.c:447
|
||||
msgid "No wheels found"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:592
|
||||
#: ccdfunc.c:464
|
||||
#, c-format
|
||||
msgid "Found %d wheels, you point number %d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:597
|
||||
#: ccdfunc.c:469
|
||||
msgid "Can't set active wheel number"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:603
|
||||
#: ccdfunc.c:475
|
||||
msgid "Can't get max wheel position"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:628
|
||||
#: ccdfunc.c:500
|
||||
#, c-format
|
||||
msgid "Found wheel #%d: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:634
|
||||
#: ccdfunc.c:509
|
||||
#, c-format
|
||||
msgid "Wheel model: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:643
|
||||
#: ccdfunc.c:518
|
||||
msgid "Can't get current wheel position"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:648
|
||||
#: ccdfunc.c:523
|
||||
#, c-format
|
||||
msgid "Wheel position should be from 0 to %d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:652
|
||||
#: ccdfunc.c:527
|
||||
#, c-format
|
||||
msgid "Can't set wheel position %d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:667
|
||||
#: ccdfunc.c:534
|
||||
msgid "Camera plugin have no capture polling funtion."
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:673
|
||||
#: ccdfunc.c:540
|
||||
#, c-format
|
||||
msgid "%.1f seconds till exposition ends"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:688
|
||||
#: ccdfunc.c:555
|
||||
msgid "Camera device not pointed"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:695 ccdfunc.c:696
|
||||
#: ccdfunc.c:562 ccdfunc.c:563
|
||||
msgid "No cameras found"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:716
|
||||
#: ccdfunc.c:583
|
||||
msgid "Camera plugin have no model name getter"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:721
|
||||
#: ccdfunc.c:588
|
||||
#, c-format
|
||||
msgid "Found camera #%d: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:727
|
||||
#: ccdfunc.c:594
|
||||
#, c-format
|
||||
msgid "Found %d cameras, you point number %d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:731
|
||||
#: ccdfunc.c:598
|
||||
msgid "Can't set active camera number"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:737
|
||||
#: ccdfunc.c:604
|
||||
msgid "Camera plugin have no custom commands"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:746 ccdfunc.c:749
|
||||
#: ccdfunc.c:613 ccdfunc.c:616
|
||||
#, c-format
|
||||
msgid "Command '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:751
|
||||
#: ccdfunc.c:618
|
||||
#, c-format
|
||||
msgid " returns \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:762
|
||||
#: ccdfunc.c:629
|
||||
msgid "Camera plugin have no fun speed setter"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:765
|
||||
#: ccdfunc.c:632
|
||||
msgid "Can't set fan speed"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:766
|
||||
#: ccdfunc.c:633
|
||||
#, c-format
|
||||
msgid "Set fan speed to %d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:771
|
||||
#: ccdfunc.c:638
|
||||
#, c-format
|
||||
msgid "Camera model: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:772
|
||||
#: ccdfunc.c:639
|
||||
#, c-format
|
||||
msgid "Pixel size: %g x %g"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:778
|
||||
#: ccdfunc.c:645
|
||||
#, c-format
|
||||
msgid "Full array: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:781
|
||||
#: ccdfunc.c:648
|
||||
#, c-format
|
||||
msgid "Field of view: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:784
|
||||
#: ccdfunc.c:651
|
||||
#, c-format
|
||||
msgid "Current format: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:787
|
||||
#: ccdfunc.c:654
|
||||
#, c-format
|
||||
msgid "Maximal geometry (WxH): %dx%d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:788
|
||||
#: ccdfunc.c:655
|
||||
#, c-format
|
||||
msgid "Minimal offset: %dx%d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:789
|
||||
#: ccdfunc.c:656
|
||||
#, c-format
|
||||
msgid "Geometry steps: offset - %dx%d, size - %dx%d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:793
|
||||
#: ccdfunc.c:660
|
||||
#, c-format
|
||||
msgid "Current binning: %d x %d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:796
|
||||
#: ccdfunc.c:663
|
||||
#, c-format
|
||||
msgid "Current settings: %d bits per pixel"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:799
|
||||
#: ccdfunc.c:666
|
||||
#, c-format
|
||||
msgid "Current brightness: %g"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:801
|
||||
#: ccdfunc.c:668
|
||||
#, c-format
|
||||
msgid "Current gain: %g"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:803
|
||||
#: ccdfunc.c:670
|
||||
#, c-format
|
||||
msgid "Maximal gain: %g"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:805
|
||||
#: ccdfunc.c:672
|
||||
msgid "Camera plugin have no temperature setter"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:806
|
||||
#: ccdfunc.c:673
|
||||
#, c-format
|
||||
msgid "Can't set T to %g degC"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:814
|
||||
#: ccdfunc.c:681
|
||||
#, c-format
|
||||
msgid "Shutter command: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:816
|
||||
#: ccdfunc.c:683
|
||||
#, c-format
|
||||
msgid "Can't run shutter command %s (unsupported?)"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:819
|
||||
#: ccdfunc.c:686
|
||||
#, c-format
|
||||
msgid "Try to configure I/O port as %d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:821
|
||||
#: ccdfunc.c:688
|
||||
msgid "Can't configure (unsupported?)"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:827
|
||||
#: ccdfunc.c:694
|
||||
msgid "Can't get IOport state (unsupported?)"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:830
|
||||
#: ccdfunc.c:697
|
||||
#, c-format
|
||||
msgid "Try to write %d to I/O port"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:832
|
||||
#: ccdfunc.c:699
|
||||
msgid "Can't set IOport"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:839
|
||||
#: ccdfunc.c:706
|
||||
#, c-format
|
||||
msgid "Set gain to %g"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:840
|
||||
#: ccdfunc.c:707
|
||||
#, c-format
|
||||
msgid "Can't set gain to %g"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:845
|
||||
#: ccdfunc.c:712
|
||||
#, c-format
|
||||
msgid "Set brightness to %g"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:846
|
||||
#: ccdfunc.c:713
|
||||
#, c-format
|
||||
msgid "Can't set brightness to %g"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:852 server.c:380
|
||||
#: ccdfunc.c:719 server.c:359
|
||||
#, c-format
|
||||
msgid "Can't set binning %dx%d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:864 server.c:381
|
||||
#: ccdfunc.c:731 server.c:361
|
||||
msgid "Can't set given geometry"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:868
|
||||
#: ccdfunc.c:735
|
||||
#, c-format
|
||||
msgid "Can't set %d flushes"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:871
|
||||
#: ccdfunc.c:738
|
||||
msgid "Camera plugin have no exposition setter"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:873
|
||||
#: ccdfunc.c:740
|
||||
#, c-format
|
||||
msgid "Can't set exposure time to %f seconds"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:876
|
||||
#: ccdfunc.c:743
|
||||
msgid "Can't change frame type"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:879
|
||||
#: ccdfunc.c:746
|
||||
msgid "Can't set bit depth"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:881
|
||||
#: ccdfunc.c:748
|
||||
msgid "Can't set readout speed"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:882
|
||||
#: ccdfunc.c:749
|
||||
#, c-format
|
||||
msgid "Readout mode: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:883
|
||||
#: ccdfunc.c:750
|
||||
msgid "Only show statistics"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:886
|
||||
#: ccdfunc.c:753
|
||||
msgid "Can't get current binning"
|
||||
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
|
||||
msgid "Capture frame %d"
|
||||
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`"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:954 ccdfunc.c:1032 server.c:235
|
||||
#: ccdfunc.c:860 ccdfunc.c:937 server.c:214
|
||||
msgid "Can't start exposition"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:959
|
||||
#: ccdfunc.c:865
|
||||
msgid "Can't capture image"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:962
|
||||
#: ccdfunc.c:868
|
||||
msgid "Read grabbed image"
|
||||
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`"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:966 ccdfunc.c:1044
|
||||
#: ccdfunc.c:872 ccdfunc.c:949
|
||||
msgid "Can't grab image"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:980 client.c:577
|
||||
#: ccdfunc.c:885 client.c:569
|
||||
#, c-format
|
||||
msgid "%d seconds till pause ends\n"
|
||||
msgstr ""
|
||||
|
||||
#. for(int i = 0; i < NFRM; ++i) printf("last[%d]=%g\n", i, lastn[i]);
|
||||
#: ccdfunc.c:1015
|
||||
#: ccdfunc.c:920
|
||||
#, c-format
|
||||
msgid "Framerate=%.2f (%g seconds for exp); mean framerate=%.2f"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:1041
|
||||
#: ccdfunc.c:946
|
||||
msgid "Some error when capture"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:1082
|
||||
#: ccdfunc.c:981
|
||||
msgid "Can't create grabbing thread"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:1113
|
||||
#: ccdfunc.c:1010
|
||||
msgid "Point network port or UNIX-socket path"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:1117
|
||||
#: ccdfunc.c:1014
|
||||
msgid "start_socket(): can't open socket"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:1126
|
||||
#: ccdfunc.c:1023
|
||||
msgid "Need exposition time!"
|
||||
msgstr ""
|
||||
|
||||
@@ -758,51 +766,55 @@ msgstr ""
|
||||
msgid "Can't allocate memory for image"
|
||||
msgstr ""
|
||||
|
||||
#: server.c:243
|
||||
#: server.c:169
|
||||
msgid "Can't init camera data"
|
||||
msgstr ""
|
||||
|
||||
#: server.c:222
|
||||
msgid "Camera disconnected"
|
||||
msgstr ""
|
||||
|
||||
#: server.c:249
|
||||
#: server.c:228
|
||||
msgid "Something's wrong with camera"
|
||||
msgstr ""
|
||||
|
||||
#: server.c:297
|
||||
#: server.c:276
|
||||
msgid "No camera device"
|
||||
msgstr ""
|
||||
|
||||
#: server.c:1099
|
||||
#: server.c:1088
|
||||
msgid "server(): need at least command socket fd"
|
||||
msgstr ""
|
||||
|
||||
#: server.c:1100
|
||||
#: server.c:1089
|
||||
msgid "Server run without image transport socket"
|
||||
msgstr ""
|
||||
|
||||
#: server.c:1131
|
||||
#: server.c:1120
|
||||
msgid "No devices found"
|
||||
msgstr ""
|
||||
|
||||
#: server.c:1176
|
||||
#: server.c:1165
|
||||
msgid "Client wants an image, but there's no data"
|
||||
msgstr ""
|
||||
|
||||
#: server.c:1205
|
||||
#: server.c:1194
|
||||
msgid "Limit of connections reached"
|
||||
msgstr ""
|
||||
|
||||
#: server.c:1274
|
||||
#: server.c:1263
|
||||
#, c-format
|
||||
msgid "Can't create %s"
|
||||
msgstr ""
|
||||
|
||||
#: server.c:1310
|
||||
#: server.c:1299
|
||||
msgid "Can't lock mutex"
|
||||
msgstr ""
|
||||
|
||||
#. send message and wait any answer
|
||||
#. send message and wait answer starting with 'cmd'
|
||||
#. 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -822,87 +834,87 @@ msgstr ""
|
||||
msgid "Send custom plugin commands\n"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:342
|
||||
#: client.c:333
|
||||
msgid "Can't lock shared memory"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:361
|
||||
#: client.c:352
|
||||
msgid "Can't open image transport socket"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:367
|
||||
#: client.c:358
|
||||
msgid "Can't read image header over socket"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:400 client.c:430
|
||||
#: client.c:392 client.c:422
|
||||
msgid "Can't read image data"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:443
|
||||
#: client.c:435
|
||||
msgid "Too many FITS headers, truncating"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:454
|
||||
#: client.c:446
|
||||
#, c-format
|
||||
msgid "Can't read full header, got %zd records from %zd"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:470
|
||||
#: client.c:462
|
||||
msgid "Still got old image"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:495 client.c:595
|
||||
#: client.c:487 client.c:587
|
||||
msgid "Can't run without command socket"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:514
|
||||
#: client.c:506
|
||||
msgid "Exposing frame 1..."
|
||||
msgstr ""
|
||||
|
||||
#: client.c:516
|
||||
#: client.c:508
|
||||
msgid "Wait for exposition end"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:535
|
||||
#: client.c:527
|
||||
msgid "Can't make exposition"
|
||||
msgstr ""
|
||||
|
||||
#. start next capture
|
||||
#. 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
|
||||
msgid "Exposing frame %d..."
|
||||
msgstr ""
|
||||
|
||||
#: client.c:555
|
||||
#: client.c:547
|
||||
msgid "Frame ready, try to grab"
|
||||
msgstr ""
|
||||
|
||||
#. TRUE
|
||||
#: client.c:557
|
||||
#: client.c:549
|
||||
msgid "Can't get next image"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:565
|
||||
#: client.c:557
|
||||
msgid "Got already saved image, wait next"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:589
|
||||
#: client.c:581
|
||||
msgid "Server timeout"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:640
|
||||
#: client.c:632
|
||||
msgid "Camera in error state"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:642
|
||||
#: client.c:634
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Image wasn't received, state: %d, waiting: %g, lastNo: %d, curNo: %d "
|
||||
"(timeout: %g)"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:702 client.c:709
|
||||
#: client.c:694 client.c:701
|
||||
msgid "Can't create capturing thread"
|
||||
msgstr ""
|
||||
|
||||
@@ -919,38 +931,38 @@ msgstr ""
|
||||
msgid "Histogram conversion: %s"
|
||||
msgstr ""
|
||||
|
||||
#: imageview.c:616
|
||||
#: imageview.c:617
|
||||
#, c-format
|
||||
msgid "Missed %zd images"
|
||||
msgstr ""
|
||||
|
||||
#: imageview.c:711
|
||||
#: imageview.c:715
|
||||
msgid "No image changing function defined"
|
||||
msgstr ""
|
||||
|
||||
#: imageview.c:718
|
||||
#: imageview.c:722
|
||||
msgid "Can't open OpenGL window, image preview will be inaccessible"
|
||||
msgstr ""
|
||||
|
||||
#. save image
|
||||
#: imageview.c:752
|
||||
#: imageview.c:756
|
||||
msgid "Make screenshot"
|
||||
msgstr ""
|
||||
|
||||
#: imageview.c:756
|
||||
#: imageview.c:760
|
||||
#, c-format
|
||||
msgid "Set output prefix to %s"
|
||||
msgstr ""
|
||||
|
||||
#: imageview.c:769
|
||||
#: imageview.c:773
|
||||
#, c-format
|
||||
msgid "Equalization of histogram: %s"
|
||||
msgstr ""
|
||||
|
||||
#: imageview.c:769
|
||||
#: imageview.c:773
|
||||
msgid "on"
|
||||
msgstr ""
|
||||
|
||||
#: imageview.c:769
|
||||
#: imageview.c:773
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
315
locale/ru/ru.po
315
locale/ru/ru.po
@@ -1,32 +1,31 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
# Russian translation of ccd_capture messages.
|
||||
# Copyright (C) 2026
|
||||
# This file is distributed under the same license as the ccd_capture package.
|
||||
# Edward V. Emelianov <eddyem@yandex.ru>, 2026.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr "Project-Id-Version: PACKAGE VERSION\n"
|
||||
msgstr "Project-Id-Version: 0.0.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-07-23 17:35+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"POT-Creation-Date: 2026-07-24 12:15+0300\n"
|
||||
"PO-Revision-Date: 2026-07-24 08:59+0300\n"
|
||||
"Last-Translator: Edward V. Emelianov <eddyem@yandex.ru>\n"
|
||||
"Language: russian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=koi8-r\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ccdfunc.c:751
|
||||
#: ccdfunc.c:618
|
||||
#, c-format
|
||||
msgid " returns \"%s\""
|
||||
msgstr " ×ÏÚ×ÒÁÝÁÅÔ \"%s\""
|
||||
|
||||
#: ccdfunc.c:673
|
||||
#: ccdfunc.c:540
|
||||
#, c-format
|
||||
msgid "%.1f seconds till exposition ends"
|
||||
msgstr "%.1f ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÜËÓÐÏÚÉÃÉÉ"
|
||||
|
||||
#: ccdfunc.c:980 client.c:577
|
||||
#: ccdfunc.c:885 client.c:569
|
||||
#, c-format
|
||||
msgid "%d seconds till pause ends\n"
|
||||
msgstr "%d ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÐÁÕÚÙ\n"
|
||||
@@ -36,12 +35,12 @@ msgstr "%d
|
||||
msgid "%d unused parameters:\n"
|
||||
msgstr "%d ÎÅÉÓÐÏÌØÚÕÅÍÙÈ ÐÁÒÁÍÅÔÒÏ×:\n"
|
||||
|
||||
#: ccdfunc.c:348
|
||||
#: ccdfunc.c:226
|
||||
#, c-format
|
||||
msgid "Added %d FITS records from %s"
|
||||
msgstr "äÏÂÁ×ÌÅÎÏ %d ÚÁÐÉÓÅÊ FITS ÉÚ %s"
|
||||
|
||||
#: ccdfunc.c:347
|
||||
#: ccdfunc.c:225
|
||||
#, c-format
|
||||
msgid "Added 0 FITS records from %s"
|
||||
msgstr "äÏÂÁ×ÌÅÎÏ 0 ÚÁÐÉÓÅÊ FITS ÉÚ %s"
|
||||
@@ -58,54 +57,54 @@ msgstr "
|
||||
msgid "CMOS gain level"
|
||||
msgstr "ÕÒÏ×ÅÎØ Gain CMOS"
|
||||
|
||||
#: ccdfunc.c:688
|
||||
#: ccdfunc.c:555
|
||||
msgid "Camera device not pointed"
|
||||
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÐÏÄËÌÀÞÅÎÏ"
|
||||
|
||||
#: server.c:243
|
||||
#: server.c:222
|
||||
#, fuzzy
|
||||
msgid "Camera disconnected"
|
||||
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
|
||||
|
||||
#: client.c:640
|
||||
#: client.c:632
|
||||
msgid "Camera in error state"
|
||||
msgstr "ëÁÍÅÒÁ × ÓÏÓÔÏÑÎÉÉ ÏÛÉÂËÉ"
|
||||
|
||||
#: ccdfunc.c:771
|
||||
#: ccdfunc.c:638
|
||||
#, c-format
|
||||
msgid "Camera model: %s"
|
||||
msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s"
|
||||
|
||||
#: ccdfunc.c:667
|
||||
#: ccdfunc.c:534
|
||||
msgid "Camera plugin have no capture polling funtion."
|
||||
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÆÕÎËÃÉÉ ÚÁÈ×ÁÔÁ ÉÚÏÂÒÁÖÅÎÉÊ"
|
||||
|
||||
#: ccdfunc.c:737
|
||||
#: ccdfunc.c:604
|
||||
msgid "Camera plugin have no custom commands"
|
||||
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
|
||||
|
||||
#: ccdfunc.c:871
|
||||
#: ccdfunc.c:738
|
||||
msgid "Camera plugin have no exposition setter"
|
||||
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÓÅÔÔÅÒÁ ÜËÓÐÏÚÉÃÉÉ"
|
||||
|
||||
#: ccdfunc.c:762
|
||||
#: ccdfunc.c:629
|
||||
#, fuzzy
|
||||
msgid "Camera plugin have no fun speed setter"
|
||||
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`"
|
||||
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`"
|
||||
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÆÕÎËÃÉÉ `start exposition`"
|
||||
|
||||
#: ccdfunc.c:716
|
||||
#: ccdfunc.c:583
|
||||
msgid "Camera plugin have no model name getter"
|
||||
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÇÅÔÔÅÒÁ ÎÁÚ×ÁÎÉÑ ÍÏÄÅÌÉ"
|
||||
|
||||
#: ccdfunc.c:805
|
||||
#: ccdfunc.c:672
|
||||
msgid "Camera plugin have no temperature setter"
|
||||
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÓÅÔÔÅÒÁ ÔÅÍÐÅÒÁÔÕÒÙ"
|
||||
|
||||
@@ -113,214 +112,229 @@ msgstr "
|
||||
msgid "Can't allocate buffer"
|
||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
||||
|
||||
#: ccdfunc.c:848
|
||||
#, fuzzy
|
||||
msgid "Can't allocate image memory"
|
||||
msgstr "îÅ ÍÏÇÕ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÒÁÚÄÅÌÑÅÍÕÀ ÐÁÍÑÔØ"
|
||||
|
||||
#: server.c:167
|
||||
msgid "Can't allocate memory for image"
|
||||
msgstr "îÅ ÍÏÇÕ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÄÌÑ ÉÚÏÂÒÁÖÅÎÉÑ"
|
||||
|
||||
#: main.c:122
|
||||
#: main.c:124
|
||||
msgid "Can't be client and standalone in same time!"
|
||||
msgstr "îÅ ÍÏÇÕ ÏÄÎÏ×ÒÅÍÅÎÎÏ ÂÙÔØ ËÌÉÅÎÔÏÍ É ÓÁÍÏÓÔÏÑÔÅÌØÎÙÍ ÐÒÉÌÏÖÅÎÉÅÍ!"
|
||||
|
||||
#: ccdfunc.c:959
|
||||
#: ccdfunc.c:865
|
||||
msgid "Can't capture image"
|
||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
||||
|
||||
#: ccdfunc.c:876
|
||||
#: ccdfunc.c:743
|
||||
msgid "Can't change frame type"
|
||||
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÔÉÐ ËÁÄÒÁ"
|
||||
|
||||
#: ccdfunc.c:821
|
||||
#: ccdfunc.c:688
|
||||
msgid "Can't configure (unsupported?)"
|
||||
msgstr "îÅ ÍÏÇÕ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ (ÏÐÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
||||
|
||||
#: server.c:1274
|
||||
#: server.c:1263
|
||||
#, c-format
|
||||
msgid "Can't create %s"
|
||||
msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ %s"
|
||||
|
||||
#: client.c:702 client.c:709
|
||||
#: client.c:694 client.c:701
|
||||
msgid "Can't create capturing thread"
|
||||
msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÐÏÔÏË ÚÁÈ×ÁÔÁ ÉÚÏÂÒÁÖÅÎÉÊ"
|
||||
|
||||
#: ccdfunc.c:1082
|
||||
#: ccdfunc.c:981
|
||||
msgid "Can't create grabbing thread"
|
||||
msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÐÏÔÏË ÚÁÈ×ÁÔÁ"
|
||||
|
||||
#: main.c:129
|
||||
#: main.c:131
|
||||
msgid "Can't create log file"
|
||||
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?)"
|
||||
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÓÏÓÔÏÑÎÉÅ ÐÏÒÔÁ I/O (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
||||
|
||||
#: ccdfunc.c:886
|
||||
#: ccdfunc.c:753
|
||||
msgid "Can't get current binning"
|
||||
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ ÂÉÎÎÉÎÇÁ"
|
||||
|
||||
#: ccdfunc.c:540
|
||||
#: ccdfunc.c:414
|
||||
msgid "Can't get current focuser position"
|
||||
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÔÅËÕÝÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
|
||||
|
||||
#: ccdfunc.c:643
|
||||
#: ccdfunc.c:518
|
||||
msgid "Can't get current wheel position"
|
||||
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÔÅËÕÝÕÀ ÐÏÚÉÃÉÀ ÔÕÒÅÌÉ"
|
||||
|
||||
#: ccdfunc.c:496
|
||||
#: ccdfunc.c:370
|
||||
msgid "Can't get focuser limit positions"
|
||||
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
|
||||
|
||||
#: ccdfunc.c:603
|
||||
#: ccdfunc.c:475
|
||||
msgid "Can't get max wheel position"
|
||||
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ÔÕÒÅÌÉ"
|
||||
|
||||
#. TRUE
|
||||
#: client.c:557
|
||||
#: client.c:549
|
||||
msgid "Can't get next image"
|
||||
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÏÞÅÒÅÄÎÏÅ ÉÚÏÂÒÁÖÅÎÉÅ"
|
||||
|
||||
#: ccdfunc.c:966 ccdfunc.c:1044
|
||||
#: ccdfunc.c:872 ccdfunc.c:949
|
||||
msgid "Can't grab image"
|
||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
||||
|
||||
#: ccdfunc.c:558
|
||||
#: ccdfunc.c:432
|
||||
msgid "Can't home focuser"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÆÏËÕÓÅÒ × ÎÕÌØ"
|
||||
|
||||
#: server.c:169
|
||||
#, fuzzy
|
||||
msgid "Can't init camera data"
|
||||
msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!"
|
||||
|
||||
#: imageview.c:314
|
||||
msgid "Can't init mutex!"
|
||||
msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!"
|
||||
|
||||
#: server.c:1310
|
||||
#: server.c:1299
|
||||
msgid "Can't lock mutex"
|
||||
msgstr "îÅ ÍÏÇÕ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÍØÀÔÅËÓ"
|
||||
|
||||
#: client.c:342
|
||||
#: client.c:333
|
||||
msgid "Can't lock shared memory"
|
||||
msgstr "îÅ ÍÏÇÕ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÒÁÚÄÅÌÑÅÍÕÀ ÐÁÍÑÔØ"
|
||||
|
||||
#: client.c:535
|
||||
#: client.c:527
|
||||
msgid "Can't make exposition"
|
||||
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ÜËÓÐÏÚÉÃÉÀ"
|
||||
|
||||
#: imageview.c:718
|
||||
#: imageview.c:722
|
||||
msgid "Can't open OpenGL window, image preview will be inaccessible"
|
||||
msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÏËÎÏ OpenGL, ÏÔÏÂÒÁÖÅÎÉÅ ÂÕÄÅÔ ÎÅÄÏÓÔÕÐÎÏ"
|
||||
|
||||
#: client.c:361
|
||||
#: client.c:352
|
||||
msgid "Can't open image transport socket"
|
||||
msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÔÒÁÎÓÐÏÒÔÎÙÊ ÓÏËÅÔ"
|
||||
|
||||
#: client.c:454
|
||||
#: client.c:446
|
||||
#, c-format
|
||||
msgid "Can't read full header, got %zd records from %zd"
|
||||
msgstr "îÅ ÍÏÇÕ ÓÞÉÔÁÔØ ×ÅÓØ ÚÁÌÏÇÏ×Ï, ÐÏÌÕÞÉÌ ÌÉÛØ %zd ÚÁÐÉÓÅÊ ÉÚ %zd"
|
||||
|
||||
#: client.c:400 client.c:430
|
||||
#: client.c:392 client.c:422
|
||||
msgid "Can't read image data"
|
||||
msgstr "îÅ ÍÏÇÕ ÓÞÉÔÁÔØ ÄÁÎÎÙÅ ÉÚÏÂÒÁÖÅÎÉÑ"
|
||||
|
||||
#: client.c:367
|
||||
#: client.c:358
|
||||
msgid "Can't read image header over socket"
|
||||
msgstr "îÅ ÍÏÇÕ ÓÞÉÔÁÔØ ÚÁÇÏÌÏ×ÏË ÉÚÏÂÒÁÖÅÎÉÑ ÐÏ ÓÏËÅÔÕ"
|
||||
|
||||
#: ccdfunc.c:816
|
||||
#: ccdfunc.c:683
|
||||
#, c-format
|
||||
msgid "Can't run shutter command %s (unsupported?)"
|
||||
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ ÚÁÔ×ÏÒÁ %s (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
||||
|
||||
#: client.c:495 client.c:595
|
||||
#: client.c:487 client.c:587
|
||||
msgid "Can't run without command socket"
|
||||
msgstr "îÅ ÍÏÇÕ ÒÁÂÏÔÁÔØ ÂÅÚ ËÏÍÁÎÄÎÏÇÏ ÓÏËÅÔÁ"
|
||||
|
||||
#: ccdfunc.c:230
|
||||
#: ccdfunc.c:108
|
||||
#, c-format
|
||||
msgid "Can't save file with prefix %s"
|
||||
msgstr "îÅ ÍÏÇÕ ÓÏÈÒÁÎÉÔØ ÆÁÊÌ Ó ÐÒÅÆÉËÓÏÍ %s"
|
||||
|
||||
#: ccdfunc.c:868
|
||||
#: ccdfunc.c:735
|
||||
#, c-format
|
||||
msgid "Can't set %d flushes"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ %d ÓÂÒÏÓÏ×"
|
||||
|
||||
#: ccdfunc.c:832
|
||||
#: ccdfunc.c:699
|
||||
msgid "Can't set IOport"
|
||||
msgstr "îÅ ÍÏÇÕ ÐÏÍÅÎÑÔØ ÚÎÁÞÅÎÉÑ ÐÏÒÔÁ I/O"
|
||||
|
||||
#: ccdfunc.c:806
|
||||
#: ccdfunc.c:673
|
||||
#, c-format
|
||||
msgid "Can't set T to %g degC"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÔÅÍÐÅÒÁÔÕÒÕ × %g ÇÒÁÄã"
|
||||
|
||||
#: ccdfunc.c:731
|
||||
#: ccdfunc.c:598
|
||||
msgid "Can't set active camera number"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÊ ËÁÍÅÒÙ"
|
||||
|
||||
#: ccdfunc.c:489
|
||||
#: ccdfunc.c:363
|
||||
msgid "Can't set active focuser number"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ÆÏËÕÓÅÒÁ"
|
||||
|
||||
#: ccdfunc.c:597
|
||||
#: ccdfunc.c:469
|
||||
msgid "Can't set active wheel number"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ËÏÌÅÓÁ"
|
||||
|
||||
#: main.c:97
|
||||
#: main.c:99
|
||||
#, c-format
|
||||
msgid "Can't set answer timeout to %g"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÔÁÊÍÁÕÔ ÏÔ×ÅÔÁ × %g"
|
||||
|
||||
#: ccdfunc.c:852 server.c:380
|
||||
#: ccdfunc.c:719 server.c:359
|
||||
#, c-format
|
||||
msgid "Can't set binning %dx%d"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÂÉÎÎÉÎÇ %dx%d"
|
||||
|
||||
#: ccdfunc.c:879
|
||||
#: ccdfunc.c:746
|
||||
msgid "Can't set bit depth"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÒÁÚÒÑÄÎÏÓÔØ áãð"
|
||||
|
||||
#: ccdfunc.c:846
|
||||
#: ccdfunc.c:713
|
||||
#, c-format
|
||||
msgid "Can't set brightness to %g"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
||||
|
||||
#: ccdfunc.c:873
|
||||
#: ccdfunc.c:740
|
||||
#, c-format
|
||||
msgid "Can't set exposure time to %f seconds"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÜËÓÐÏÚÉÃÉÀ × %f ÓÅËÕÎÄ"
|
||||
|
||||
#: ccdfunc.c:765
|
||||
#: ccdfunc.c:632
|
||||
msgid "Can't set fan speed"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ×"
|
||||
|
||||
#: ccdfunc.c:840
|
||||
#: ccdfunc.c:707
|
||||
#, c-format
|
||||
msgid "Can't set gain to %g"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ gain × %g"
|
||||
|
||||
#: ccdfunc.c:864 server.c:381
|
||||
#: ccdfunc.c:731 server.c:361
|
||||
msgid "Can't set given geometry"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÇÅÏÍÅÔÒÉÀ"
|
||||
|
||||
#: ccdfunc.c:560
|
||||
#: ccdfunc.c:434
|
||||
#, c-format
|
||||
msgid "Can't set position %g"
|
||||
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÐÏÚÉÃÉÀ ÎÁ %g"
|
||||
|
||||
#: ccdfunc.c:554
|
||||
#: ccdfunc.c:428
|
||||
#, c-format
|
||||
msgid "Can't set position %g: out of limits [%g, %g]"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÚÉÃÉÀ %g: ×ÎÅ ÐÒÅÄÅÌÏ× [%g, %g]"
|
||||
|
||||
#: ccdfunc.c:881
|
||||
#: ccdfunc.c:748
|
||||
msgid "Can't set readout speed"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ÓÞÉÔÙ×ÁÎÉÑ"
|
||||
|
||||
#: ccdfunc.c:652
|
||||
#: ccdfunc.c:527
|
||||
#, c-format
|
||||
msgid "Can't set wheel position %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"
|
||||
msgstr "îÅ ÍÏÇÕ ÎÁÞÁÔØ ÜËÓÐÏÚÉÃÉÀ"
|
||||
|
||||
@@ -328,45 +342,45 @@ msgstr "
|
||||
msgid "Can't unlock socket mutex"
|
||||
msgstr "îÅ ÍÏÇÕ ÒÁÚÂÌÏËÉÒÏ×ÁÔØ ÍØÀÔÅËÓ ÓÏËÅÔÁ"
|
||||
|
||||
#: main.c:91
|
||||
#: main.c:93
|
||||
msgid "Can't use outfile name and prefix together"
|
||||
msgstr "îÅ ÍÏÇÕ ÏÄÎÏ×ÒÅÍÅÎÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÉÍÑ ÆÁÊÌÁ É ÐÒÅÆÉËÓ"
|
||||
|
||||
#: ccdfunc.c:951
|
||||
#: ccdfunc.c:857
|
||||
#, c-format
|
||||
msgid "Capture frame %d"
|
||||
msgstr "úÁÈ×ÁÔ ËÁÄÒÁ %d"
|
||||
|
||||
#: server.c:1176
|
||||
#: server.c:1165
|
||||
msgid "Client wants an image, but there's no data"
|
||||
msgstr "ëÌÉÅÎÔ ÖÄÅÔ ÉÚÏÂÒÁÖÅÎÉÑ, ÎÏ ÄÁÎÎÙÅ ÏÔÓÕÔÓÔ×ÕÀÔ"
|
||||
|
||||
#: ccdfunc.c:746 ccdfunc.c:749
|
||||
#: ccdfunc.c:613 ccdfunc.c:616
|
||||
#, c-format
|
||||
msgid "Command '%s'"
|
||||
msgstr "ëÏÍÁÎÄÁ '%s'"
|
||||
|
||||
#: ccdfunc.c:793
|
||||
#: ccdfunc.c:660
|
||||
#, c-format
|
||||
msgid "Current binning: %d x %d"
|
||||
msgstr "ôÅËÕÝÉÊ ÂÉÎÎÉÎÇ: %d x %d"
|
||||
|
||||
#: ccdfunc.c:799
|
||||
#: ccdfunc.c:666
|
||||
#, c-format
|
||||
msgid "Current brightness: %g"
|
||||
msgstr "ôÅËÕÝÁÑ ÑÒËÏÓÔØ: %g"
|
||||
|
||||
#: ccdfunc.c:784
|
||||
#: ccdfunc.c:651
|
||||
#, c-format
|
||||
msgid "Current format: %s"
|
||||
msgstr "ôÅËÕÝÉÊ ÆÏÒÍÁÔ: %s"
|
||||
|
||||
#: ccdfunc.c:801
|
||||
#: ccdfunc.c:668
|
||||
#, c-format
|
||||
msgid "Current gain: %g"
|
||||
msgstr "ôÅËÕÝÉÊ gain: %s"
|
||||
|
||||
#: ccdfunc.c:796
|
||||
#: ccdfunc.c:663
|
||||
#, c-format
|
||||
msgid "Current settings: %d bits per pixel"
|
||||
msgstr "ôÅËÕÝÉÅ ÎÁÓÔÒÏÊËÉ: %d ÂÉÔ ÎÁ ÐÉËÓÅÌØ"
|
||||
@@ -375,93 +389,93 @@ msgstr "
|
||||
msgid "Display image in OpenGL window"
|
||||
msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ × ÏËÎÅ OpenGL"
|
||||
|
||||
#: imageview.c:769
|
||||
#: imageview.c:773
|
||||
#, c-format
|
||||
msgid "Equalization of histogram: %s"
|
||||
msgstr "üË×ÁÌÉÚÁÃÉÑ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
|
||||
|
||||
#: ccdfunc.c:395
|
||||
#: ccdfunc.c:269
|
||||
#, c-format
|
||||
msgid "Error saving file %s"
|
||||
msgstr "ïÛÉÂËÁ ÓÏÈÒÁÎÅÎÉÑ ÆÁÊÌÁ %s"
|
||||
|
||||
#. start next capture
|
||||
#. 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
|
||||
msgid "Exposing frame %d..."
|
||||
msgstr "üËÓÐÏÎÉÒÕÀ ËÁÄÒ %d..."
|
||||
|
||||
#: client.c:514
|
||||
#: client.c:506
|
||||
msgid "Exposing frame 1..."
|
||||
msgstr "üËÓÐÏÎÉÒÕÀ ËÁÄÒ 1..."
|
||||
|
||||
#: ccdfunc.c:781
|
||||
#: ccdfunc.c:648
|
||||
#, c-format
|
||||
msgid "Field of view: %s"
|
||||
msgstr "ðÏÌÅ ÚÒÅÎÉÑ: %s"
|
||||
|
||||
#: main.c:94 ccdfunc.c:222
|
||||
#: main.c:96 ccdfunc.c:100
|
||||
#, c-format
|
||||
msgid "File %s exists!"
|
||||
msgstr "æÁÊÌ %s ÓÕÝÅÓÔ×ÕÅÔ!"
|
||||
|
||||
#: ccdfunc.c:386
|
||||
#: ccdfunc.c:260
|
||||
#, c-format
|
||||
msgid "File saved as '%s'"
|
||||
msgstr "æÁÊÌ ÓÏÈÒÁÎÅÎ ËÁË '%s'"
|
||||
|
||||
#: ccdfunc.c:459
|
||||
#: ccdfunc.c:333
|
||||
msgid "Focuser device not pointed"
|
||||
msgstr "õÓÔÒÏÊÓÔ×Ï ÆÏËÕÓÅÒÁ ÎÅ ÕËÁÚÁÎÏ"
|
||||
|
||||
#: ccdfunc.c:727
|
||||
#: ccdfunc.c:594
|
||||
#, c-format
|
||||
msgid "Found %d cameras, you point number %d"
|
||||
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ËÁÍÅÒ, ×Ù ÕËÁÚÁÌÉ %d"
|
||||
|
||||
#: ccdfunc.c:484
|
||||
#: ccdfunc.c:358
|
||||
#, c-format
|
||||
msgid "Found %d focusers, you point number %d"
|
||||
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ÆÏËÕÓÅÒÏ×, ×Ù ÕËÁÚÁÌÉ %d"
|
||||
|
||||
#: ccdfunc.c:592
|
||||
#: ccdfunc.c:464
|
||||
#, c-format
|
||||
msgid "Found %d wheels, you point number %d"
|
||||
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ËÏÌÅÓ, ×Ù ÕËÁÚÁÌÉ %d"
|
||||
|
||||
#: ccdfunc.c:721
|
||||
#: ccdfunc.c:588
|
||||
#, c-format
|
||||
msgid "Found camera #%d: %s\n"
|
||||
msgstr "ïÂÎÁÒÕÖÅÎÁ ËÁÍÅÒÁ ÎÏÍÅÒ %d: %s\n"
|
||||
|
||||
#: ccdfunc.c:522
|
||||
#: ccdfunc.c:396
|
||||
#, c-format
|
||||
msgid "Found focuser #%d: %s\n"
|
||||
msgstr "ïÂÎÁÒÕÖÅÎ ÆÏËÕÓÅÒ ÎÏÍÅÒ %d: %s\n"
|
||||
|
||||
#: ccdfunc.c:628
|
||||
#: ccdfunc.c:500
|
||||
#, c-format
|
||||
msgid "Found wheel #%d: %s\n"
|
||||
msgstr "ïÂÎÁÒÕÖÅÎÁ ÔÕÒÅÌØ ÎÏÍÅÒ %d: %s\n"
|
||||
|
||||
#: client.c:555
|
||||
#: client.c:547
|
||||
msgid "Frame ready, try to grab"
|
||||
msgstr "ëÁÄÒ ÇÏÔÏ×, ÐÙÔÁÀÓØ ÓÞÉÔÁÔØ"
|
||||
|
||||
#. for(int i = 0; i < NFRM; ++i) printf("last[%d]=%g\n", i, lastn[i]);
|
||||
#: ccdfunc.c:1015
|
||||
#: ccdfunc.c:920
|
||||
#, c-format
|
||||
msgid "Framerate=%.2f (%g seconds for exp); mean framerate=%.2f"
|
||||
msgstr "%.2f ËÁÄÒÏ× × ÓÅËÕÎÄÕ (%g ÓÅËÕÎÄ ÎÁ ÜËÓÐÏÚÉÃÉÀ); ÓÒÅÄÎÑÑ ÓËÏÒÏÓÔØ "
|
||||
"%.2f"
|
||||
|
||||
#: ccdfunc.c:778
|
||||
#: ccdfunc.c:645
|
||||
#, c-format
|
||||
msgid "Full array: %s"
|
||||
msgstr "ðÏÌÎÙÊ ÆÏÒÍÁÔ: %s"
|
||||
|
||||
#: ccdfunc.c:789
|
||||
#: ccdfunc.c:656
|
||||
#, c-format
|
||||
msgid "Geometry steps: offset - %dx%d, size - %dx%d"
|
||||
msgstr "ûÁÇ ÉÚÍÅÒÅÎÉÑ ÇÅÏÍÅÔÒÉÉ: ÓÍÅÝÅÎÉÑ - %dx%d, ÒÁÚÍÅÒÁ - %dx%d"
|
||||
@@ -472,7 +486,7 @@ msgstr "
|
||||
msgid "Get signal %d - exit"
|
||||
msgstr "ðÏÌÕÅÎ ÓÉÇÎÁÌ %d - ×ÙÈÏÄ"
|
||||
|
||||
#: client.c:565
|
||||
#: client.c:557
|
||||
msgid "Got already saved image, wait next"
|
||||
msgstr "ðÏÌÕÞÉÌ ÕÖÅ ÓÏÈÒÁÎÅÎÎÏÅ ÉÚÏÂÒÁÖÅÎÉÅ, ÖÄÕ ÓÌÅÄÕÀÝÅÇÏ"
|
||||
|
||||
@@ -489,33 +503,33 @@ msgstr "
|
||||
msgid "INET image socket port"
|
||||
msgstr "ÐÏÒÔ ÌÏËÁÌØÎÏÇÏ ÓÅÔÅ×ÏÇÏ ÓÏËÅÔÁ ÐÅÒÅÄÁÞÉ ÉÚÏÂÒÁÖÅÎÉÑ"
|
||||
|
||||
#: ccdfunc.c:211
|
||||
#: ccdfunc.c:89
|
||||
msgid "Image not saved: neither filename nor filename prefix pointed"
|
||||
msgstr "éÚÏÂÒÁÖÅÎÉÅ ÎÅ ÓÏÈÒÁÎÅÎÏ: ÎÅ ÕËÁÚÁÎÏ ÎÉ ÉÍÅÎÉ ÆÁÊÌÁ, ÎÉ ÐÒÅÆÉËÓÁ"
|
||||
|
||||
#: ccdfunc.c:450
|
||||
#: ccdfunc.c:324
|
||||
#, c-format
|
||||
msgid "Image stat:\n"
|
||||
msgstr "óÔÁÔÉÓÔÉËÁ ÐÏ ÉÚÏÂÒÁÖÅÎÉÀ: \n"
|
||||
|
||||
#: client.c:642
|
||||
#: client.c:634
|
||||
#, c-format
|
||||
msgid "Image wasn't received, state: %d, waiting: %g, lastNo: %d, curNo: %d "
|
||||
"(timeout: %g)"
|
||||
msgstr "éÚÏÂÒÁÖÅÎÉÅ ÎÅ ÂÙÌÏ ÐÏÌÕÞÅÎÏ. óÏÓÔÏÑÎÉÅ: %d, ÏÖÉÄÁÎÉÅ: %g, ÐÏÓÌÅÄÎÉÊ "
|
||||
"ÎÏÍÅÒ: %d, ÔÅËÕÝÉÊ ÎÏÍÅÒ: %d (ÔÁÊÍÁÕÔ: %g)"
|
||||
|
||||
#: server.c:1205
|
||||
#: server.c:1194
|
||||
msgid "Limit of connections reached"
|
||||
msgstr "äÏÓÔÉÇÎÕÔ ÐÒÅÄÅÌ ËÏÌÉÞÅÓÔ×Á ÐÏÄËÌÀÞÅÎÉÊ"
|
||||
|
||||
#: main.c:127
|
||||
#: main.c:129
|
||||
#, c-format
|
||||
msgid "Log file %s @ level %d\n"
|
||||
msgstr "ìÏÇ-ÆÁÊÌ %s Ó ÕÒÏ×ÎÅÍ %d\n"
|
||||
|
||||
#. save image
|
||||
#: imageview.c:752
|
||||
#: imageview.c:756
|
||||
msgid "Make screenshot"
|
||||
msgstr "óÄÅÌÁÔØ ÓËÒÉÎÛÏÔ"
|
||||
|
||||
@@ -524,22 +538,22 @@ msgstr "
|
||||
msgid "Master killed with sig=%d"
|
||||
msgstr "èÏÚÑÉÎ ÕÂÉÔ Ó ÓÉÇÎÁÌÏÍ %d"
|
||||
|
||||
#: ccdfunc.c:803
|
||||
#: ccdfunc.c:670
|
||||
#, c-format
|
||||
msgid "Maximal gain: %g"
|
||||
msgstr "îÁÉÂÏÌØÛÉÊ gain: %g"
|
||||
|
||||
#: ccdfunc.c:787
|
||||
#: ccdfunc.c:654
|
||||
#, c-format
|
||||
msgid "Maximal geometry (WxH): %dx%d"
|
||||
msgstr "îÁÉÂÏÌØÛÁÑ ÇÅÏÍÅÔÒÉÑ (WxH): %dx%d"
|
||||
|
||||
#: ccdfunc.c:788
|
||||
#: ccdfunc.c:655
|
||||
#, c-format
|
||||
msgid "Minimal offset: %dx%d"
|
||||
msgstr "íÉÎÉÍÁÌØÎÏÅ ÓÍÅÝÅÎÉÅ: %dx%d"
|
||||
|
||||
#: imageview.c:616
|
||||
#: imageview.c:617
|
||||
#, c-format
|
||||
msgid "Missed %zd images"
|
||||
msgstr "ðÒÏÐÕÝÅÎÏ %zd ÉÚÏÂÒÁÖÅÎÉÊ"
|
||||
@@ -548,59 +562,59 @@ msgstr "
|
||||
msgid "N flushes before exposing (default: 1)"
|
||||
msgstr "N ÚÁÓ×ÅÞÉ×ÁÎÉÊ ÐÅÒÅÄ ÜËÓÐÏÚÉÃÉÅÊ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 1)"
|
||||
|
||||
#: ccdfunc.c:1126
|
||||
#: ccdfunc.c:1023
|
||||
msgid "Need exposition time!"
|
||||
msgstr "õËÁÖÉÔÅ ×ÒÅÍÑ ÜËÓÐÏÚÉÃÉÉ!"
|
||||
|
||||
#: server.c:297
|
||||
#: server.c:276
|
||||
msgid "No camera device"
|
||||
msgstr "îÅ ÕËÁÚÁÎÏ ÕÓÔÒÏÊÓÔ×Ï ËÁÍÅÒÙ"
|
||||
|
||||
#: ccdfunc.c:695 ccdfunc.c:696
|
||||
#: ccdfunc.c:562 ccdfunc.c:563
|
||||
msgid "No cameras found"
|
||||
msgstr "ëÁÍÅÒ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||
|
||||
#: server.c:1131
|
||||
#: server.c:1120
|
||||
#, fuzzy
|
||||
msgid "No devices found"
|
||||
msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||
|
||||
#: ccdfunc.c:466
|
||||
#: ccdfunc.c:340
|
||||
msgid "No focusers found"
|
||||
msgstr "æÏËÕÓÅÒÏ× ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||
|
||||
#: imageview.c:711
|
||||
#: imageview.c:715
|
||||
msgid "No image changing function defined"
|
||||
msgstr "îÅ ÏÐÒÅÄÅÌÅÎÁ ÆÕÎËÃÉÑ, ÏÔ×ÅÔÓÔ×ÅÎÎÁÑ ÚÁ ÓÍÅÎÕ ÉÚÏÂÒÁÖÅÎÉÊ"
|
||||
|
||||
#: ccdfunc.c:575
|
||||
#: ccdfunc.c:447
|
||||
msgid "No wheels found"
|
||||
msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||
|
||||
#: ccdfunc.c:883
|
||||
#: ccdfunc.c:750
|
||||
msgid "Only show statistics"
|
||||
msgstr "ôÏÌØËÏ ÏÔÏÂÒÁÚÉÔØ ÓÔÁÔÉÓÔÉËÕ"
|
||||
|
||||
#: main.c:101
|
||||
#: main.c:103
|
||||
msgid "Options `port` and `path` can't be used together! Point `port` for "
|
||||
"TCP socket or `path` for UNIX."
|
||||
msgstr "ïÐÃÉÉ `port` É `path` ÎÅ ÍÏÇÕÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÓÏ×ÍÅÓÔÎÏ! õËÁÖÉÔÅ "
|
||||
"`port` ÄÌÑ TCP-ÓÏËÅÔÏ× ÉÌÉ `path` ÄÌÑ UNIX."
|
||||
|
||||
#: ccdfunc.c:772
|
||||
#: ccdfunc.c:639
|
||||
#, c-format
|
||||
msgid "Pixel size: %g x %g"
|
||||
msgstr "òÁÚÍÅÒ ÐÉËÓÅÌÑ: %g x %g"
|
||||
|
||||
#: ccdfunc.c:1113
|
||||
#: ccdfunc.c:1010
|
||||
msgid "Point network port or UNIX-socket path"
|
||||
msgstr "õËÁÖÉÔÅ ÓÅÔÅ×ÏÊ ÐÏÒÔ ÉÌÉ ÐÕÔØ Ë UNIX-ÓÏËÅÔÕ"
|
||||
|
||||
#: ccdfunc.c:962
|
||||
#: ccdfunc.c:868
|
||||
msgid "Read grabbed image"
|
||||
msgstr "óÞÉÔÙ×ÁÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ"
|
||||
|
||||
#: ccdfunc.c:882
|
||||
#: ccdfunc.c:749
|
||||
#, c-format
|
||||
msgid "Readout mode: %s"
|
||||
msgstr "òÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ: %s"
|
||||
@@ -612,7 +626,7 @@ msgstr "
|
||||
#. send message and wait any answer
|
||||
#. send message and wait answer starting with 'cmd'
|
||||
#. 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"
|
||||
msgstr "óÅÒ×ÅÒ ÏÔËÌÀÞÅÎ"
|
||||
|
||||
@@ -620,66 +634,66 @@ msgstr "
|
||||
msgid "Server disconnected?"
|
||||
msgstr "óÅÒ×ÅÒ ÏÔËÌÀÞÅÎ?"
|
||||
|
||||
#: server.c:1100
|
||||
#: server.c:1089
|
||||
msgid "Server run without image transport socket"
|
||||
msgstr "óÅÒ×ÅÒ ÚÁÐÕÝÅÎ ÂÅÚ ÔÒÁÎÓÐÏÒÔÎÏÇÏ ÓÏËÅÔÁ (ÔÏÌØËÏ SHM)"
|
||||
|
||||
#: client.c:589
|
||||
#: client.c:581
|
||||
msgid "Server timeout"
|
||||
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
|
||||
|
||||
#: ccdfunc.c:845
|
||||
#: ccdfunc.c:712
|
||||
#, c-format
|
||||
msgid "Set brightness to %g"
|
||||
msgstr "õÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
||||
|
||||
#: ccdfunc.c:766
|
||||
#: ccdfunc.c:633
|
||||
#, c-format
|
||||
msgid "Set fan speed to %d"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ× × %d"
|
||||
|
||||
#: ccdfunc.c:839
|
||||
#: ccdfunc.c:706
|
||||
#, c-format
|
||||
msgid "Set gain to %g"
|
||||
msgstr "õÓÔÁÎÏ×ÉÔØ Gain × %g"
|
||||
|
||||
#: main.c:119
|
||||
#: main.c:121
|
||||
#, c-format
|
||||
msgid "Set image port to %s\n"
|
||||
msgstr "õÓÔÁÎÁ×ÌÉ×ÁÀ ÎÏÍÅÒ ÔÒÁÎÓÐÏÒÔÎÏÇÏ ÐÏÒÔÁ × %d\n"
|
||||
|
||||
#: imageview.c:756
|
||||
#: imageview.c:760
|
||||
#, c-format
|
||||
msgid "Set output prefix to %s"
|
||||
msgstr "õÓÔÁÎÁ×ÌÉ×ÁÀ ×ÙÈÏÄÎÏÊ ÐÒÅÆÉËÓ × %s"
|
||||
|
||||
#: ccdfunc.c:814
|
||||
#: ccdfunc.c:681
|
||||
#, c-format
|
||||
msgid "Shutter command: %s\n"
|
||||
msgstr "ëÏÍÁÎÄÁ ÚÁÔ×ÏÒÁ: %s\n"
|
||||
|
||||
#: ccdfunc.c:1041
|
||||
#: ccdfunc.c:946
|
||||
msgid "Some error when capture"
|
||||
msgstr "ïÛÉÂËÁ ÐÒÉ ÚÁÈ×ÁÔÅ"
|
||||
|
||||
#: server.c:249
|
||||
#: server.c:228
|
||||
msgid "Something's wrong with camera"
|
||||
msgstr "þÔÏ-ÔÏ ËÁÍÅÒÅ ÐÏÐÌÏÈÅÌÏ"
|
||||
|
||||
#: client.c:470
|
||||
#: client.c:462
|
||||
msgid "Still got old image"
|
||||
msgstr "÷ÓÅ ÅÝÅ ÐÏÌÕÞÁÀ ÓÔÁÒÙÅ ÉÚÏÂÒÁÖÅÎÉÑ"
|
||||
|
||||
#: client.c:443
|
||||
#: client.c:435
|
||||
msgid "Too many FITS headers, truncating"
|
||||
msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÚÁÇÏÌÏ×ËÏ× FITS, ÏÂÒÅÚÁÀ"
|
||||
|
||||
#: ccdfunc.c:819
|
||||
#: ccdfunc.c:686
|
||||
#, c-format
|
||||
msgid "Try to configure I/O port as %d"
|
||||
msgstr "ðÏÐÙÔËÁ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ ÐÏÒÔ I/O ËÁË %d"
|
||||
|
||||
#: ccdfunc.c:830
|
||||
#: ccdfunc.c:697
|
||||
#, c-format
|
||||
msgid "Try to write %d to I/O port"
|
||||
msgstr "ðÏÐÙÔËÁ ÚÁÐÉÓÉ %d × ÐÏÒÔ I/O"
|
||||
@@ -688,25 +702,25 @@ msgstr "
|
||||
msgid "UNIX socket name (command socket)"
|
||||
msgstr "ÉÍÑ UNIX-ÓÏËÅÔÁ"
|
||||
|
||||
#: client.c:516
|
||||
#: client.c:508
|
||||
msgid "Wait for exposition end"
|
||||
msgstr "öÄÕ, ÐÏËÁ ÎÅ ËÏÎÞÉÔÓÑ ÜËÓÐÏÚÉÃÉÑ"
|
||||
|
||||
#: ccdfunc.c:568
|
||||
#: ccdfunc.c:440
|
||||
msgid "Wheel device not pointed"
|
||||
msgstr "õÓÔÒÏÊÓÔ×Ï ÔÕÒÅÌÉ ÎÅ ÕËÁÚÁÎÏ"
|
||||
|
||||
#: ccdfunc.c:634
|
||||
#: ccdfunc.c:509
|
||||
#, fuzzy, c-format
|
||||
msgid "Wheel model: %s"
|
||||
msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s"
|
||||
|
||||
#: ccdfunc.c:648
|
||||
#: ccdfunc.c:523
|
||||
#, c-format
|
||||
msgid "Wheel position should be from 0 to %d"
|
||||
msgstr "ðÏÚÉÃÉÑ ËÏÌÅÓÁ ÄÏÌÖÎÁ ÂÙÔØ ÏÔ 0 ÄÏ %d"
|
||||
|
||||
#: main.c:106
|
||||
#: main.c:108
|
||||
#, c-format
|
||||
msgid "Wrong port value: %d"
|
||||
msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÎÏÍÅÒ ÐÏÒÔÁ: %d"
|
||||
@@ -859,11 +873,11 @@ msgstr "
|
||||
msgid "observing program name"
|
||||
msgstr "ÎÁÚ×ÁÎÉÅ ÐÒÏÇÒÁÍÍÙ"
|
||||
|
||||
#: imageview.c:769
|
||||
#: imageview.c:773
|
||||
msgid "off"
|
||||
msgstr "×ÙËÌ"
|
||||
|
||||
#: imageview.c:769
|
||||
#: imageview.c:773
|
||||
msgid "on"
|
||||
msgstr "×ËÌ"
|
||||
|
||||
@@ -907,7 +921,7 @@ msgstr "
|
||||
msgid "run in 8-bit mode"
|
||||
msgstr "8-ÂÉÔÎÙÊ ÒÅÖÉÍ"
|
||||
|
||||
#: server.c:1099
|
||||
#: server.c:1088
|
||||
msgid "server(): need at least command socket fd"
|
||||
msgstr "server(): ÎÕÖÅÎ ËÁË ÍÉÎÉÍÕÍ ÄÅÓËÒÉÐÔÏÒ ËÏÍÁÎÄÎÏÇÏ ÓÏËÅÔÁ"
|
||||
|
||||
@@ -943,7 +957,7 @@ msgstr "
|
||||
msgid "start (!=0) or stop(==0) infinity capturing loop"
|
||||
msgstr "ÎÁÞÁÔØ (!=0) ÉÌÉ ÚÁËÏÎÞÉÔØ (==0) ÂÅÓËÏÎÅÞÎÙÊ ÃÉËÌ ÚÁÈ×ÁÔÁ ÉÚÏÂÒÁÖÅÎÉÊ"
|
||||
|
||||
#: ccdfunc.c:1117
|
||||
#: ccdfunc.c:1014
|
||||
msgid "start_socket(): can't open socket"
|
||||
msgstr "start_socket(): ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ÓÏËÅÔ"
|
||||
|
||||
@@ -960,6 +974,3 @@ msgstr "
|
||||
#: cmdlnopts.c:68
|
||||
msgid "wheel device plugin (e.g. devdummy.so)"
|
||||
msgstr "ÐÌÁÇÉÎ ÕÓÔÒÏÊÓÔ×Á ÔÕÒÅÌÉ (ÎÁÐÒÉÍÅÒ, devdummy.so)"
|
||||
|
||||
#~ msgid "Camera device unknown"
|
||||
#~ msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÏÐÏÚÎÁÎÏ"
|
||||
|
||||
8
main.c
8
main.c
@@ -61,11 +61,13 @@ void signals(int signo){
|
||||
if(!GP->client){
|
||||
DBG("Cancel capturing and close all");
|
||||
stop_server();
|
||||
}else exit(signo);
|
||||
}else{
|
||||
#ifdef IMAGEVIEW
|
||||
DBG("KILL GL");
|
||||
closeGL();
|
||||
#endif
|
||||
exit(signo);
|
||||
}
|
||||
//DBG("exit(%d)", signo);
|
||||
//exit(signo);
|
||||
}
|
||||
@@ -156,7 +158,9 @@ int main(int argc, char **argv){
|
||||
}
|
||||
#endif
|
||||
if(camerainit) ccds();
|
||||
signals(0);
|
||||
closewheel();
|
||||
focclose();
|
||||
return 0;
|
||||
}
|
||||
LOGMSG("Started");
|
||||
#ifndef EBUG
|
||||
|
||||
51
server.c
51
server.c
@@ -165,33 +165,12 @@ static void fixima(){
|
||||
size_t len = camera->array.h * camera->array.w * 2;
|
||||
ima = cc_getshm(GP->shmkey, len);
|
||||
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
|
||||
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");
|
||||
cc_lock_shm(TRUE);
|
||||
@@ -279,7 +258,7 @@ static inline void cameracapturestate(){ // capturing - wait for exposition ends
|
||||
return;
|
||||
}
|
||||
fill_image_fields(ima);
|
||||
//fillFITSheader(ima);
|
||||
LOGDBG("Captured new image %zdx%zd pix", ima->w, ima->h);
|
||||
++ima->imnumber; // increment counter
|
||||
cc_unlock_shm();
|
||||
LOGDBG("cameracapturestate(): SHM UNlocked");
|
||||
@@ -378,7 +357,9 @@ static int camdevini(int n){
|
||||
if(GP->vbin < 1) GP->vbin = 1;
|
||||
fixima();
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -616,7 +597,7 @@ static cc_hresult formathandler(int fd, const char *key, const char *val){
|
||||
fmt.w -= fmt.xoff; fmt.h -= fmt.yoff;
|
||||
int r = camera->setgeometry(&fmt);
|
||||
if(!r) return CC_RESULT_FAIL;
|
||||
curformat = fmt;
|
||||
curformat = camera->geometry;
|
||||
DBG("curformat: w=%d, h=%d", curformat.w, curformat.h);
|
||||
//fixima();
|
||||
}
|
||||
@@ -1069,7 +1050,7 @@ static void *sendimage(void *C){
|
||||
close(client);
|
||||
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);
|
||||
if(!locimage || !cc_copyimage(locimage, ima, FALSE)){
|
||||
cc_unlock_shm();
|
||||
@@ -1079,12 +1060,20 @@ static void *sendimage(void *C){
|
||||
}
|
||||
cc_unlock_shm();
|
||||
LOGDBG("sendimage(): SHM UNlocked");
|
||||
int sent_ok = TRUE;
|
||||
do{
|
||||
// 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)
|
||||
if(!cc_senddata(client, locimage->data, locimage->bytelen)) break;
|
||||
if(!cc_senddata(client, locimage->data, locimage->bytelen)){ sent_ok = FALSE; break; }
|
||||
}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
|
||||
recv(client, locimage->data, locimage->bytelen, MSG_NOSIGNAL); // block until client close his side
|
||||
cc_freeimage(&locimage);
|
||||
|
||||
Reference in New Issue
Block a user