mirror of
https://github.com/eddyem/CCD_Capture.git
synced 2026-08-12 09:49:25 +03:00
fixed some bugs; need to make more refactoring
This commit is contained in:
67
ccdcapture.c
67
ccdcapture.c
@@ -420,7 +420,7 @@ cc_IMG *cc_getshm(key_t key, size_t imsize){
|
|||||||
|
|
||||||
|
|
||||||
// find plugin
|
// find plugin
|
||||||
void *open_plugin(const char *name){
|
void *cc_open_plugin(const char *name){
|
||||||
DBG("try to open lib %s", name);
|
DBG("try to open lib %s", name);
|
||||||
void* dlh = dlopen(name, RTLD_NOLOAD); // library may be already opened
|
void* dlh = dlopen(name, RTLD_NOLOAD); // library may be already opened
|
||||||
if(!dlh){
|
if(!dlh){
|
||||||
@@ -434,9 +434,9 @@ void *open_plugin(const char *name){
|
|||||||
return dlh;
|
return dlh;
|
||||||
}
|
}
|
||||||
|
|
||||||
cc_Focuser *open_focuser(const char *pluginname){
|
cc_Focuser *cc_open_focuser(const char *pluginname){
|
||||||
FNAME();
|
FNAME();
|
||||||
void* dlh = open_plugin(pluginname);
|
void* dlh = cc_open_plugin(pluginname);
|
||||||
if(!dlh) return NULL;
|
if(!dlh) return NULL;
|
||||||
cc_Focuser* f = (cc_Focuser*) dlsym(dlh, "focuser");
|
cc_Focuser* f = (cc_Focuser*) dlsym(dlh, "focuser");
|
||||||
if(!f){
|
if(!f){
|
||||||
@@ -445,9 +445,9 @@ cc_Focuser *open_focuser(const char *pluginname){
|
|||||||
}
|
}
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
cc_Camera *open_camera(const char *pluginname){
|
cc_Camera *cc_open_camera(const char *pluginname){
|
||||||
FNAME();
|
FNAME();
|
||||||
void* dlh = open_plugin(pluginname);
|
void* dlh = cc_open_plugin(pluginname);
|
||||||
if(!dlh) return NULL;
|
if(!dlh) return NULL;
|
||||||
cc_Camera *c = (cc_Camera*) dlsym(dlh, "camera");
|
cc_Camera *c = (cc_Camera*) dlsym(dlh, "camera");
|
||||||
if(!c){
|
if(!c){
|
||||||
@@ -456,9 +456,9 @@ cc_Camera *open_camera(const char *pluginname){
|
|||||||
}
|
}
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
cc_Wheel *open_wheel(const char *pluginname){
|
cc_Wheel *cc_open_wheel(const char *pluginname){
|
||||||
FNAME();
|
FNAME();
|
||||||
void* dlh = open_plugin(pluginname);
|
void* dlh = cc_open_plugin(pluginname);
|
||||||
if(!dlh) return NULL;
|
if(!dlh) return NULL;
|
||||||
cc_Wheel *w = (cc_Wheel*) dlsym(dlh, "wheel");
|
cc_Wheel *w = (cc_Wheel*) dlsym(dlh, "wheel");
|
||||||
if(!w){
|
if(!w){
|
||||||
@@ -768,6 +768,26 @@ cc_hresult cc_getfloat(int fd, cc_strbuff *cbuf, const char *cmd, float *val){
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief cc_addrecord - add pre-formated record to FITS file
|
||||||
|
* @param fp - pointer to FITS file
|
||||||
|
* @param rec - record to add
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
int cc_addrecord(fitsfile *fp, char *rec){
|
||||||
|
if(!fp || !rec) return -1;
|
||||||
|
char key[FLEN_KEYWORD];
|
||||||
|
char *eq = strchr(rec, '=');
|
||||||
|
int status = 0;
|
||||||
|
if(eq){ // found 'key = value / comment'
|
||||||
|
size_t l = eq - rec;
|
||||||
|
if(l > FLEN_KEYWORD-1) l = FLEN_KEYWORD-1;
|
||||||
|
memcpy(key, rec, l); key[l] = 0;
|
||||||
|
fits_update_card(fp, key, rec, &status);
|
||||||
|
}else fits_write_record(fp, rec, &status);
|
||||||
|
if(status) fits_report_error(stderr, status);
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
// get next record from external buffer, newlines==1 if every record ends with '\n'
|
// get next record from external buffer, newlines==1 if every record ends with '\n'
|
||||||
char *cc_nextkw(char *buf, char record[FLEN_CARD], int newlines){
|
char *cc_nextkw(char *buf, char record[FLEN_CARD], int newlines){
|
||||||
@@ -787,12 +807,12 @@ char *cc_nextkw(char *buf, char record[FLEN_CARD], int newlines){
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief cc_kwfromfile - add records from file
|
* @brief cc_kwfromfile - add records from file
|
||||||
* @param img - buffer to add
|
* @param fp - FITS file
|
||||||
* @param filename - file name with FITS headers ('\n'-terminated or by 80 chars)
|
* @param filename - file name with FITS headers ('\n'-terminated or by 80 chars)
|
||||||
* @return amount of bytes added
|
* @return amount of records added
|
||||||
*/
|
*/
|
||||||
size_t cc_kwfromfile(cc_IMG *img, char *filename){
|
int cc_kwfromfile(fitsfile *fp, char *filename){
|
||||||
if(!img) return 0;
|
if(!fp || !filename) return 0;
|
||||||
sl_mmapbuf_t *buf = sl_mmap(filename);
|
sl_mmapbuf_t *buf = sl_mmap(filename);
|
||||||
if(!buf || buf->len < 1){
|
if(!buf || buf->len < 1){
|
||||||
WARNX(_("Can't add FITS records from file %s"), filename);
|
WARNX(_("Can't add FITS records from file %s"), filename);
|
||||||
@@ -805,7 +825,7 @@ size_t cc_kwfromfile(cc_IMG *img, char *filename){
|
|||||||
if(x && (x - data) < FLEN_CARD){ // we found newline -> this is a format with newlines
|
if(x && (x - data) < FLEN_CARD){ // we found newline -> this is a format with newlines
|
||||||
newlines = 1;
|
newlines = 1;
|
||||||
}
|
}
|
||||||
size_t written = 0;
|
int written = 0;
|
||||||
do{
|
do{
|
||||||
data = cc_nextkw(data, rec, newlines);
|
data = cc_nextkw(data, rec, newlines);
|
||||||
if(data > eodata) break;
|
if(data > eodata) break;
|
||||||
@@ -813,10 +833,7 @@ size_t cc_kwfromfile(cc_IMG *img, char *filename){
|
|||||||
fits_parse_template(rec, card, &kt, &status);
|
fits_parse_template(rec, card, &kt, &status);
|
||||||
if(status) fits_report_error(stderr, status);
|
if(status) fits_report_error(stderr, status);
|
||||||
else{
|
else{
|
||||||
if(img->headerstrings < FITS_HEADER_STRINGS_MAX){
|
if(0 == cc_addrecord(fp, card)) ++written;
|
||||||
++written;
|
|
||||||
snprintf(img->fitsheader[img->headerstrings++], FLEN_CARD, "%s", card);
|
|
||||||
}else break;
|
|
||||||
}
|
}
|
||||||
}while(data && *data);
|
}while(data && *data);
|
||||||
sl_munmap(buf);
|
sl_munmap(buf);
|
||||||
@@ -1059,6 +1076,7 @@ int cc_copyimage(cc_IMG *dest, cc_IMG *src, int isshm){
|
|||||||
}
|
}
|
||||||
DBG("Lock");
|
DBG("Lock");
|
||||||
pthread_mutex_lock(&dest->mutex);
|
pthread_mutex_lock(&dest->mutex);
|
||||||
|
dest->MAGICK = CC_SHM_MAGIC;
|
||||||
if(!dest->data || dest->datasize < src->bytelen){
|
if(!dest->data || dest->datasize < src->bytelen){
|
||||||
size_t newsz = 1024 * (1 + src->bytelen / 1024);
|
size_t newsz = 1024 * (1 + src->bytelen / 1024);
|
||||||
DBG("resize from %zd to %zd bytes", dest->datasize, newsz);
|
DBG("resize from %zd to %zd bytes", dest->datasize, newsz);
|
||||||
@@ -1073,7 +1091,8 @@ int cc_copyimage(cc_IMG *dest, cc_IMG *src, int isshm){
|
|||||||
dest->datasize = newsz;
|
dest->datasize = newsz;
|
||||||
DBG("Success");
|
DBG("Success");
|
||||||
}
|
}
|
||||||
DBG("Copy fields");
|
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;
|
#define COPY(field) dest->field = src->field;
|
||||||
COPY(timestamp);
|
COPY(timestamp);
|
||||||
COPY(bitpix);
|
COPY(bitpix);
|
||||||
@@ -1081,7 +1100,21 @@ int cc_copyimage(cc_IMG *dest, cc_IMG *src, int isshm){
|
|||||||
COPY(h);
|
COPY(h);
|
||||||
COPY(bytelen);
|
COPY(bytelen);
|
||||||
COPY(imnumber);
|
COPY(imnumber);
|
||||||
|
COPY(pixel_x);
|
||||||
|
COPY(pixel_y);
|
||||||
|
COPY(gain);
|
||||||
|
COPY(ccd_temp);
|
||||||
|
COPY(exposure_time);
|
||||||
|
COPY(bin_x);
|
||||||
|
COPY(bin_y);
|
||||||
#undef COPY
|
#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 *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);
|
DBG("Copy %zd bytes of data", src->bytelen);
|
||||||
void *srcdata = src->data;
|
void *srcdata = src->data;
|
||||||
if(isshm){
|
if(isshm){
|
||||||
|
|||||||
60
ccdcapture.h
60
ccdcapture.h
@@ -33,10 +33,28 @@
|
|||||||
// semaphore for SHM protection
|
// semaphore for SHM protection
|
||||||
#define SEM_NAME "ccdcapture"
|
#define SEM_NAME "ccdcapture"
|
||||||
|
|
||||||
|
#define MODELNM_SZ 64
|
||||||
|
|
||||||
|
typedef union{
|
||||||
|
struct{
|
||||||
|
uint8_t dark : 1; // dark or light frame?
|
||||||
|
uint8_t havefocuser:1; // we have focuser device
|
||||||
|
uint8_t havewheel : 1; // have wheel device (TODO: what if we have more than one wheel?)
|
||||||
|
};
|
||||||
|
uint8_t all;
|
||||||
|
} camflags_t;
|
||||||
|
|
||||||
|
// format of single frame
|
||||||
|
typedef struct{
|
||||||
|
int w; int h; // width & height
|
||||||
|
int xoff; int yoff; // X and Y offset
|
||||||
|
} cc_frameformat;
|
||||||
|
|
||||||
// base image parameters - sent by socket and stored in shared memory
|
// base image parameters - sent by socket and stored in shared memory
|
||||||
typedef struct{ // __attribute__((packed))
|
typedef struct { // __attribute__((packed))
|
||||||
uint32_t MAGICK; // magick (DEADBEEF) - to mark our shm
|
uint32_t MAGICK; // magick (DEADBEEF) - to mark our shm
|
||||||
pthread_mutex_t mutex; // mutex for working with image data
|
pthread_mutex_t mutex; // mutex for working with image data
|
||||||
|
uint8_t start_of_copyable_data; // service field - start of copyable data
|
||||||
double timestamp; // timestamp of image taken
|
double timestamp; // timestamp of image taken
|
||||||
int w, h; // image size
|
int w, h; // image size
|
||||||
int gotstat; // stat counted
|
int gotstat; // stat counted
|
||||||
@@ -46,10 +64,27 @@ typedef struct{ // __attribute__((packed))
|
|||||||
uint8_t bitpix; // bits per pixel (8 or 16)
|
uint8_t bitpix; // bits per pixel (8 or 16)
|
||||||
uint16_t max, min; // min/max values
|
uint16_t max, min; // min/max values
|
||||||
float avr, std; // statistics
|
float avr, std; // statistics
|
||||||
size_t headerstrings; // amount of records in header
|
// camera data (nan for float if camera have no such property)
|
||||||
|
camflags_t flags; // flags
|
||||||
|
float pixel_x, pixel_y; // pixel size, mkm
|
||||||
|
float gain, brightness; // current gain & brightness config
|
||||||
|
float ccd_temp; // cold side temperature
|
||||||
|
float tbody, thot; // camera body & hot Peltier temperatures
|
||||||
|
float exposure_time; // exposure time of given frame
|
||||||
|
uint16_t bin_x, bin_y; // binning
|
||||||
|
char model[MODELNM_SZ]; // camera model
|
||||||
|
cc_frameformat field, array, geometry; // copy of same `camera` fields
|
||||||
|
// focuser data
|
||||||
|
float focpos, focmin, focmax;// current, minimal and maximal F position
|
||||||
|
float foc_temp; // focuser temperature
|
||||||
|
char fmodel[MODELNM_SZ]; // focuser model
|
||||||
|
// wheel data
|
||||||
|
uint8_t wheelpos, wheelmax; // current and maximal wheel position
|
||||||
|
float wheel_temp; // wheel temperature
|
||||||
|
char wmodel[MODELNM_SZ]; // wheel model
|
||||||
|
uint8_t end_of_copyable_data; // service field - end of copyable data
|
||||||
/* `data` is uint8_t or uint16_t depending on `bitpix` */
|
/* `data` is uint8_t or uint16_t depending on `bitpix` */
|
||||||
void *data; // pointer to data (next byte after this struct) - only for server
|
void *data; // pointer to data (next byte after this struct) - only for server
|
||||||
char fitsheader[FITS_HEADER_STRINGS_MAX][FLEN_CARD]; // FITS-header for given image
|
|
||||||
} cc_IMG;
|
} cc_IMG;
|
||||||
|
|
||||||
typedef struct{
|
typedef struct{
|
||||||
@@ -72,12 +107,6 @@ typedef struct{
|
|||||||
#define cc_buff_trylock(b) pthread_mutex_trylock(&((b)->mutex))
|
#define cc_buff_trylock(b) pthread_mutex_trylock(&((b)->mutex))
|
||||||
#define cc_buff_unlock(b) pthread_mutex_unlock(&((b)->mutex))
|
#define cc_buff_unlock(b) pthread_mutex_unlock(&((b)->mutex))
|
||||||
|
|
||||||
// format of single frame
|
|
||||||
typedef struct{
|
|
||||||
int w; int h; // width & height
|
|
||||||
int xoff; int yoff; // X and Y offset
|
|
||||||
} cc_frameformat;
|
|
||||||
|
|
||||||
typedef enum{
|
typedef enum{
|
||||||
SHUTTER_OPEN, // open shutter now
|
SHUTTER_OPEN, // open shutter now
|
||||||
SHUTTER_CLOSE, // close shutter now
|
SHUTTER_CLOSE, // close shutter now
|
||||||
@@ -264,6 +293,7 @@ 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
|
// FITS file keywords
|
||||||
#define CC_CMD_GETHEADERS "getheaders"
|
#define CC_CMD_GETHEADERS "getheaders"
|
||||||
#define CC_CMD_AUTHOR "author"
|
#define CC_CMD_AUTHOR "author"
|
||||||
@@ -272,6 +302,7 @@ typedef enum{
|
|||||||
#define CC_CMD_OBJECT "object"
|
#define CC_CMD_OBJECT "object"
|
||||||
#define CC_CMD_PROGRAM "program"
|
#define CC_CMD_PROGRAM "program"
|
||||||
#define CC_CMD_OBJTYPE "objtype"
|
#define CC_CMD_OBJTYPE "objtype"
|
||||||
|
#endif
|
||||||
|
|
||||||
// focuser
|
// focuser
|
||||||
#define CC_CMD_FOCLIST "foclist"
|
#define CC_CMD_FOCLIST "foclist"
|
||||||
@@ -311,10 +342,10 @@ typedef struct{ // custom plugin parameters
|
|||||||
|
|
||||||
cc_hresult cc_plugin_customcmd(const char *str, cc_parhandler_t *handlers, cc_charbuff *ans);
|
cc_hresult cc_plugin_customcmd(const char *str, cc_parhandler_t *handlers, cc_charbuff *ans);
|
||||||
|
|
||||||
void *open_plugin(const char *name);
|
void *cc_open_plugin(const char *name);
|
||||||
cc_Focuser *open_focuser(const char *pluginname);
|
cc_Focuser *cc_open_focuser(const char *pluginname);
|
||||||
cc_Camera *open_camera(const char *pluginname);
|
cc_Camera *cc_open_camera(const char *pluginname);
|
||||||
cc_Wheel *open_wheel(const char *pluginname);
|
cc_Wheel *cc_open_wheel(const char *pluginname);
|
||||||
|
|
||||||
cc_charbuff *cc_charbufnew();
|
cc_charbuff *cc_charbufnew();
|
||||||
int cc_charbuftest(cc_charbuff *b, size_t maxsize);
|
int cc_charbuftest(cc_charbuff *b, size_t maxsize);
|
||||||
@@ -351,8 +382,9 @@ cc_hresult cc_getint(int fd, cc_strbuff *cbuf, const char *cmd, int *val);
|
|||||||
cc_hresult cc_setfloat(int fd, cc_strbuff *cbuf, const char *cmd, float val);
|
cc_hresult cc_setfloat(int fd, cc_strbuff *cbuf, const char *cmd, float val);
|
||||||
cc_hresult cc_getfloat(int fd, cc_strbuff *cbuf, const char *cmd, float *val);
|
cc_hresult cc_getfloat(int fd, cc_strbuff *cbuf, const char *cmd, float *val);
|
||||||
|
|
||||||
|
int cc_addrecord(fitsfile *fp, char *rec);
|
||||||
char *cc_nextkw(char *buf, char record[FLEN_CARD], int newlines);
|
char *cc_nextkw(char *buf, char record[FLEN_CARD], int newlines);
|
||||||
size_t cc_kwfromfile(cc_IMG *img, char *filename);
|
int cc_kwfromfile(fitsfile *fp, char *filename);
|
||||||
//int cc_charbuf2kw(cc_charbuff *b, fitsfile *f);
|
//int cc_charbuf2kw(cc_charbuff *b, fitsfile *f);
|
||||||
|
|
||||||
void cc_init_sem(int isserver);
|
void cc_init_sem(int isserver);
|
||||||
|
|||||||
302
ccdfunc.c
302
ccdfunc.c
@@ -37,6 +37,9 @@ cc_Camera *camera = NULL;
|
|||||||
cc_Focuser *focuser = NULL;
|
cc_Focuser *focuser = NULL;
|
||||||
cc_Wheel *wheel = NULL;
|
cc_Wheel *wheel = NULL;
|
||||||
|
|
||||||
|
static float focmaxpos = 0.f, focminpos = 0.f; // focuser extremal positions
|
||||||
|
static int wmaxpos = 0; // wheel max pos
|
||||||
|
|
||||||
static int fitserror = 0;
|
static int fitserror = 0;
|
||||||
|
|
||||||
#define TRYFITS(f, ...) \
|
#define TRYFITS(f, ...) \
|
||||||
@@ -63,8 +66,8 @@ static size_t curtime(char *s_time){ // current date/time
|
|||||||
|
|
||||||
// check if I can create file prefix_XXXX.fits
|
// check if I can create file prefix_XXXX.fits
|
||||||
static int check_filenameprefix(char *buff, int buflen){
|
static int check_filenameprefix(char *buff, int buflen){
|
||||||
for(int num = 1; num < 10000; num++){
|
for(int num = 1; num < 1000000; num++){
|
||||||
if(snprintf(buff, buflen-1, "%s_%04d.fits", GP->outfileprefix, num) < 1)
|
if(snprintf(buff, buflen-1, "%s_%06d.fits", GP->outfileprefix, num) < 1)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
struct stat filestat;
|
struct stat filestat;
|
||||||
if(stat(buff, &filestat)) // no such file or can't stat()
|
if(stat(buff, &filestat)) // no such file or can't stat()
|
||||||
@@ -73,6 +76,7 @@ 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
|
* @brief fillFITSheader (server-side only!) - update img->fitsheader by image data and additional headers
|
||||||
* @param img (io) - image to update
|
* @param img (io) - image to update
|
||||||
@@ -86,7 +90,7 @@ size_t fillFITSheader(cc_IMG *img){
|
|||||||
do{ int status = 0, kt = 0; \
|
do{ int status = 0, kt = 0; \
|
||||||
fits_parse_template(in, card, &kt, &status); \
|
fits_parse_template(in, card, &kt, &status); \
|
||||||
if(status) fits_report_error(stderr, status);\
|
if(status) fits_report_error(stderr, status);\
|
||||||
else if(img->headerstrings < FITS_HEADER_STRINGS_MAX) snprintf(img->fitsheader[img->headerstrings++], FLEN_CARD, "%s", card); \
|
else addrecord(fp, card); \
|
||||||
}while(0)
|
}while(0)
|
||||||
#define FORMINT(key, val, comment) do{ \
|
#define FORMINT(key, val, comment) do{ \
|
||||||
snprintf(templ, FLEN_CARD, "%s = %d / %s", key, val, comment); \
|
snprintf(templ, FLEN_CARD, "%s = %d / %s", key, val, comment); \
|
||||||
@@ -190,13 +194,17 @@ do{ int status = 0, kt = 0; \
|
|||||||
if(GP->instrument) FORMSTR("INSTRUME", GP->instrument, "Instrument");
|
if(GP->instrument) FORMSTR("INSTRUME", GP->instrument, "Instrument");
|
||||||
return img->headerstrings;
|
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
|
||||||
int saveFITS(cc_IMG *img, char **outp){
|
int saveFITS(cc_IMG *img, char **outp){
|
||||||
int ret = FALSE;
|
int ret = FALSE;
|
||||||
if(!img || !img->data || !outp) return FALSE;
|
if(!img || !img->data){
|
||||||
|
WARNX("Bad data");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
char fnam[PATH_MAX+1];
|
char fnam[PATH_MAX+1];
|
||||||
if(!GP->outfile && !GP->outfileprefix){
|
if(!GP->outfile && !GP->outfileprefix){
|
||||||
LOGWARN("Image not saved: neither filename nor filename prefix pointed");
|
LOGWARN("Image not saved: neither filename nor filename prefix pointed");
|
||||||
@@ -216,17 +224,19 @@ int saveFITS(cc_IMG *img, char **outp){
|
|||||||
}
|
}
|
||||||
snprintf(fnam, PATH_MAX, "!%s", GP->outfile);
|
snprintf(fnam, PATH_MAX, "!%s", GP->outfile);
|
||||||
}
|
}
|
||||||
|
DBG("Will save as %s", GP->outfile);
|
||||||
}else{ // user pointed output file prefix
|
}else{ // user pointed output file prefix
|
||||||
if(!check_filenameprefix(fnam, PATH_MAX)){
|
if(!check_filenameprefix(fnam, PATH_MAX)){
|
||||||
WARNX(_("Can't save file with prefix %s"), GP->outfileprefix);
|
WARNX(_("Can't save file with prefix %s"), GP->outfileprefix);
|
||||||
LOGERR("Can't save image with prefix %s", GP->outfileprefix);
|
LOGERR("Can't save image with prefix %s", GP->outfileprefix);
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
DBG("Will save with prefix %s", GP->outfileprefix);
|
||||||
}
|
}
|
||||||
pthread_mutex_lock(&img->mutex);
|
pthread_mutex_lock(&img->mutex);
|
||||||
int width = img->w, height = img->h;
|
int width = img->w, height = img->h;
|
||||||
long naxes[2] = {width, height};
|
long naxes[2] = {width, height};
|
||||||
struct tm *tm_time;
|
struct tm *tm_time;
|
||||||
char bufc[FLEN_CARD];
|
|
||||||
double dsavetime = sl_dtime();
|
double dsavetime = sl_dtime();
|
||||||
time_t savetime = time(NULL);
|
time_t savetime = time(NULL);
|
||||||
fitsfile *fp;
|
fitsfile *fp;
|
||||||
@@ -238,19 +248,113 @@ int saveFITS(cc_IMG *img, char **outp){
|
|||||||
else TRYFITS(fits_create_img, fp, USHORT_IMG, 2, naxes);
|
else TRYFITS(fits_create_img, fp, USHORT_IMG, 2, naxes);
|
||||||
if(fitserror) goto cloerr;
|
if(fitserror) goto cloerr;
|
||||||
// write header
|
// write header
|
||||||
char key[FLEN_KEYWORD];
|
char card[FLEN_CARD], templ[2*FLEN_CARD], bufc[FLEN_CARD];
|
||||||
for(size_t i = 0; i < img->headerstrings; ++i){
|
calculate_stat(img);
|
||||||
char *rec = img->fitsheader[i];
|
#define FORMKW(in) \
|
||||||
char *eq = strchr(rec, '=');
|
do{ int status = 0, kt = 0; \
|
||||||
int status = 0;
|
fits_parse_template(in, card, &kt, &status); \
|
||||||
if(eq){ // found 'key = value / comment'
|
if(status) fits_report_error(stderr, status);\
|
||||||
size_t l = eq - rec;
|
else cc_addrecord(fp, card); \
|
||||||
if(l > FLEN_KEYWORD-1) l = FLEN_KEYWORD-1;
|
}while(0)
|
||||||
memcpy(key, rec, l); key[l] = 0;
|
#define FORMINT(key, val, comment) do{ \
|
||||||
fits_update_card(fp, key, rec, &status);
|
snprintf(templ, FLEN_CARD, "%s = %d / %s", key, val, comment); \
|
||||||
}else fits_write_record(fp, rec, &status);
|
FORMKW(templ); \
|
||||||
if(status) fits_report_error(stderr, status);
|
}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)
|
||||||
|
|
||||||
|
FORMKW("ORIGIN = 'SAO RAS' / Organization responsible for the data");
|
||||||
|
FORMKW("OBSERVAT = 'Special Astrophysical Observatory, Russia' / Observatory name");
|
||||||
|
if(img->model[0]) FORMSTR("DETECTOR", img->model, "Detector model");
|
||||||
|
if(GP->instrument) FORMSTR("INSTRUME", GP->instrument, "Instrument");
|
||||||
|
else FORMKW("INSTRUME = 'direct imaging' / Instrument");
|
||||||
|
FORMFLT("EXPTIME", img->exposure_time, "Actual exposition time (sec)");
|
||||||
|
// BINNING / Binning
|
||||||
|
snprintf(templ, FLEN_CARD, "BINNING = '%d x %d' / Binning (hbin x vbin)", img->bin_x, img->bin_y);
|
||||||
|
FORMKW(templ);
|
||||||
|
FORMINT("XBINNING", img->bin_x, "Binning factor used on X axis");
|
||||||
|
FORMINT("YBINNING", img->bin_y, "Binning factor used on Y axis");
|
||||||
|
// pixel size
|
||||||
|
if(!isnan(img->pixel_x)){
|
||||||
|
FORMFLT("PIXSIZEX", img->pixel_x, "Pixel size X (um)");
|
||||||
|
if(!isnan(img->pixel_y)){
|
||||||
|
FORMFLT("PIXSIZEY", img->pixel_y, "Pixel size Y (um)");
|
||||||
|
snprintf(templ, FLEN_CARD, "PIXSIZE = '%.1f x %.1f' / Pixel size (h x v), um", img->pixel_x, img->pixel_y);
|
||||||
|
FORMKW(templ);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
// imtype
|
||||||
|
if(img->flags.dark) sprintf(bufc, "dark");
|
||||||
|
else if(GP->objtype) strncpy(bufc, GP->objtype, FLEN_CARD);
|
||||||
|
else sprintf(bufc, "light");
|
||||||
|
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);
|
||||||
|
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);
|
||||||
|
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);
|
||||||
|
FORMKW(templ);
|
||||||
|
FORMINT("X0", img->geometry.xoff, "Subframe left border without binning");
|
||||||
|
FORMINT("Y0", img->geometry.yoff, "Subframe upper border without binning");
|
||||||
|
// stat
|
||||||
|
FORMINT("DATAMIN", 0, "Min pixel value");
|
||||||
|
FORMINT("DATAMAX", (1<<img->bitpix) - 1, "Max pixel value");
|
||||||
|
if(img->gotstat){
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
// camera parameters
|
||||||
|
if(!isnan(img->gain)) FORMFLT("CAMGAIN", img->gain, "CMOS gain value");
|
||||||
|
if(!isnan(img->brightness)) FORMFLT("CAMBRIGH", img->brightness, "CMOS brightness value");
|
||||||
|
if(!isnan(img->ccd_temp)) FORMFLT("CAMTEMP", img->ccd_temp, "Camera temperature at exp. end, degr C");
|
||||||
|
if(!isnan(img->tbody)) FORMFLT("BODYTEMP", img->tbody, "Camera body temperature at exp. end, degr C");
|
||||||
|
if(!isnan(img->thot)) FORMFLT("HOTTEMP", img->thot, "Camera peltier hot side temperature at exp. end, degr C");
|
||||||
|
// wheel
|
||||||
|
if(img->flags.havewheel){
|
||||||
|
if(img->wmodel[0]) FORMSTR("WHEEL", img->wmodel, "Filter wheel model");
|
||||||
|
if(img->wheelmax > 0) FORMINT("FILTMAX", img->wheelmax, "Amount of filter positions");
|
||||||
|
FORMINT("FILTER", img->wheelpos, "Current filter position");
|
||||||
|
if(!isnan(img->wheel_temp)) FORMFLT("FILTTEMP", img->wheel_temp, "Filter wheel body temperature, degr C");
|
||||||
|
}
|
||||||
|
// focuser
|
||||||
|
if(img->flags.havefocuser){
|
||||||
|
if(img->fmodel[0]) FORMSTR("FOCUSER", img->fmodel, "Focuser model");
|
||||||
|
if(!isnan(img->focpos)) FORMFLT("FOCUS", img->focpos, "Current focuser position, mm");
|
||||||
|
if(!isnan(img->focmin)) FORMFLT("FOCMIN", img->focmin, "Minimal focuser position, mm");
|
||||||
|
if(!isnan(img->focmax)) FORMFLT("FOCMAX", img->focmax, "Maximal focuser position, mm");
|
||||||
|
if(!isnan(img->foc_temp)) FORMFLT("FOCTEMP", img->foc_temp, "Focuser body temperature, degr C");
|
||||||
|
}
|
||||||
|
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");
|
||||||
|
|
||||||
|
if(GP->addhdr){ // add records from server-side files
|
||||||
|
char **nxtfile = GP->addhdr;
|
||||||
|
while(*nxtfile){
|
||||||
|
int got = cc_kwfromfile(fp, *nxtfile);
|
||||||
|
if(got == 0) WARNX(_("Added 0 FITS records from %s"), *nxtfile);
|
||||||
|
else verbose(VERBOSE_SECONDARY, _("Added %d FITS records from %s"), got, *nxtfile);
|
||||||
|
++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");
|
||||||
|
|
||||||
// creation date/time
|
// creation date/time
|
||||||
int s = 0;
|
int s = 0;
|
||||||
fits_write_date(fp, &s);
|
fits_write_date(fp, &s);
|
||||||
@@ -274,9 +378,8 @@ 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);
|
||||||
if(fitserror) goto cloerr;
|
|
||||||
TRYFITS(fits_close_file, fp);
|
|
||||||
cloerr:
|
cloerr:
|
||||||
|
TRYFITS(fits_close_file, fp);
|
||||||
pthread_mutex_unlock(&img->mutex);
|
pthread_mutex_unlock(&img->mutex);
|
||||||
if(fitserror == 0){
|
if(fitserror == 0){
|
||||||
LOGMSG("Save file '%s'", fnam);
|
LOGMSG("Save file '%s'", fnam);
|
||||||
@@ -289,7 +392,7 @@ cloerr:
|
|||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
}else{
|
}else{
|
||||||
LOGERR("Can't save %s", fnam);
|
LOGERR("Can't save %s", fnam);
|
||||||
WARNX(_("Error saving file"));
|
WARNX(_("Error saving file %s"), fnam);
|
||||||
fitserror = 0;
|
fitserror = 0;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@@ -357,7 +460,7 @@ cc_Focuser *startFocuser(){
|
|||||||
return NULL;
|
return NULL;
|
||||||
}else{
|
}else{
|
||||||
char *plugin = GP->commondev ? GP->commondev : GP->focuserdev;
|
char *plugin = GP->commondev ? GP->commondev : GP->focuserdev;
|
||||||
if(!(focuser = open_focuser(plugin))) return NULL;
|
if(!(focuser = cc_open_focuser(plugin))) return NULL;
|
||||||
}
|
}
|
||||||
if(!focuser->check()){
|
if(!focuser->check()){
|
||||||
verbose(VERBOSE_MESG, _("No focusers found"));
|
verbose(VERBOSE_MESG, _("No focusers found"));
|
||||||
@@ -367,6 +470,38 @@ cc_Focuser *startFocuser(){
|
|||||||
return focuser;
|
return focuser;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief setFocuserNo - set active focuser device number
|
||||||
|
* @param num - new number
|
||||||
|
* @param min (o) - minimal position
|
||||||
|
* @param max (o) - maximal position
|
||||||
|
* @return FALSE if failed
|
||||||
|
*/
|
||||||
|
int setFocuserNo(int num, float *min, float *max){
|
||||||
|
if(!focuser) return FALSE;
|
||||||
|
if(num < 0) num = 0;
|
||||||
|
if(num > focuser->Ndevices - 1){
|
||||||
|
WARNX(_("Found %d focusers, you point number %d"), focuser->Ndevices, num);
|
||||||
|
LOGERR("Found %d focusers, user pointed number %d", focuser->Ndevices, num);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if(!focuser->setDevNo(num)){
|
||||||
|
WARNX(_("Can't set active focuser number"));
|
||||||
|
LOGERR("Can't set active focuser number");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
LOGMSG("Set focuser device number to %d", num);
|
||||||
|
if(!focuser->getMinPos || !focuser->getMinPos(&focminpos) ||
|
||||||
|
!focuser->getMaxPos || !focuser->getMaxPos(&focmaxpos)){
|
||||||
|
WARNX(_("Can't get focuser limit positions"));
|
||||||
|
LOGWARN("Can't get focuser limit positions");
|
||||||
|
}else{
|
||||||
|
if(min) *min = focminpos;
|
||||||
|
if(max) *max = focmaxpos;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
void focclose(){
|
void focclose(){
|
||||||
if(!focuser) return;
|
if(!focuser) return;
|
||||||
focuser->close();
|
focuser->close();
|
||||||
@@ -387,16 +522,7 @@ void focusers(){
|
|||||||
verbose(VERBOSE_PRIMARY, _("Found focuser #%d: %s\n"), i, modname);
|
verbose(VERBOSE_PRIMARY, _("Found focuser #%d: %s\n"), i, modname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int num = GP->focdevno;
|
if(!setFocuserNo(GP->focdevno, NULL, NULL)) goto retn;
|
||||||
if(num < 0) num = 0;
|
|
||||||
if(num > focuser->Ndevices - 1){
|
|
||||||
WARNX(_("Found %d focusers, you point number %d"), focuser->Ndevices, num);
|
|
||||||
goto retn;
|
|
||||||
}
|
|
||||||
if(!focuser->setDevNo(num)){
|
|
||||||
WARNX(_("Can't set active focuser number"));
|
|
||||||
goto retn;
|
|
||||||
}
|
|
||||||
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);
|
||||||
@@ -406,14 +532,10 @@ void focusers(){
|
|||||||
verbose(VERBOSE_PRIMARY, "FOCTEMP=%.1f", t);
|
verbose(VERBOSE_PRIMARY, "FOCTEMP=%.1f", t);
|
||||||
DBG("FOCTEMP=%.1f", t);
|
DBG("FOCTEMP=%.1f", t);
|
||||||
}
|
}
|
||||||
float minpos, maxpos, curpos;
|
verbose(VERBOSE_PRIMARY, "FOCMINPOS=%g", focminpos);
|
||||||
if(!focuser->getMinPos(&minpos) || !focuser->getMaxPos(&maxpos)){
|
verbose(VERBOSE_PRIMARY, "FOCMAXPOS=%g", focmaxpos);
|
||||||
WARNX(_("Can't get focuser limit positions"));
|
float curpos;
|
||||||
goto retn;
|
DBG("FOCMINPOS=%g, FOCMAXPOS=%g", focminpos, focmaxpos);
|
||||||
}
|
|
||||||
verbose(VERBOSE_PRIMARY, "FOCMINPOS=%g", minpos);
|
|
||||||
verbose(VERBOSE_PRIMARY, "FOCMAXPOS=%g", maxpos);
|
|
||||||
DBG("FOCMINPOS=%g, FOCMAXPOS=%g", minpos, maxpos);
|
|
||||||
if(!focuser->getPos(&curpos)){
|
if(!focuser->getPos(&curpos)){
|
||||||
WARNX(_("Can't get current focuser position"));
|
WARNX(_("Can't get current focuser position"));
|
||||||
goto retn;
|
goto retn;
|
||||||
@@ -428,11 +550,11 @@ void focusers(){
|
|||||||
tagpos = curpos + GP->addsteps;
|
tagpos = curpos + GP->addsteps;
|
||||||
}
|
}
|
||||||
DBG("tagpos: %g", tagpos);
|
DBG("tagpos: %g", tagpos);
|
||||||
if(tagpos < minpos || tagpos > maxpos){
|
if(tagpos < focminpos || tagpos > focmaxpos){
|
||||||
WARNX(_("Can't set position %g: out of limits [%g, %g]"), tagpos, minpos, maxpos);
|
WARNX(_("Can't set position %g: out of limits [%g, %g]"), tagpos, focminpos, focmaxpos);
|
||||||
goto retn;
|
goto retn;
|
||||||
}
|
}
|
||||||
if(tagpos - minpos < __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);
|
||||||
@@ -447,7 +569,7 @@ cc_Wheel *startWheel(){
|
|||||||
return NULL;
|
return NULL;
|
||||||
}else{
|
}else{
|
||||||
char *plugin = GP->commondev ? GP->commondev : GP->wheeldev;
|
char *plugin = GP->commondev ? GP->commondev : GP->wheeldev;
|
||||||
if(!(wheel = open_wheel(plugin))) return NULL;
|
if(!(wheel = cc_open_wheel(plugin))) return NULL;
|
||||||
}
|
}
|
||||||
if(!wheel->check()){
|
if(!wheel->check()){
|
||||||
verbose(VERBOSE_MESG, _("No wheels found"));
|
verbose(VERBOSE_MESG, _("No wheels found"));
|
||||||
@@ -457,6 +579,35 @@ cc_Wheel *startWheel(){
|
|||||||
return wheel;
|
return wheel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief setWheelNo - set number of active wheel
|
||||||
|
* @param num - number
|
||||||
|
* @param max (o) - if !NULL - maxpos
|
||||||
|
* @return FALSE if failed
|
||||||
|
*/
|
||||||
|
int setWheelNo(int num, int *max){
|
||||||
|
if(!wheel) return FALSE;
|
||||||
|
if(num < 0) num = 0;
|
||||||
|
if(num > wheel->Ndevices - 1){
|
||||||
|
WARNX(_("Found %d wheels, you point number %d"), wheel->Ndevices, num);
|
||||||
|
LOGERR("Found %d wheels, user pointed number %d", wheel->Ndevices, num);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if(!wheel->setDevNo(num)){
|
||||||
|
WARNX(_("Can't set active wheel number"));
|
||||||
|
LOGERR("Can't set active wheel number");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
LOGMSG("Set wheel device number to %d", num);
|
||||||
|
if(!wheel->getMaxPos || !wheel->getMaxPos(&wmaxpos)){
|
||||||
|
WARNX(_("Can't get max wheel position"));
|
||||||
|
LOGERR("Can't get max wheel position");
|
||||||
|
}else{
|
||||||
|
if(max) *max = wmaxpos;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
void closewheel(){
|
void closewheel(){
|
||||||
if(!wheel) return;
|
if(!wheel) return;
|
||||||
wheel->close();
|
wheel->close();
|
||||||
@@ -477,16 +628,7 @@ void wheels(){
|
|||||||
verbose(VERBOSE_PRIMARY, _("Found wheel #%d: %s\n"), i, modname);
|
verbose(VERBOSE_PRIMARY, _("Found wheel #%d: %s\n"), i, modname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int num = GP->whldevno;
|
if(!setWheelNo(GP->whldevno, NULL)) goto retn;
|
||||||
if(num < 0) num = 0;
|
|
||||||
if(num > wheel->Ndevices - 1){
|
|
||||||
WARNX(_("Found %d wheels, you point number %d"), wheel->Ndevices, num);
|
|
||||||
goto retn;
|
|
||||||
}
|
|
||||||
if(!wheel->setDevNo(num)){
|
|
||||||
WARNX(_("Can't set active wheel number"));
|
|
||||||
goto retn;
|
|
||||||
}
|
|
||||||
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);
|
||||||
@@ -495,19 +637,15 @@ void wheels(){
|
|||||||
if(wheel->getTbody(&t)){
|
if(wheel->getTbody(&t)){
|
||||||
verbose(VERBOSE_PRIMARY, "WHEELTEMP=%.1f", t);
|
verbose(VERBOSE_PRIMARY, "WHEELTEMP=%.1f", t);
|
||||||
}
|
}
|
||||||
int pos, maxpos;
|
int pos;
|
||||||
if(wheel->getPos(&pos)){
|
if(wheel->getPos(&pos)){
|
||||||
verbose(VERBOSE_PRIMARY, "WHEELPOS=%d", pos);
|
verbose(VERBOSE_PRIMARY, "WHEELPOS=%d", pos);
|
||||||
}else WARNX(_("Can't get current wheel position"));
|
}else WARNX(_("Can't get current wheel position"));
|
||||||
if(!wheel->getMaxPos(&maxpos)){
|
verbose(VERBOSE_PRIMARY, "WHEELMAXPOS=%d", wmaxpos);
|
||||||
WARNX(_("Can't get max wheel position"));
|
|
||||||
goto retn;
|
|
||||||
}
|
|
||||||
verbose(VERBOSE_PRIMARY, "WHEELMAXPOS=%d", maxpos);
|
|
||||||
pos = GP->setwheel;
|
pos = GP->setwheel;
|
||||||
if(pos == -1) goto retn; // no wheel commands
|
if(pos == -1) goto retn; // no wheel commands
|
||||||
if(pos < 0 || pos > maxpos){
|
if(pos < 0 || pos > wmaxpos){
|
||||||
WARNX(_("Wheel position should be from 0 to %d"), maxpos);
|
WARNX(_("Wheel position should be from 0 to %d"), wmaxpos);
|
||||||
goto retn;
|
goto retn;
|
||||||
}
|
}
|
||||||
if(!wheel->setPos(pos))
|
if(!wheel->setPos(pos))
|
||||||
@@ -551,7 +689,7 @@ cc_Camera *startCCD(){
|
|||||||
return NULL;
|
return NULL;
|
||||||
}else{
|
}else{
|
||||||
char *plugin = GP->commondev ? GP->commondev : GP->cameradev;
|
char *plugin = GP->commondev ? GP->commondev : GP->cameradev;
|
||||||
if(!(camera = open_camera(plugin))) return NULL;
|
if(!(camera = cc_open_camera(plugin))) return NULL;
|
||||||
}
|
}
|
||||||
if(!camera->check()){
|
if(!camera->check()){
|
||||||
WARNX(_("No cameras found"));
|
WARNX(_("No cameras found"));
|
||||||
@@ -753,6 +891,46 @@ retn:
|
|||||||
return rtn;
|
return rtn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void fill_image_fields(cc_IMG *ima){
|
||||||
|
if(!ima) return;
|
||||||
|
ima->gotstat = 0; // fresh image without statistics - recalculate when save
|
||||||
|
ima->timestamp = sl_dtime(); // set timestamp
|
||||||
|
if(!camera->getgain || !camera->getgain(&ima->gain)) ima->gain = NAN;
|
||||||
|
if(!camera->getbrightness || !camera->getbrightness(&ima->brightness)) ima->brightness = NAN;
|
||||||
|
if(!camera->getTcold || !camera->getTcold(&ima->ccd_temp)){
|
||||||
|
DBG("Can't get CCD temperature");
|
||||||
|
ima->ccd_temp = NAN;
|
||||||
|
}else DBG("CCD Temperature=%g", ima->ccd_temp);
|
||||||
|
if(!camera->getTbody || !camera->getTbody(&ima->tbody)){
|
||||||
|
DBG("Can't get body temperature");
|
||||||
|
ima->tbody = NAN;
|
||||||
|
}else DBG("Body Temperature=%g", ima->tbody);
|
||||||
|
if(!camera->getThot || !camera->getThot(&ima->thot)){
|
||||||
|
DBG("Can't get Thot");
|
||||||
|
ima->thot = NAN;
|
||||||
|
}else DBG("Hot Temperature=%g", ima->thot);
|
||||||
|
ima->flags.dark = GP->dark;
|
||||||
|
ima->field = camera->field;
|
||||||
|
ima->array = camera->array;
|
||||||
|
ima->geometry = camera->geometry;
|
||||||
|
DBG("Geom: off(%d, %d), size(%d, %d)", ima->geometry.xoff, ima->geometry.yoff,
|
||||||
|
ima->geometry.w, ima->geometry.h);
|
||||||
|
if(wheel){
|
||||||
|
int i;
|
||||||
|
ima->flags.havewheel = 1;
|
||||||
|
if(wheel->getPos(&i)) ima->wheelpos = (uint8_t) i;
|
||||||
|
ima->wheelmax = wmaxpos;
|
||||||
|
if(!wheel->getTbody || !wheel->getTbody(&ima->wheel_temp)) ima->wheel_temp = NAN;
|
||||||
|
}
|
||||||
|
if(focuser){
|
||||||
|
ima->flags.havefocuser = 1;
|
||||||
|
ima->focmin = focminpos;
|
||||||
|
ima->focmax = focmaxpos;
|
||||||
|
if(!focuser->getPos || !focuser->getPos(&ima->focpos)) ima->focpos = NAN;
|
||||||
|
if(!focuser->getTbody || !focuser->getTbody(&ima->foc_temp)) ima->foc_temp = NAN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Main CCD process in standalone mode without viewer: get N images and save them
|
* Main CCD process in standalone mode without viewer: get N images and save them
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -29,12 +29,15 @@ int saveFITS(cc_IMG *img, char **outp); // for imageview module
|
|||||||
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();
|
||||||
|
|
||||||
cc_Camera *startCCD();
|
cc_Camera *startCCD();
|
||||||
cc_Wheel *startWheel();
|
cc_Wheel *startWheel();
|
||||||
|
int setWheelNo(int num, int *max);
|
||||||
cc_Focuser *startFocuser();
|
cc_Focuser *startFocuser();
|
||||||
|
int setFocuserNo(int num, float *min, float *max);
|
||||||
void focclose();
|
void focclose();
|
||||||
void closewheel();
|
void closewheel();
|
||||||
void closecam();
|
void closecam();
|
||||||
|
|||||||
12
client.c
12
client.c
@@ -263,6 +263,7 @@ 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:
|
// FITS header keywords:
|
||||||
#define CHKHDR(x, cmd) do{if(x) SENDMSG(cmd "=%s", x);}while(0)
|
#define CHKHDR(x, cmd) do{if(x) SENDMSG(cmd "=%s", x);}while(0)
|
||||||
CHKHDR(GP->author, CC_CMD_AUTHOR);
|
CHKHDR(GP->author, CC_CMD_AUTHOR);
|
||||||
@@ -272,6 +273,7 @@ static void send_headers(int sock){
|
|||||||
CHKHDR(GP->prog_id, CC_CMD_PROGRAM);
|
CHKHDR(GP->prog_id, CC_CMD_PROGRAM);
|
||||||
CHKHDR(GP->objtype, CC_CMD_OBJTYPE);
|
CHKHDR(GP->objtype, CC_CMD_OBJTYPE);
|
||||||
#undef CHKHDR
|
#undef CHKHDR
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -407,7 +409,7 @@ static int getsockimage(int *imsock){
|
|||||||
* @param askheader == TRUE for storing FITS-header
|
* @param askheader == TRUE for storing FITS-header
|
||||||
* @return FALSE if failed to catch image
|
* @return FALSE if failed to catch image
|
||||||
*/
|
*/
|
||||||
static int getimage(int askheader){
|
static int getimage(/*int askheader*/){
|
||||||
FNAME();
|
FNAME();
|
||||||
int imsock = -1, shmlocked = FALSE, ret = FALSE;
|
int imsock = -1, shmlocked = FALSE, ret = FALSE;
|
||||||
static double oldtimestamp = -1.;
|
static double oldtimestamp = -1.;
|
||||||
@@ -434,6 +436,7 @@ static int getimage(int askheader){
|
|||||||
oldtimestamp = locima->timestamp;
|
oldtimestamp = locima->timestamp;
|
||||||
atomic_store(&grabno, locima->imnumber);
|
atomic_store(&grabno, locima->imnumber);
|
||||||
TIMESTAMP("Got image #%zd", locima->imnumber);
|
TIMESTAMP("Got image #%zd", locima->imnumber);
|
||||||
|
#if 0
|
||||||
if(askheader){ // read FITS-header for later saving
|
if(askheader){ // read FITS-header for later saving
|
||||||
if(shmima){
|
if(shmima){
|
||||||
if(locima->headerstrings > FITS_HEADER_STRINGS_MAX){
|
if(locima->headerstrings > FITS_HEADER_STRINGS_MAX){
|
||||||
@@ -463,6 +466,7 @@ static int getimage(int askheader){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else locima->headerstrings = 0;
|
}else locima->headerstrings = 0;
|
||||||
|
#endif
|
||||||
}else WARNX(_("Still got old image"));
|
}else WARNX(_("Still got old image"));
|
||||||
eofg:
|
eofg:
|
||||||
if(imsock > -1) close(imsock); // reopen in next time in case of error
|
if(imsock > -1) close(imsock); // reopen in next time in case of error
|
||||||
@@ -549,7 +553,7 @@ void client(int sock){
|
|||||||
if(lastImNo != cur){
|
if(lastImNo != cur){
|
||||||
lastImNo = cur;
|
lastImNo = cur;
|
||||||
verbose(VERBOSE_SECONDARY, _("Frame ready, try to grab"));
|
verbose(VERBOSE_SECONDARY, _("Frame ready, try to grab"));
|
||||||
if(!getimage(TRUE)){
|
if(!getimage(/*TRUE*/)){
|
||||||
WARNX(_("Can't get next image"));
|
WARNX(_("Can't get next image"));
|
||||||
}else{
|
}else{
|
||||||
if(saveFITS(locima, &lastfilename)){
|
if(saveFITS(locima, &lastfilename)){
|
||||||
@@ -640,7 +644,7 @@ static void *grabnext(void _U_ *arg){
|
|||||||
}
|
}
|
||||||
lastImNo = cur;
|
lastImNo = cur;
|
||||||
TIMESTAMP("Frame ready (%d from start)", cur);
|
TIMESTAMP("Frame ready (%d from start)", cur);
|
||||||
getimage(FALSE);
|
getimage(/*FALSE*/);
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -667,7 +671,7 @@ static void *waitimage(void _U_ *arg){
|
|||||||
lastImNo = cur;
|
lastImNo = cur;
|
||||||
TIMESTAMP("End of cycle #%d, start new", cur);
|
TIMESTAMP("End of cycle #%d, start new", cur);
|
||||||
TIMEINIT();
|
TIMEINIT();
|
||||||
getimage(FALSE);
|
getimage(/*FALSE*/);
|
||||||
atomic_store(&expstate, CAMERA_IDLE);
|
atomic_store(&expstate, CAMERA_IDLE);
|
||||||
DBG("Current state: %d", atomic_load(&expstate));
|
DBG("Current state: %d", atomic_load(&expstate));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of the CCD_Capture project.
|
* This file is part of the CCD_Capture project.
|
||||||
* Copyright 2022 Edward V. Emelianov <edward.emelianoff@gmail.com>.
|
* Copyright 2022 Edward V. Emelianov <edward.emelianoff@gmail.com>.
|
||||||
*
|
*
|
||||||
|
|||||||
Binary file not shown.
@@ -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-21 09:39+0300\n"
|
"POT-Creation-Date: 2026-07-23 17:35+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"
|
||||||
@@ -17,57 +17,57 @@ msgstr ""
|
|||||||
"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"
|
||||||
|
|
||||||
#: main.c:52
|
#: main.c:55
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Master killed with sig=%d"
|
msgid "Master killed with sig=%d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. slave: cancel exposition
|
#. slave: cancel exposition
|
||||||
#: main.c:57
|
#: main.c:60
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Get signal %d - exit"
|
msgid "Get signal %d - exit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: main.c:88
|
#: main.c:91
|
||||||
msgid "Can't use outfile name and prefix together"
|
msgid "Can't use outfile name and prefix together"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: main.c:91 ccdfunc.c:214
|
#: main.c:94 ccdfunc.c:222
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "File %s exists!"
|
msgid "File %s exists!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: main.c:94
|
#: main.c:97
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set answer timeout to %g"
|
msgid "Can't set answer timeout to %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: main.c:98
|
#: main.c:101
|
||||||
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:103
|
#: main.c:106
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Wrong port value: %d"
|
msgid "Wrong port value: %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: main.c:116
|
#: main.c:119
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set image port to %s\n"
|
msgid "Set image port to %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: main.c:119
|
#: main.c:122
|
||||||
msgid "Can't be client and standalone in same time!"
|
msgid "Can't be client and standalone in same time!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: main.c:124
|
#: main.c:127
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Log file %s @ level %d\n"
|
msgid "Log file %s @ level %d\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: main.c:126
|
#: main.c:129
|
||||||
msgid "Can't create log file"
|
msgid "Can't create log file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -331,411 +331,422 @@ msgstr ""
|
|||||||
msgid "%d unused parameters:\n"
|
msgid "%d unused parameters:\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:203
|
#: ccdfunc.c:211
|
||||||
msgid "Image not saved: neither filename nor filename prefix pointed"
|
msgid "Image not saved: neither filename nor filename prefix pointed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:221
|
#: ccdfunc.c:230
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't save file with prefix %s"
|
msgid "Can't save file with prefix %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:283
|
#: ccdfunc.c:347
|
||||||
|
#, c-format
|
||||||
|
msgid "Added 0 FITS records from %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:348
|
||||||
|
#, c-format
|
||||||
|
msgid "Added %d FITS records from %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:386
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "File saved as '%s'"
|
msgid "File saved as '%s'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:292
|
#: ccdfunc.c:395
|
||||||
msgid "Error saving file"
|
#, c-format
|
||||||
|
msgid "Error saving file %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:347
|
#: ccdfunc.c:450
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Image stat:\n"
|
msgid "Image stat:\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:356
|
#: ccdfunc.c:459
|
||||||
msgid "Focuser device not pointed"
|
msgid "Focuser device not pointed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:363
|
#: ccdfunc.c:466
|
||||||
msgid "No focusers found"
|
msgid "No focusers found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:387
|
#: ccdfunc.c:484
|
||||||
#, c-format
|
|
||||||
msgid "Found focuser #%d: %s\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:393
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Found %d focusers, you point number %d"
|
msgid "Found %d focusers, you point number %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:397
|
#: ccdfunc.c:489
|
||||||
msgid "Can't set active focuser number"
|
msgid "Can't set active focuser number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:411
|
#: ccdfunc.c:496
|
||||||
msgid "Can't get focuser limit positions"
|
msgid "Can't get focuser limit positions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:418
|
#: ccdfunc.c:522
|
||||||
|
#, c-format
|
||||||
|
msgid "Found focuser #%d: %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:540
|
||||||
msgid "Can't get current focuser position"
|
msgid "Can't get current focuser position"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:432
|
#: ccdfunc.c:554
|
||||||
#, 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:436
|
#: ccdfunc.c:558
|
||||||
msgid "Can't home focuser"
|
msgid "Can't home focuser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:438
|
#: ccdfunc.c:560
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set position %g"
|
msgid "Can't set position %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:446
|
#: ccdfunc.c:568
|
||||||
msgid "Wheel device not pointed"
|
msgid "Wheel device not pointed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:453
|
#: ccdfunc.c:575
|
||||||
msgid "No wheels found"
|
msgid "No wheels found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:477
|
#: ccdfunc.c:592
|
||||||
#, c-format
|
|
||||||
msgid "Found wheel #%d: %s\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:483
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Found %d wheels, you point number %d"
|
msgid "Found %d wheels, you point number %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:487
|
#: ccdfunc.c:597
|
||||||
msgid "Can't set active wheel number"
|
msgid "Can't set active wheel number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:492
|
#: ccdfunc.c:603
|
||||||
#, c-format
|
|
||||||
msgid "Wheel model: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:501
|
|
||||||
msgid "Can't get current wheel position"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:503
|
|
||||||
msgid "Can't get max wheel position"
|
msgid "Can't get max wheel position"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:510
|
|
||||||
#, c-format
|
|
||||||
msgid "Wheel position should be from 0 to %d"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:514
|
|
||||||
#, c-format
|
|
||||||
msgid "Can't set wheel position %d"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:529
|
|
||||||
msgid "Camera plugin have no capture polling funtion."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:535
|
|
||||||
#, c-format
|
|
||||||
msgid "%.1f seconds till exposition ends"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:550
|
|
||||||
msgid "Camera device not pointed"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:557 ccdfunc.c:558
|
|
||||||
msgid "No cameras found"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:578
|
|
||||||
msgid "Camera plugin have no model name getter"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:583
|
|
||||||
#, c-format
|
|
||||||
msgid "Found camera #%d: %s\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:589
|
|
||||||
#, c-format
|
|
||||||
msgid "Found %d cameras, you point number %d"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:593
|
|
||||||
msgid "Can't set active camera number"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:599
|
|
||||||
msgid "Camera plugin have no custom commands"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:608 ccdfunc.c:611
|
|
||||||
#, c-format
|
|
||||||
msgid "Command '%s'"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:613
|
|
||||||
#, c-format
|
|
||||||
msgid " returns \"%s\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:624
|
|
||||||
msgid "Camera plugin have no fun speed setter"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:627
|
|
||||||
msgid "Can't set fan speed"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:628
|
#: ccdfunc.c:628
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set fan speed to %d"
|
msgid "Found wheel #%d: %s\n"
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:633
|
|
||||||
#, c-format
|
|
||||||
msgid "Camera model: %s"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:634
|
#: ccdfunc.c:634
|
||||||
#, c-format
|
#, c-format
|
||||||
|
msgid "Wheel model: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:643
|
||||||
|
msgid "Can't get current wheel position"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:648
|
||||||
|
#, c-format
|
||||||
|
msgid "Wheel position should be from 0 to %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:652
|
||||||
|
#, c-format
|
||||||
|
msgid "Can't set wheel position %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:667
|
||||||
|
msgid "Camera plugin have no capture polling funtion."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:673
|
||||||
|
#, c-format
|
||||||
|
msgid "%.1f seconds till exposition ends"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:688
|
||||||
|
msgid "Camera device not pointed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:695 ccdfunc.c:696
|
||||||
|
msgid "No cameras found"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:716
|
||||||
|
msgid "Camera plugin have no model name getter"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:721
|
||||||
|
#, c-format
|
||||||
|
msgid "Found camera #%d: %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:727
|
||||||
|
#, c-format
|
||||||
|
msgid "Found %d cameras, you point number %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:731
|
||||||
|
msgid "Can't set active camera number"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:737
|
||||||
|
msgid "Camera plugin have no custom commands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:746 ccdfunc.c:749
|
||||||
|
#, c-format
|
||||||
|
msgid "Command '%s'"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:751
|
||||||
|
#, c-format
|
||||||
|
msgid " returns \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:762
|
||||||
|
msgid "Camera plugin have no fun speed setter"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:765
|
||||||
|
msgid "Can't set fan speed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:766
|
||||||
|
#, c-format
|
||||||
|
msgid "Set fan speed to %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:771
|
||||||
|
#, c-format
|
||||||
|
msgid "Camera model: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:772
|
||||||
|
#, c-format
|
||||||
msgid "Pixel size: %g x %g"
|
msgid "Pixel size: %g x %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:640
|
#: ccdfunc.c:778
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Full array: %s"
|
msgid "Full array: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:643
|
#: ccdfunc.c:781
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Field of view: %s"
|
msgid "Field of view: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:646
|
#: ccdfunc.c:784
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Current format: %s"
|
msgid "Current format: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:649
|
#: ccdfunc.c:787
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Maximal geometry (WxH): %dx%d"
|
msgid "Maximal geometry (WxH): %dx%d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:650
|
#: ccdfunc.c:788
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Minimal offset: %dx%d"
|
msgid "Minimal offset: %dx%d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:651
|
#: ccdfunc.c:789
|
||||||
#, 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:655
|
#: ccdfunc.c:793
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Current binning: %d x %d"
|
msgid "Current binning: %d x %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:658
|
#: ccdfunc.c:796
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Current settings: %d bits per pixel"
|
msgid "Current settings: %d bits per pixel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:661
|
#: ccdfunc.c:799
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Current brightness: %g"
|
msgid "Current brightness: %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:663
|
#: ccdfunc.c:801
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Current gain: %g"
|
msgid "Current gain: %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:665
|
#: ccdfunc.c:803
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Maximal gain: %g"
|
msgid "Maximal gain: %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:667
|
#: ccdfunc.c:805
|
||||||
msgid "Camera plugin have no temperature setter"
|
msgid "Camera plugin have no temperature setter"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:668
|
#: ccdfunc.c:806
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set T to %g degC"
|
msgid "Can't set T to %g degC"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:676
|
#: ccdfunc.c:814
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shutter command: %s\n"
|
msgid "Shutter command: %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:678
|
#: ccdfunc.c:816
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't run shutter command %s (unsupported?)"
|
msgid "Can't run shutter command %s (unsupported?)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:681
|
#: ccdfunc.c:819
|
||||||
#, 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:683
|
#: ccdfunc.c:821
|
||||||
msgid "Can't configure (unsupported?)"
|
msgid "Can't configure (unsupported?)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:689
|
#: ccdfunc.c:827
|
||||||
msgid "Can't get IOport state (unsupported?)"
|
msgid "Can't get IOport state (unsupported?)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:692
|
#: ccdfunc.c:830
|
||||||
#, 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:694
|
#: ccdfunc.c:832
|
||||||
msgid "Can't set IOport"
|
msgid "Can't set IOport"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:701
|
#: ccdfunc.c:839
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set gain to %g"
|
msgid "Set gain to %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:702
|
#: ccdfunc.c:840
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set gain to %g"
|
msgid "Can't set gain to %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:707
|
#: ccdfunc.c:845
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set brightness to %g"
|
msgid "Set brightness to %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:708
|
#: ccdfunc.c:846
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set brightness to %g"
|
msgid "Can't set brightness to %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:714 server.c:353
|
#: ccdfunc.c:852 server.c:380
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set binning %dx%d"
|
msgid "Can't set binning %dx%d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:726 server.c:354
|
#: ccdfunc.c:864 server.c:381
|
||||||
msgid "Can't set given geometry"
|
msgid "Can't set given geometry"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:730
|
#: ccdfunc.c:868
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set %d flushes"
|
msgid "Can't set %d flushes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:733
|
#: ccdfunc.c:871
|
||||||
msgid "Camera plugin have no exposition setter"
|
msgid "Camera plugin have no exposition setter"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:735
|
#: ccdfunc.c:873
|
||||||
#, 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:738
|
#: ccdfunc.c:876
|
||||||
msgid "Can't change frame type"
|
msgid "Can't change frame type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:741
|
#: ccdfunc.c:879
|
||||||
msgid "Can't set bit depth"
|
msgid "Can't set bit depth"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:743
|
#: ccdfunc.c:881
|
||||||
msgid "Can't set readout speed"
|
msgid "Can't set readout speed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:744
|
#: ccdfunc.c:882
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Readout mode: %s"
|
msgid "Readout mode: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:745
|
#: ccdfunc.c:883
|
||||||
msgid "Only show statistics"
|
msgid "Only show statistics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:748
|
#: ccdfunc.c:886
|
||||||
msgid "Can't get current binning"
|
msgid "Can't get current binning"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:773
|
#: ccdfunc.c:951
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Capture frame %d"
|
msgid "Capture frame %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:774 ccdfunc.c:852 server.c:203
|
#: ccdfunc.c:952 ccdfunc.c:1030 server.c:230
|
||||||
msgid "Camera plugin have no function `start exposition`"
|
msgid "Camera plugin have no function `start exposition`"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:776 ccdfunc.c:854 server.c:208
|
#: ccdfunc.c:954 ccdfunc.c:1032 server.c:235
|
||||||
msgid "Can't start exposition"
|
msgid "Can't start exposition"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:781
|
#: ccdfunc.c:959
|
||||||
msgid "Can't capture image"
|
msgid "Can't capture image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:784
|
#: ccdfunc.c:962
|
||||||
msgid "Read grabbed image"
|
msgid "Read grabbed image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:786 ccdfunc.c:865 server.c:239
|
#: ccdfunc.c:964 ccdfunc.c:1043 server.c:269
|
||||||
msgid "Camera plugin have no function `capture`"
|
msgid "Camera plugin have no function `capture`"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:788 ccdfunc.c:866
|
#: ccdfunc.c:966 ccdfunc.c:1044
|
||||||
msgid "Can't grab image"
|
msgid "Can't grab image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:802 client.c:573
|
#: ccdfunc.c:980 client.c:577
|
||||||
#, 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:837
|
#: ccdfunc.c:1015
|
||||||
#, 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:863
|
#: ccdfunc.c:1041
|
||||||
msgid "Some error when capture"
|
msgid "Some error when capture"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:904
|
#: ccdfunc.c:1082
|
||||||
msgid "Can't create grabbing thread"
|
msgid "Can't create grabbing thread"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:935
|
#: ccdfunc.c:1113
|
||||||
msgid "Point network port or UNIX-socket path"
|
msgid "Point network port or UNIX-socket path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:939
|
#: ccdfunc.c:1117
|
||||||
msgid "start_socket(): can't open socket"
|
msgid "start_socket(): can't open socket"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:948
|
#: ccdfunc.c:1126
|
||||||
msgid "Need exposition time!"
|
msgid "Need exposition time!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -747,51 +758,51 @@ msgstr ""
|
|||||||
msgid "Can't allocate memory for image"
|
msgid "Can't allocate memory for image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: server.c:216
|
#: server.c:243
|
||||||
msgid "Camera disconnected"
|
msgid "Camera disconnected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: server.c:222
|
#: server.c:249
|
||||||
msgid "Something's wrong with camera"
|
msgid "Something's wrong with camera"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: server.c:270
|
#: server.c:297
|
||||||
msgid "No camera device"
|
msgid "No camera device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: server.c:1092
|
#: server.c:1099
|
||||||
msgid "server(): need at least command socket fd"
|
msgid "server(): need at least command socket fd"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: server.c:1093
|
#: server.c:1100
|
||||||
msgid "Server run without image transport socket"
|
msgid "Server run without image transport socket"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: server.c:1115
|
#: server.c:1131
|
||||||
msgid "No devices found"
|
msgid "No devices found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: server.c:1160
|
#: server.c:1176
|
||||||
msgid "Client wants an image, but there's no data"
|
msgid "Client wants an image, but there's no data"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: server.c:1189
|
#: server.c:1205
|
||||||
msgid "Limit of connections reached"
|
msgid "Limit of connections reached"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: server.c:1258
|
#: server.c:1274
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't create %s"
|
msgid "Can't create %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: server.c:1294
|
#: server.c:1310
|
||||||
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:288
|
#: client.c:42 client.c:44 client.c:46 client.c:290
|
||||||
msgid "Server disconnected"
|
msgid "Server disconnected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -811,86 +822,87 @@ msgstr ""
|
|||||||
msgid "Send custom plugin commands\n"
|
msgid "Send custom plugin commands\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:340
|
#: client.c:342
|
||||||
msgid "Can't lock shared memory"
|
msgid "Can't lock shared memory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:359
|
#: client.c:361
|
||||||
msgid "Can't open image transport socket"
|
msgid "Can't open image transport socket"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:365
|
#: client.c:367
|
||||||
msgid "Can't read image header over socket"
|
msgid "Can't read image header over socket"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:398 client.c:428
|
#: client.c:400 client.c:430
|
||||||
msgid "Can't read image data"
|
msgid "Can't read image data"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:440
|
#: client.c:443
|
||||||
msgid "Too many FITS headers, truncating"
|
msgid "Too many FITS headers, truncating"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:451
|
#: client.c:454
|
||||||
#, 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:466
|
#: client.c:470
|
||||||
msgid "Still got old image"
|
msgid "Still got old image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:491 client.c:591
|
#: client.c:495 client.c:595
|
||||||
msgid "Can't run without command socket"
|
msgid "Can't run without command socket"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:510
|
#: client.c:514
|
||||||
msgid "Exposing frame 1..."
|
msgid "Exposing frame 1..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:512
|
#: client.c:516
|
||||||
msgid "Wait for exposition end"
|
msgid "Wait for exposition end"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:531
|
#: client.c:535
|
||||||
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:533 client.c:544 client.c:563
|
#: client.c:537 client.c:548 client.c:567
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Exposing frame %d..."
|
msgid "Exposing frame %d..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:551
|
#: client.c:555
|
||||||
msgid "Frame ready, try to grab"
|
msgid "Frame ready, try to grab"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:553
|
#. TRUE
|
||||||
|
#: client.c:557
|
||||||
msgid "Can't get next image"
|
msgid "Can't get next image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:561
|
#: client.c:565
|
||||||
msgid "Got already saved image, wait next"
|
msgid "Got already saved image, wait next"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:585
|
#: client.c:589
|
||||||
msgid "Server timeout"
|
msgid "Server timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:636
|
#: client.c:640
|
||||||
msgid "Camera in error state"
|
msgid "Camera in error state"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:638
|
#: client.c:642
|
||||||
#, 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:698 client.c:705
|
#: client.c:702 client.c:709
|
||||||
msgid "Can't create capturing thread"
|
msgid "Can't create capturing thread"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
477
locale/ru/ru.po
477
locale/ru/ru.po
@@ -7,7 +7,7 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr "Project-Id-Version: PACKAGE VERSION\n"
|
msgstr "Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2026-07-21 09:39+0300\n"
|
"POT-Creation-Date: 2026-07-23 17:35+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"
|
||||||
@@ -16,17 +16,17 @@ msgstr "Project-Id-Version: PACKAGE VERSION\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:613
|
#: ccdfunc.c:751
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " returns \"%s\""
|
msgid " returns \"%s\""
|
||||||
msgstr ""
|
msgstr " ×ÏÚ×ÒÁÝÁÅÔ \"%s\""
|
||||||
|
|
||||||
#: ccdfunc.c:535
|
#: ccdfunc.c:673
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%.1f seconds till exposition ends"
|
msgid "%.1f seconds till exposition ends"
|
||||||
msgstr "%.1f ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÜËÓÐÏÚÉÃÉÉ"
|
msgstr "%.1f ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÜËÓÐÏÚÉÃÉÉ"
|
||||||
|
|
||||||
#: ccdfunc.c:802 client.c:573
|
#: ccdfunc.c:980 client.c:577
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d seconds till pause ends\n"
|
msgid "%d seconds till pause ends\n"
|
||||||
msgstr "%d ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÐÁÕÚÙ\n"
|
msgstr "%d ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÐÁÕÚÙ\n"
|
||||||
@@ -34,7 +34,17 @@ msgstr "%d
|
|||||||
#: cmdlnopts.c:160
|
#: cmdlnopts.c:160
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d unused parameters:\n"
|
msgid "%d unused parameters:\n"
|
||||||
msgstr ""
|
msgstr "%d ÎÅÉÓÐÏÌØÚÕÅÍÙÈ ÐÁÒÁÍÅÔÒÏ×:\n"
|
||||||
|
|
||||||
|
#: ccdfunc.c:348
|
||||||
|
#, c-format
|
||||||
|
msgid "Added %d FITS records from %s"
|
||||||
|
msgstr "äÏÂÁ×ÌÅÎÏ %d ÚÁÐÉÓÅÊ FITS ÉÚ %s"
|
||||||
|
|
||||||
|
#: ccdfunc.c:347
|
||||||
|
#, c-format
|
||||||
|
msgid "Added 0 FITS records from %s"
|
||||||
|
msgstr "äÏÂÁ×ÌÅÎÏ 0 ÚÁÐÉÓÅÊ FITS ÉÚ %s"
|
||||||
|
|
||||||
#: imageview.c:51
|
#: imageview.c:51
|
||||||
msgid "Already initialized!"
|
msgid "Already initialized!"
|
||||||
@@ -48,144 +58,132 @@ msgstr "
|
|||||||
msgid "CMOS gain level"
|
msgid "CMOS gain level"
|
||||||
msgstr "ÕÒÏ×ÅÎØ Gain CMOS"
|
msgstr "ÕÒÏ×ÅÎØ Gain CMOS"
|
||||||
|
|
||||||
#: ccdfunc.c:550
|
#: ccdfunc.c:688
|
||||||
msgid "Camera device not pointed"
|
msgid "Camera device not pointed"
|
||||||
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÐÏÄËÌÀÞÅÎÏ"
|
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÐÏÄËÌÀÞÅÎÏ"
|
||||||
|
|
||||||
#: server.c:216
|
#: server.c:243
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Camera disconnected"
|
msgid "Camera disconnected"
|
||||||
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
|
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
|
||||||
|
|
||||||
#: client.c:636
|
#: client.c:640
|
||||||
msgid "Camera in error state"
|
msgid "Camera in error state"
|
||||||
msgstr ""
|
msgstr "ëÁÍÅÒÁ × ÓÏÓÔÏÑÎÉÉ ÏÛÉÂËÉ"
|
||||||
|
|
||||||
#: ccdfunc.c:633
|
#: ccdfunc.c:771
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Camera model: %s"
|
msgid "Camera model: %s"
|
||||||
msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s"
|
msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:529
|
#: ccdfunc.c:667
|
||||||
#, fuzzy
|
|
||||||
msgid "Camera plugin have no capture polling funtion."
|
msgid "Camera plugin have no capture polling funtion."
|
||||||
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
|
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÆÕÎËÃÉÉ ÚÁÈ×ÁÔÁ ÉÚÏÂÒÁÖÅÎÉÊ"
|
||||||
|
|
||||||
#: ccdfunc.c:599
|
#: ccdfunc.c:737
|
||||||
msgid "Camera plugin have no custom commands"
|
msgid "Camera plugin have no custom commands"
|
||||||
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
|
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
|
||||||
|
|
||||||
#: ccdfunc.c:733
|
#: ccdfunc.c:871
|
||||||
#, fuzzy
|
|
||||||
msgid "Camera plugin have no exposition setter"
|
msgid "Camera plugin have no exposition setter"
|
||||||
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
|
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÓÅÔÔÅÒÁ ÜËÓÐÏÚÉÃÉÉ"
|
||||||
|
|
||||||
#: ccdfunc.c:624
|
#: ccdfunc.c:762
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Camera plugin have no fun speed setter"
|
msgid "Camera plugin have no fun speed setter"
|
||||||
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
|
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÓÅÔÔÅÒÁ ÓËÏÒÏÓÔÉ ×ÅÎÔÉÌÑÔÏÒÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:786 ccdfunc.c:865 server.c:239
|
#: ccdfunc.c:964 ccdfunc.c:1043 server.c:269
|
||||||
#, fuzzy
|
|
||||||
msgid "Camera plugin have no function `capture`"
|
msgid "Camera plugin have no function `capture`"
|
||||||
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
|
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÆÕÎËÃÉÉ `capture`"
|
||||||
|
|
||||||
#: ccdfunc.c:774 ccdfunc.c:852 server.c:203
|
#: ccdfunc.c:952 ccdfunc.c:1030 server.c:230
|
||||||
#, fuzzy
|
|
||||||
msgid "Camera plugin have no function `start exposition`"
|
msgid "Camera plugin have no function `start exposition`"
|
||||||
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
|
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÆÕÎËÃÉÉ `start exposition`"
|
||||||
|
|
||||||
#: ccdfunc.c:578
|
#: ccdfunc.c:716
|
||||||
#, fuzzy
|
|
||||||
msgid "Camera plugin have no model name getter"
|
msgid "Camera plugin have no model name getter"
|
||||||
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
|
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÇÅÔÔÅÒÁ ÎÁÚ×ÁÎÉÑ ÍÏÄÅÌÉ"
|
||||||
|
|
||||||
#: ccdfunc.c:667
|
#: ccdfunc.c:805
|
||||||
#, fuzzy
|
|
||||||
msgid "Camera plugin have no temperature setter"
|
msgid "Camera plugin have no temperature setter"
|
||||||
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÏÓÏÂÙÈ ËÏÍÁÎÄ"
|
msgstr "õ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ ÎÅÔ ÓÅÔÔÅÒÁ ÔÅÍÐÅÒÁÔÕÒÙ"
|
||||||
|
|
||||||
#: client.c:124
|
#: client.c:124
|
||||||
#, fuzzy
|
|
||||||
msgid "Can't allocate buffer"
|
msgid "Can't allocate buffer"
|
||||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
||||||
|
|
||||||
#: server.c:167
|
#: server.c:167
|
||||||
#, fuzzy
|
|
||||||
msgid "Can't allocate memory for image"
|
msgid "Can't allocate memory for image"
|
||||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
msgstr "îÅ ÍÏÇÕ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÄÌÑ ÉÚÏÂÒÁÖÅÎÉÑ"
|
||||||
|
|
||||||
#: main.c:119
|
#: main.c:122
|
||||||
msgid "Can't be client and standalone in same time!"
|
msgid "Can't be client and standalone in same time!"
|
||||||
msgstr ""
|
msgstr "îÅ ÍÏÇÕ ÏÄÎÏ×ÒÅÍÅÎÎÏ ÂÙÔØ ËÌÉÅÎÔÏÍ É ÓÁÍÏÓÔÏÑÔÅÌØÎÙÍ ÐÒÉÌÏÖÅÎÉÅÍ!"
|
||||||
|
|
||||||
#: ccdfunc.c:781
|
#: ccdfunc.c:959
|
||||||
msgid "Can't capture image"
|
msgid "Can't capture image"
|
||||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
||||||
|
|
||||||
#: ccdfunc.c:738
|
#: ccdfunc.c:876
|
||||||
msgid "Can't change frame type"
|
msgid "Can't change frame type"
|
||||||
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÔÉÐ ËÁÄÒÁ"
|
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÔÉÐ ËÁÄÒÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:683
|
#: ccdfunc.c:821
|
||||||
msgid "Can't configure (unsupported?)"
|
msgid "Can't configure (unsupported?)"
|
||||||
msgstr "îÅ ÍÏÇÕ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ (ÏÐÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
msgstr "îÅ ÍÏÇÕ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ (ÏÐÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
||||||
|
|
||||||
#: server.c:1258
|
#: server.c:1274
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "Can't create %s"
|
msgid "Can't create %s"
|
||||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ %s"
|
||||||
|
|
||||||
#: client.c:698 client.c:705
|
#: client.c:702 client.c:709
|
||||||
#, fuzzy
|
|
||||||
msgid "Can't create capturing thread"
|
msgid "Can't create capturing thread"
|
||||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÐÏÔÏË ÚÁÈ×ÁÔÁ ÉÚÏÂÒÁÖÅÎÉÊ"
|
||||||
|
|
||||||
#: ccdfunc.c:904
|
#: ccdfunc.c:1082
|
||||||
#, fuzzy
|
|
||||||
msgid "Can't create grabbing thread"
|
msgid "Can't create grabbing thread"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ Gain × %g"
|
msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÐÏÔÏË ÚÁÈ×ÁÔÁ"
|
||||||
|
|
||||||
#: main.c:126
|
#: main.c:129
|
||||||
#, fuzzy
|
|
||||||
msgid "Can't create log file"
|
msgid "Can't create log file"
|
||||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÌÏÇ-ÆÁÊÌ"
|
||||||
|
|
||||||
#: ccdfunc.c:689
|
#: ccdfunc.c:827
|
||||||
msgid "Can't get IOport state (unsupported?)"
|
msgid "Can't get IOport state (unsupported?)"
|
||||||
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÓÏÓÔÏÑÎÉÅ ÐÏÒÔÁ I/O (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÓÏÓÔÏÑÎÉÅ ÐÏÒÔÁ I/O (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
||||||
|
|
||||||
#: ccdfunc.c:748
|
#: ccdfunc.c:886
|
||||||
msgid "Can't get current binning"
|
msgid "Can't get current binning"
|
||||||
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ ÂÉÎÎÉÎÇÁ"
|
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ ÂÉÎÎÉÎÇÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:418
|
#: ccdfunc.c:540
|
||||||
msgid "Can't get current focuser position"
|
msgid "Can't get current focuser position"
|
||||||
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÔÅËÕÝÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
|
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÔÅËÕÝÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:501
|
#: ccdfunc.c:643
|
||||||
#, fuzzy
|
|
||||||
msgid "Can't get current wheel position"
|
msgid "Can't get current wheel position"
|
||||||
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÔÅËÕÝÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
|
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÔÅËÕÝÕÀ ÐÏÚÉÃÉÀ ÔÕÒÅÌÉ"
|
||||||
|
|
||||||
#: ccdfunc.c:411
|
#: ccdfunc.c:496
|
||||||
msgid "Can't get focuser limit positions"
|
msgid "Can't get focuser limit positions"
|
||||||
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
|
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:503
|
#: ccdfunc.c:603
|
||||||
msgid "Can't get max wheel position"
|
msgid "Can't get max wheel position"
|
||||||
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ËÏÌÅÓÁ"
|
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ÔÕÒÅÌÉ"
|
||||||
|
|
||||||
#: client.c:553
|
#. TRUE
|
||||||
#, fuzzy
|
#: client.c:557
|
||||||
msgid "Can't get next image"
|
msgid "Can't get next image"
|
||||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÏÞÅÒÅÄÎÏÅ ÉÚÏÂÒÁÖÅÎÉÅ"
|
||||||
|
|
||||||
#: ccdfunc.c:788 ccdfunc.c:866
|
#: ccdfunc.c:966 ccdfunc.c:1044
|
||||||
msgid "Can't grab image"
|
msgid "Can't grab image"
|
||||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
||||||
|
|
||||||
#: ccdfunc.c:436
|
#: ccdfunc.c:558
|
||||||
msgid "Can't home focuser"
|
msgid "Can't home focuser"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÆÏËÕÓÅÒ × ÎÕÌØ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÆÏËÕÓÅÒ × ÎÕÌØ"
|
||||||
|
|
||||||
@@ -193,17 +191,15 @@ msgstr "
|
|||||||
msgid "Can't init mutex!"
|
msgid "Can't init mutex!"
|
||||||
msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!"
|
msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!"
|
||||||
|
|
||||||
#: server.c:1294
|
#: server.c:1310
|
||||||
#, fuzzy
|
|
||||||
msgid "Can't lock mutex"
|
msgid "Can't lock mutex"
|
||||||
msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!"
|
msgstr "îÅ ÍÏÇÕ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÍØÀÔÅËÓ"
|
||||||
|
|
||||||
#: client.c:340
|
#: client.c:342
|
||||||
#, fuzzy
|
|
||||||
msgid "Can't lock shared memory"
|
msgid "Can't lock shared memory"
|
||||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
msgstr "îÅ ÍÏÇÕ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÒÁÚÄÅÌÑÅÍÕÀ ÐÁÍÑÔØ"
|
||||||
|
|
||||||
#: client.c:531
|
#: client.c:535
|
||||||
msgid "Can't make exposition"
|
msgid "Can't make exposition"
|
||||||
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ÜËÓÐÏÚÉÃÉÀ"
|
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ÜËÓÐÏÚÉÃÉÀ"
|
||||||
|
|
||||||
@@ -211,282 +207,278 @@ msgstr "
|
|||||||
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:359
|
#: client.c:361
|
||||||
#, fuzzy
|
|
||||||
msgid "Can't open image transport socket"
|
msgid "Can't open image transport socket"
|
||||||
msgstr "îÅ ÍÏÇÕ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ (ÏÐÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÔÒÁÎÓÐÏÒÔÎÙÊ ÓÏËÅÔ"
|
||||||
|
|
||||||
#: client.c:451
|
#: client.c:454
|
||||||
#, 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 "îÅ ÍÏÇÕ ÓÞÉÔÁÔØ ×ÅÓØ ÚÁÌÏÇÏ×Ï, ÐÏÌÕÞÉÌ ÌÉÛØ %zd ÚÁÐÉÓÅÊ ÉÚ %zd"
|
||||||
|
|
||||||
#: client.c:398 client.c:428
|
#: client.c:400 client.c:430
|
||||||
#, fuzzy
|
|
||||||
msgid "Can't read image data"
|
msgid "Can't read image data"
|
||||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
msgstr "îÅ ÍÏÇÕ ÓÞÉÔÁÔØ ÄÁÎÎÙÅ ÉÚÏÂÒÁÖÅÎÉÑ"
|
||||||
|
|
||||||
#: client.c:365
|
#: client.c:367
|
||||||
#, fuzzy
|
|
||||||
msgid "Can't read image header over socket"
|
msgid "Can't read image header over socket"
|
||||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
msgstr "îÅ ÍÏÇÕ ÓÞÉÔÁÔØ ÚÁÇÏÌÏ×ÏË ÉÚÏÂÒÁÖÅÎÉÑ ÐÏ ÓÏËÅÔÕ"
|
||||||
|
|
||||||
#: ccdfunc.c:678
|
#: ccdfunc.c:816
|
||||||
#, 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:491 client.c:591
|
#: client.c:495 client.c:595
|
||||||
#, fuzzy
|
|
||||||
msgid "Can't run without command socket"
|
msgid "Can't run without command socket"
|
||||||
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ ÚÁÔ×ÏÒÁ %s (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
msgstr "îÅ ÍÏÇÕ ÒÁÂÏÔÁÔØ ÂÅÚ ËÏÍÁÎÄÎÏÇÏ ÓÏËÅÔÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:221
|
#: ccdfunc.c:230
|
||||||
#, 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:730
|
#: ccdfunc.c:868
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set %d flushes"
|
msgid "Can't set %d flushes"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ %d ÓÂÒÏÓÏ×"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ %d ÓÂÒÏÓÏ×"
|
||||||
|
|
||||||
#: ccdfunc.c:694
|
#: ccdfunc.c:832
|
||||||
msgid "Can't set IOport"
|
msgid "Can't set IOport"
|
||||||
msgstr "îÅ ÍÏÇÕ ÐÏÍÅÎÑÔØ ÚÎÁÞÅÎÉÑ ÐÏÒÔÁ I/O"
|
msgstr "îÅ ÍÏÇÕ ÐÏÍÅÎÑÔØ ÚÎÁÞÅÎÉÑ ÐÏÒÔÁ I/O"
|
||||||
|
|
||||||
#: ccdfunc.c:668
|
#: ccdfunc.c:806
|
||||||
#, 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:593
|
#: ccdfunc.c:731
|
||||||
msgid "Can't set active camera number"
|
msgid "Can't set active camera number"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÊ ËÁÍÅÒÙ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÊ ËÁÍÅÒÙ"
|
||||||
|
|
||||||
#: ccdfunc.c:397
|
#: ccdfunc.c:489
|
||||||
msgid "Can't set active focuser number"
|
msgid "Can't set active focuser number"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ÆÏËÕÓÅÒÁ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ÆÏËÕÓÅÒÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:487
|
#: ccdfunc.c:597
|
||||||
msgid "Can't set active wheel number"
|
msgid "Can't set active wheel number"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ËÏÌÅÓÁ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ËÏÌÅÓÁ"
|
||||||
|
|
||||||
#: main.c:94
|
#: main.c:97
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "Can't set answer timeout to %g"
|
msgid "Can't set answer timeout to %g"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ Gain × %g"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÔÁÊÍÁÕÔ ÏÔ×ÅÔÁ × %g"
|
||||||
|
|
||||||
#: ccdfunc.c:714 server.c:353
|
#: ccdfunc.c:852 server.c:380
|
||||||
#, 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:741
|
#: ccdfunc.c:879
|
||||||
msgid "Can't set bit depth"
|
msgid "Can't set bit depth"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÒÁÚÒÑÄÎÏÓÔØ áãð"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÒÁÚÒÑÄÎÏÓÔØ áãð"
|
||||||
|
|
||||||
#: ccdfunc.c:708
|
#: ccdfunc.c:846
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set brightness to %g"
|
msgid "Can't set brightness to %g"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
||||||
|
|
||||||
#: ccdfunc.c:735
|
#: ccdfunc.c:873
|
||||||
#, 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:627
|
#: ccdfunc.c:765
|
||||||
msgid "Can't set fan speed"
|
msgid "Can't set fan speed"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ×"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ×"
|
||||||
|
|
||||||
#: ccdfunc.c:702
|
#: ccdfunc.c:840
|
||||||
#, 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:726 server.c:354
|
#: ccdfunc.c:864 server.c:381
|
||||||
msgid "Can't set given geometry"
|
msgid "Can't set given geometry"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÇÅÏÍÅÔÒÉÀ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÇÅÏÍÅÔÒÉÀ"
|
||||||
|
|
||||||
#: ccdfunc.c:438
|
#: ccdfunc.c:560
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set position %g"
|
msgid "Can't set position %g"
|
||||||
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÐÏÚÉÃÉÀ ÎÁ %g"
|
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÐÏÚÉÃÉÀ ÎÁ %g"
|
||||||
|
|
||||||
#: ccdfunc.c:432
|
#: ccdfunc.c:554
|
||||||
#, 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:743
|
#: ccdfunc.c:881
|
||||||
msgid "Can't set readout speed"
|
msgid "Can't set readout speed"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ÓÞÉÔÙ×ÁÎÉÑ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ÓÞÉÔÙ×ÁÎÉÑ"
|
||||||
|
|
||||||
#: ccdfunc.c:514
|
#: ccdfunc.c:652
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set wheel position %d"
|
msgid "Can't set wheel position %d"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ %d"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ %d"
|
||||||
|
|
||||||
#: ccdfunc.c:776 ccdfunc.c:854 server.c:208
|
#: ccdfunc.c:954 ccdfunc.c:1032 server.c:235
|
||||||
msgid "Can't start exposition"
|
msgid "Can't start exposition"
|
||||||
msgstr "îÅ ÍÏÇÕ ÎÁÞÁÔØ ÜËÓÐÏÚÉÃÉÀ"
|
msgstr "îÅ ÍÏÇÕ ÎÁÞÁÔØ ÜËÓÐÏÚÉÃÉÀ"
|
||||||
|
|
||||||
#: server.c:129
|
#: server.c:129
|
||||||
#, fuzzy
|
|
||||||
msgid "Can't unlock socket mutex"
|
msgid "Can't unlock socket mutex"
|
||||||
msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!"
|
msgstr "îÅ ÍÏÇÕ ÒÁÚÂÌÏËÉÒÏ×ÁÔØ ÍØÀÔÅËÓ ÓÏËÅÔÁ"
|
||||||
|
|
||||||
#: main.c:88
|
#: main.c:91
|
||||||
#, fuzzy
|
|
||||||
msgid "Can't use outfile name and prefix together"
|
msgid "Can't use outfile name and prefix together"
|
||||||
msgstr "îÅ ÍÏÇÕ ÓÏÈÒÁÎÉÔØ ÆÁÊÌ Ó ÐÒÅÆÉËÓÏÍ %s"
|
msgstr "îÅ ÍÏÇÕ ÏÄÎÏ×ÒÅÍÅÎÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÉÍÑ ÆÁÊÌÁ É ÐÒÅÆÉËÓ"
|
||||||
|
|
||||||
#: ccdfunc.c:773
|
#: ccdfunc.c:951
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Capture frame %d"
|
msgid "Capture frame %d"
|
||||||
msgstr "úÁÈ×ÁÔ ËÁÄÒÁ %d"
|
msgstr "úÁÈ×ÁÔ ËÁÄÒÁ %d"
|
||||||
|
|
||||||
#: server.c:1160
|
#: server.c:1176
|
||||||
msgid "Client wants an image, but there's no data"
|
msgid "Client wants an image, but there's no data"
|
||||||
msgstr ""
|
msgstr "ëÌÉÅÎÔ ÖÄÅÔ ÉÚÏÂÒÁÖÅÎÉÑ, ÎÏ ÄÁÎÎÙÅ ÏÔÓÕÔÓÔ×ÕÀÔ"
|
||||||
|
|
||||||
#: ccdfunc.c:608 ccdfunc.c:611
|
#: ccdfunc.c:746 ccdfunc.c:749
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Command '%s'"
|
msgid "Command '%s'"
|
||||||
msgstr ""
|
msgstr "ëÏÍÁÎÄÁ '%s'"
|
||||||
|
|
||||||
#: ccdfunc.c:655
|
#: ccdfunc.c:793
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "Current binning: %d x %d"
|
msgid "Current binning: %d x %d"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÂÉÎÎÉÎÇ %dx%d"
|
msgstr "ôÅËÕÝÉÊ ÂÉÎÎÉÎÇ: %d x %d"
|
||||||
|
|
||||||
#: ccdfunc.c:661
|
#: ccdfunc.c:799
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "Current brightness: %g"
|
msgid "Current brightness: %g"
|
||||||
msgstr "õÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
msgstr "ôÅËÕÝÁÑ ÑÒËÏÓÔØ: %g"
|
||||||
|
|
||||||
#: ccdfunc.c:646
|
#: ccdfunc.c:784
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Current format: %s"
|
msgid "Current format: %s"
|
||||||
msgstr "ôÅËÕÝÉÊ ÆÏÒÍÁÔ: %s"
|
msgstr "ôÅËÕÝÉÊ ÆÏÒÍÁÔ: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:663
|
#: ccdfunc.c:801
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "Current gain: %g"
|
msgid "Current gain: %g"
|
||||||
msgstr "ôÅËÕÝÉÊ ÆÏÒÍÁÔ: %s"
|
msgstr "ôÅËÕÝÉÊ gain: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:658
|
#: ccdfunc.c:796
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Current settings: %d bits per pixel"
|
msgid "Current settings: %d bits per pixel"
|
||||||
msgstr ""
|
msgstr "ôÅËÕÝÉÅ ÎÁÓÔÒÏÊËÉ: %d ÂÉÔ ÎÁ ÐÉËÓÅÌØ"
|
||||||
|
|
||||||
#: cmdlnopts.c:136
|
#: cmdlnopts.c:136
|
||||||
msgid "Display image in OpenGL window"
|
msgid "Display image in OpenGL window"
|
||||||
msgstr "ÏÔÏÂÒÁÖÅÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ × ÏËÎÅ OpenGL"
|
msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ × ÏËÎÅ OpenGL"
|
||||||
|
|
||||||
#: imageview.c:769
|
#: imageview.c:769
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Equalization of histogram: %s"
|
msgid "Equalization of histogram: %s"
|
||||||
msgstr "üË×ÁÌÉÚÁÃÉÑ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
|
msgstr "üË×ÁÌÉÚÁÃÉÑ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:292
|
#: ccdfunc.c:395
|
||||||
msgid "Error saving file"
|
#, c-format
|
||||||
msgstr "ïÛÉÂËÁ ÓÏÈÒÁÎÅÎÉÑ ÆÁÊÌÁ"
|
msgid "Error saving file %s"
|
||||||
|
msgstr "ïÛÉÂËÁ ÓÏÈÒÁÎÅÎÉÑ ÆÁÊÌÁ %s"
|
||||||
|
|
||||||
#. start next capture
|
#. start next capture
|
||||||
#. last image -> should re-expose
|
#. last image -> should re-expose
|
||||||
#: client.c:533 client.c:544 client.c:563
|
#: client.c:537 client.c:548 client.c:567
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Exposing frame %d..."
|
msgid "Exposing frame %d..."
|
||||||
msgstr ""
|
msgstr "üËÓÐÏÎÉÒÕÀ ËÁÄÒ %d..."
|
||||||
|
|
||||||
#: client.c:510
|
#: client.c:514
|
||||||
msgid "Exposing frame 1..."
|
msgid "Exposing frame 1..."
|
||||||
msgstr ""
|
msgstr "üËÓÐÏÎÉÒÕÀ ËÁÄÒ 1..."
|
||||||
|
|
||||||
#: ccdfunc.c:643
|
#: ccdfunc.c:781
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Field of view: %s"
|
msgid "Field of view: %s"
|
||||||
msgstr "ðÏÌÅ ÚÒÅÎÉÑ: %s"
|
msgstr "ðÏÌÅ ÚÒÅÎÉÑ: %s"
|
||||||
|
|
||||||
#: main.c:91 ccdfunc.c:214
|
#: main.c:94 ccdfunc.c:222
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "File %s exists!"
|
msgid "File %s exists!"
|
||||||
msgstr ""
|
msgstr "æÁÊÌ %s ÓÕÝÅÓÔ×ÕÅÔ!"
|
||||||
|
|
||||||
#: ccdfunc.c:283
|
#: ccdfunc.c:386
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "File saved as '%s'"
|
msgid "File saved as '%s'"
|
||||||
msgstr "æÁÊÌ ÓÏÈÒÁÎÅÎ ËÁË '%s'"
|
msgstr "æÁÊÌ ÓÏÈÒÁÎÅÎ ËÁË '%s'"
|
||||||
|
|
||||||
#: ccdfunc.c:356
|
#: ccdfunc.c:459
|
||||||
msgid "Focuser device not pointed"
|
msgid "Focuser device not pointed"
|
||||||
msgstr "õÓÔÒÏÊÓÔ×Ï ÆÏËÕÓÅÒÁ ÎÅ ÕËÁÚÁÎÏ"
|
msgstr "õÓÔÒÏÊÓÔ×Ï ÆÏËÕÓÅÒÁ ÎÅ ÕËÁÚÁÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:589
|
#: ccdfunc.c:727
|
||||||
#, 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:393
|
#: ccdfunc.c:484
|
||||||
#, 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:483
|
#: ccdfunc.c:592
|
||||||
#, 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:583
|
#: ccdfunc.c:721
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Found camera #%d: %s\n"
|
msgid "Found camera #%d: %s\n"
|
||||||
msgstr ""
|
msgstr "ïÂÎÁÒÕÖÅÎÁ ËÁÍÅÒÁ ÎÏÍÅÒ %d: %s\n"
|
||||||
|
|
||||||
#: ccdfunc.c:387
|
#: ccdfunc.c:522
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Found focuser #%d: %s\n"
|
msgid "Found focuser #%d: %s\n"
|
||||||
msgstr ""
|
msgstr "ïÂÎÁÒÕÖÅÎ ÆÏËÕÓÅÒ ÎÏÍÅÒ %d: %s\n"
|
||||||
|
|
||||||
#: ccdfunc.c:477
|
#: ccdfunc.c:628
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Found wheel #%d: %s\n"
|
msgid "Found wheel #%d: %s\n"
|
||||||
msgstr ""
|
msgstr "ïÂÎÁÒÕÖÅÎÁ ÔÕÒÅÌØ ÎÏÍÅÒ %d: %s\n"
|
||||||
|
|
||||||
#: client.c:551
|
#: client.c:555
|
||||||
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:837
|
#: ccdfunc.c:1015
|
||||||
#, 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 "%.2f ËÁÄÒÏ× × ÓÅËÕÎÄÕ (%g ÓÅËÕÎÄ ÎÁ ÜËÓÐÏÚÉÃÉÀ); ÓÒÅÄÎÑÑ ÓËÏÒÏÓÔØ "
|
||||||
|
"%.2f"
|
||||||
|
|
||||||
#: ccdfunc.c:640
|
#: ccdfunc.c:778
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Full array: %s"
|
msgid "Full array: %s"
|
||||||
msgstr "ðÏÌÎÙÊ ÆÏÒÍÁÔ: %s"
|
msgstr "ðÏÌÎÙÊ ÆÏÒÍÁÔ: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:651
|
#: ccdfunc.c:789
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Geometry steps: offset - %dx%d, size - %dx%d"
|
msgid "Geometry steps: offset - %dx%d, size - %dx%d"
|
||||||
msgstr ""
|
msgstr "ûÁÇ ÉÚÍÅÒÅÎÉÑ ÇÅÏÍÅÔÒÉÉ: ÓÍÅÝÅÎÉÑ - %dx%d, ÒÁÚÍÅÒÁ - %dx%d"
|
||||||
|
|
||||||
#. slave: cancel exposition
|
#. slave: cancel exposition
|
||||||
#: main.c:57
|
#: main.c:60
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Get signal %d - exit"
|
msgid "Get signal %d - exit"
|
||||||
msgstr ""
|
msgstr "ðÏÌÕÅÎ ÓÉÇÎÁÌ %d - ×ÙÈÏÄ"
|
||||||
|
|
||||||
#: client.c:561
|
#: client.c:565
|
||||||
msgid "Got already saved image, wait next"
|
msgid "Got already saved image, wait next"
|
||||||
msgstr ""
|
msgstr "ðÏÌÕÞÉÌ ÕÖÅ ÓÏÈÒÁÎÅÎÎÏÅ ÉÚÏÂÒÁÖÅÎÉÅ, ÖÄÕ ÓÌÅÄÕÀÝÅÇÏ"
|
||||||
|
|
||||||
#: client.c:157
|
#: client.c:157
|
||||||
msgid "Got empty string"
|
msgid "Got empty string"
|
||||||
msgstr ""
|
msgstr "ðÏÌÕÞÉÌ ÐÕÓÔÕÀ ÓÔÒÏËÕ"
|
||||||
|
|
||||||
#: imageview.c:427
|
#: imageview.c:427
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -497,198 +489,197 @@ msgstr "
|
|||||||
msgid "INET image socket port"
|
msgid "INET image socket port"
|
||||||
msgstr "ÐÏÒÔ ÌÏËÁÌØÎÏÇÏ ÓÅÔÅ×ÏÇÏ ÓÏËÅÔÁ ÐÅÒÅÄÁÞÉ ÉÚÏÂÒÁÖÅÎÉÑ"
|
msgstr "ÐÏÒÔ ÌÏËÁÌØÎÏÇÏ ÓÅÔÅ×ÏÇÏ ÓÏËÅÔÁ ÐÅÒÅÄÁÞÉ ÉÚÏÂÒÁÖÅÎÉÑ"
|
||||||
|
|
||||||
#: ccdfunc.c:203
|
#: ccdfunc.c:211
|
||||||
msgid "Image not saved: neither filename nor filename prefix pointed"
|
msgid "Image not saved: neither filename nor filename prefix pointed"
|
||||||
msgstr ""
|
msgstr "éÚÏÂÒÁÖÅÎÉÅ ÎÅ ÓÏÈÒÁÎÅÎÏ: ÎÅ ÕËÁÚÁÎÏ ÎÉ ÉÍÅÎÉ ÆÁÊÌÁ, ÎÉ ÐÒÅÆÉËÓÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:347
|
#: ccdfunc.c:450
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Image stat:\n"
|
msgid "Image stat:\n"
|
||||||
msgstr "óÔÁÔÉÓÔÉËÁ ÐÏ ÉÚÏÂÒÁÖÅÎÉÀ: \n"
|
msgstr "óÔÁÔÉÓÔÉËÁ ÐÏ ÉÚÏÂÒÁÖÅÎÉÀ: \n"
|
||||||
|
|
||||||
#: client.c:638
|
#: client.c:642
|
||||||
#, 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 ""
|
msgstr "éÚÏÂÒÁÖÅÎÉÅ ÎÅ ÂÙÌÏ ÐÏÌÕÞÅÎÏ. óÏÓÔÏÑÎÉÅ: %d, ÏÖÉÄÁÎÉÅ: %g, ÐÏÓÌÅÄÎÉÊ "
|
||||||
|
"ÎÏÍÅÒ: %d, ÔÅËÕÝÉÊ ÎÏÍÅÒ: %d (ÔÁÊÍÁÕÔ: %g)"
|
||||||
|
|
||||||
#: server.c:1189
|
#: server.c:1205
|
||||||
msgid "Limit of connections reached"
|
msgid "Limit of connections reached"
|
||||||
msgstr ""
|
msgstr "äÏÓÔÉÇÎÕÔ ÐÒÅÄÅÌ ËÏÌÉÞÅÓÔ×Á ÐÏÄËÌÀÞÅÎÉÊ"
|
||||||
|
|
||||||
#: main.c:124
|
#: main.c:127
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Log file %s @ level %d\n"
|
msgid "Log file %s @ level %d\n"
|
||||||
msgstr ""
|
msgstr "ìÏÇ-ÆÁÊÌ %s Ó ÕÒÏ×ÎÅÍ %d\n"
|
||||||
|
|
||||||
#. save image
|
#. save image
|
||||||
#: imageview.c:752
|
#: imageview.c:752
|
||||||
msgid "Make screenshot"
|
msgid "Make screenshot"
|
||||||
msgstr ""
|
msgstr "óÄÅÌÁÔØ ÓËÒÉÎÛÏÔ"
|
||||||
|
|
||||||
#: main.c:52
|
#: main.c:55
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Master killed with sig=%d"
|
msgid "Master killed with sig=%d"
|
||||||
msgstr ""
|
msgstr "èÏÚÑÉÎ ÕÂÉÔ Ó ÓÉÇÎÁÌÏÍ %d"
|
||||||
|
|
||||||
#: ccdfunc.c:665
|
#: ccdfunc.c:803
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Maximal gain: %g"
|
msgid "Maximal gain: %g"
|
||||||
msgstr ""
|
msgstr "îÁÉÂÏÌØÛÉÊ gain: %g"
|
||||||
|
|
||||||
#: ccdfunc.c:649
|
#: ccdfunc.c:787
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Maximal geometry (WxH): %dx%d"
|
msgid "Maximal geometry (WxH): %dx%d"
|
||||||
msgstr ""
|
msgstr "îÁÉÂÏÌØÛÁÑ ÇÅÏÍÅÔÒÉÑ (WxH): %dx%d"
|
||||||
|
|
||||||
#: ccdfunc.c:650
|
#: ccdfunc.c:788
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Minimal offset: %dx%d"
|
msgid "Minimal offset: %dx%d"
|
||||||
msgstr ""
|
msgstr "íÉÎÉÍÁÌØÎÏÅ ÓÍÅÝÅÎÉÅ: %dx%d"
|
||||||
|
|
||||||
#: imageview.c:616
|
#: imageview.c:616
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missed %zd images"
|
msgid "Missed %zd images"
|
||||||
msgstr ""
|
msgstr "ðÒÏÐÕÝÅÎÏ %zd ÉÚÏÂÒÁÖÅÎÉÊ"
|
||||||
|
|
||||||
#: cmdlnopts.c:91
|
#: cmdlnopts.c:91
|
||||||
msgid "N flushes before exposing (default: 1)"
|
msgid "N flushes before exposing (default: 1)"
|
||||||
msgstr "N ÚÁÓ×ÅÞÉ×ÁÎÉÊ ÐÅÒÅÄ ÜËÓÐÏÚÉÃÉÅÊ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 1)"
|
msgstr "N ÚÁÓ×ÅÞÉ×ÁÎÉÊ ÐÅÒÅÄ ÜËÓÐÏÚÉÃÉÅÊ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 1)"
|
||||||
|
|
||||||
#: ccdfunc.c:948
|
#: ccdfunc.c:1126
|
||||||
msgid "Need exposition time!"
|
msgid "Need exposition time!"
|
||||||
msgstr ""
|
msgstr "õËÁÖÉÔÅ ×ÒÅÍÑ ÜËÓÐÏÚÉÃÉÉ!"
|
||||||
|
|
||||||
#: server.c:270
|
#: server.c:297
|
||||||
msgid "No camera device"
|
msgid "No camera device"
|
||||||
msgstr "îÅ ÕËÁÚÁÎÏ ÕÓÔÒÏÊÓÔ×Ï ËÁÍÅÒÙ"
|
msgstr "îÅ ÕËÁÚÁÎÏ ÕÓÔÒÏÊÓÔ×Ï ËÁÍÅÒÙ"
|
||||||
|
|
||||||
#: ccdfunc.c:557 ccdfunc.c:558
|
#: ccdfunc.c:695 ccdfunc.c:696
|
||||||
msgid "No cameras found"
|
msgid "No cameras found"
|
||||||
msgstr "ëÁÍÅÒ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
msgstr "ëÁÍÅÒ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||||
|
|
||||||
#: server.c:1115
|
#: server.c:1131
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "No devices found"
|
msgid "No devices found"
|
||||||
msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:363
|
#: ccdfunc.c:466
|
||||||
msgid "No focusers found"
|
msgid "No focusers found"
|
||||||
msgstr "æÏËÕÓÅÒÏ× ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
msgstr "æÏËÕÓÅÒÏ× ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||||
|
|
||||||
#: imageview.c:711
|
#: imageview.c:711
|
||||||
msgid "No image changing function defined"
|
msgid "No image changing function defined"
|
||||||
msgstr ""
|
msgstr "îÅ ÏÐÒÅÄÅÌÅÎÁ ÆÕÎËÃÉÑ, ÏÔ×ÅÔÓÔ×ÅÎÎÁÑ ÚÁ ÓÍÅÎÕ ÉÚÏÂÒÁÖÅÎÉÊ"
|
||||||
|
|
||||||
#: ccdfunc.c:453
|
#: ccdfunc.c:575
|
||||||
msgid "No wheels found"
|
msgid "No wheels found"
|
||||||
msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:745
|
#: ccdfunc.c:883
|
||||||
msgid "Only show statistics"
|
msgid "Only show statistics"
|
||||||
msgstr "ôÏÌØËÏ ÏÔÏÂÒÁÚÉÔØ ÓÔÁÔÉÓÔÉËÕ"
|
msgstr "ôÏÌØËÏ ÏÔÏÂÒÁÚÉÔØ ÓÔÁÔÉÓÔÉËÕ"
|
||||||
|
|
||||||
#: main.c:98
|
#: main.c:101
|
||||||
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 ""
|
msgstr "ïÐÃÉÉ `port` É `path` ÎÅ ÍÏÇÕÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÓÏ×ÍÅÓÔÎÏ! õËÁÖÉÔÅ "
|
||||||
|
"`port` ÄÌÑ TCP-ÓÏËÅÔÏ× ÉÌÉ `path` ÄÌÑ UNIX."
|
||||||
|
|
||||||
#: ccdfunc.c:634
|
#: ccdfunc.c:772
|
||||||
#, 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:935
|
#: ccdfunc.c:1113
|
||||||
msgid "Point network port or UNIX-socket path"
|
msgid "Point network port or UNIX-socket path"
|
||||||
msgstr ""
|
msgstr "õËÁÖÉÔÅ ÓÅÔÅ×ÏÊ ÐÏÒÔ ÉÌÉ ÐÕÔØ Ë UNIX-ÓÏËÅÔÕ"
|
||||||
|
|
||||||
#: ccdfunc.c:784
|
#: ccdfunc.c:962
|
||||||
msgid "Read grabbed image"
|
msgid "Read grabbed image"
|
||||||
msgstr "óÞÉÔÙ×ÁÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ"
|
msgstr "óÞÉÔÙ×ÁÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ"
|
||||||
|
|
||||||
#: ccdfunc.c:744
|
#: ccdfunc.c:882
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Readout mode: %s"
|
msgid "Readout mode: %s"
|
||||||
msgstr "òÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ: %s"
|
msgstr "òÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ: %s"
|
||||||
|
|
||||||
#: client.c:186
|
#: client.c:186
|
||||||
#, fuzzy
|
|
||||||
msgid "Send custom plugin commands\n"
|
msgid "Send custom plugin commands\n"
|
||||||
msgstr "ÏÓÏÂÙÅ ËÏÍÁÎÄÙ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ"
|
msgstr "ïÔÐÒÁ×ÉÔØ ÏÓÏÂÙÅ ËÏÍÁÎÄÙ ÐÌÁÇÉÎÁ ËÁÍÅÒÙ\n"
|
||||||
|
|
||||||
#. 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:288
|
#: client.c:42 client.c:44 client.c:46 client.c:290
|
||||||
#, fuzzy
|
|
||||||
msgid "Server disconnected"
|
msgid "Server disconnected"
|
||||||
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
|
msgstr "óÅÒ×ÅÒ ÏÔËÌÀÞÅÎ"
|
||||||
|
|
||||||
#: client.c:149
|
#: client.c:149
|
||||||
#, fuzzy
|
|
||||||
msgid "Server disconnected?"
|
msgid "Server disconnected?"
|
||||||
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
|
msgstr "óÅÒ×ÅÒ ÏÔËÌÀÞÅÎ?"
|
||||||
|
|
||||||
#: server.c:1093
|
#: server.c:1100
|
||||||
msgid "Server run without image transport socket"
|
msgid "Server run without image transport socket"
|
||||||
msgstr ""
|
msgstr "óÅÒ×ÅÒ ÚÁÐÕÝÅÎ ÂÅÚ ÔÒÁÎÓÐÏÒÔÎÏÇÏ ÓÏËÅÔÁ (ÔÏÌØËÏ SHM)"
|
||||||
|
|
||||||
#: client.c:585
|
#: client.c:589
|
||||||
msgid "Server timeout"
|
msgid "Server timeout"
|
||||||
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
|
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:707
|
#: ccdfunc.c:845
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set brightness to %g"
|
msgid "Set brightness to %g"
|
||||||
msgstr "õÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
msgstr "õÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
||||||
|
|
||||||
#: ccdfunc.c:628
|
#: ccdfunc.c:766
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set fan speed to %d"
|
msgid "Set fan speed to %d"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ× × %d"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ× × %d"
|
||||||
|
|
||||||
#: ccdfunc.c:701
|
#: ccdfunc.c:839
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set gain to %g"
|
msgid "Set gain to %g"
|
||||||
msgstr "õÓÔÁÎÏ×ÉÔØ Gain × %g"
|
msgstr "õÓÔÁÎÏ×ÉÔØ Gain × %g"
|
||||||
|
|
||||||
#: main.c:116
|
#: main.c:119
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "Set image port to %s\n"
|
msgid "Set image port to %s\n"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ× × %d"
|
msgstr "õÓÔÁÎÁ×ÌÉ×ÁÀ ÎÏÍÅÒ ÔÒÁÎÓÐÏÒÔÎÏÇÏ ÐÏÒÔÁ × %d\n"
|
||||||
|
|
||||||
#: imageview.c:756
|
#: imageview.c:756
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set output prefix to %s"
|
msgid "Set output prefix to %s"
|
||||||
msgstr ""
|
msgstr "õÓÔÁÎÁ×ÌÉ×ÁÀ ×ÙÈÏÄÎÏÊ ÐÒÅÆÉËÓ × %s"
|
||||||
|
|
||||||
#: ccdfunc.c:676
|
#: ccdfunc.c:814
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shutter command: %s\n"
|
msgid "Shutter command: %s\n"
|
||||||
msgstr "ëÏÍÁÎÄÁ ÚÁÔ×ÏÒÁ: %s\n"
|
msgstr "ëÏÍÁÎÄÁ ÚÁÔ×ÏÒÁ: %s\n"
|
||||||
|
|
||||||
#: ccdfunc.c:863
|
#: ccdfunc.c:1041
|
||||||
msgid "Some error when capture"
|
msgid "Some error when capture"
|
||||||
msgstr "ïÛÉÂËÁ ÐÒÉ ÚÁÈ×ÁÔÅ"
|
msgstr "ïÛÉÂËÁ ÐÒÉ ÚÁÈ×ÁÔÅ"
|
||||||
|
|
||||||
#: server.c:222
|
#: server.c:249
|
||||||
msgid "Something's wrong with camera"
|
msgid "Something's wrong with camera"
|
||||||
msgstr ""
|
msgstr "þÔÏ-ÔÏ ËÁÍÅÒÅ ÐÏÐÌÏÈÅÌÏ"
|
||||||
|
|
||||||
#: client.c:466
|
#: client.c:470
|
||||||
msgid "Still got old image"
|
msgid "Still got old image"
|
||||||
msgstr ""
|
msgstr "÷ÓÅ ÅÝÅ ÐÏÌÕÞÁÀ ÓÔÁÒÙÅ ÉÚÏÂÒÁÖÅÎÉÑ"
|
||||||
|
|
||||||
#: client.c:440
|
#: client.c:443
|
||||||
msgid "Too many FITS headers, truncating"
|
msgid "Too many FITS headers, truncating"
|
||||||
msgstr ""
|
msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÚÁÇÏÌÏ×ËÏ× FITS, ÏÂÒÅÚÁÀ"
|
||||||
|
|
||||||
#: ccdfunc.c:681
|
#: ccdfunc.c:819
|
||||||
#, 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:692
|
#: ccdfunc.c:830
|
||||||
#, 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"
|
||||||
@@ -697,29 +688,28 @@ msgstr "
|
|||||||
msgid "UNIX socket name (command socket)"
|
msgid "UNIX socket name (command socket)"
|
||||||
msgstr "ÉÍÑ UNIX-ÓÏËÅÔÁ"
|
msgstr "ÉÍÑ UNIX-ÓÏËÅÔÁ"
|
||||||
|
|
||||||
#: client.c:512
|
#: client.c:516
|
||||||
#, fuzzy
|
|
||||||
msgid "Wait for exposition end"
|
msgid "Wait for exposition end"
|
||||||
msgstr "ÖÄÁÔØ, ÐÏËÁ ÎÅ ËÏÎÞÉÔÓÑ ÜËÓÐÏÚÉÃÉÑ"
|
msgstr "öÄÕ, ÐÏËÁ ÎÅ ËÏÎÞÉÔÓÑ ÜËÓÐÏÚÉÃÉÑ"
|
||||||
|
|
||||||
#: ccdfunc.c:446
|
#: ccdfunc.c:568
|
||||||
msgid "Wheel device not pointed"
|
msgid "Wheel device not pointed"
|
||||||
msgstr "õÓÔÒÏÊÓÔ×Ï ÔÕÒÅÌÉ ÎÅ ÕËÁÚÁÎÏ"
|
msgstr "õÓÔÒÏÊÓÔ×Ï ÔÕÒÅÌÉ ÎÅ ÕËÁÚÁÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:492
|
#: ccdfunc.c:634
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "Wheel model: %s"
|
msgid "Wheel model: %s"
|
||||||
msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s"
|
msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:510
|
#: ccdfunc.c:648
|
||||||
#, 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:103
|
#: main.c:106
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Wrong port value: %d"
|
msgid "Wrong port value: %d"
|
||||||
msgstr ""
|
msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÎÏÍÅÒ ÐÏÒÔÁ: %d"
|
||||||
|
|
||||||
#: cmdlnopts.c:98
|
#: cmdlnopts.c:98
|
||||||
msgid "absolute (not divided by binning!) frame X0 coordinate (-1 - all "
|
msgid "absolute (not divided by binning!) frame X0 coordinate (-1 - all "
|
||||||
@@ -797,7 +787,8 @@ msgstr "
|
|||||||
#: cmdlnopts.c:129
|
#: cmdlnopts.c:129
|
||||||
msgid "get base information about connected hardware (also increasing text "
|
msgid "get base information about connected hardware (also increasing text "
|
||||||
"messages level to 2)"
|
"messages level to 2)"
|
||||||
msgstr ""
|
msgstr "ÐÏÌÕÞÉÔØ ÂÁÚÏ×ÕÀ ÉÎÆÏÒÍÁÃÉÀ Ï ÐÏÄËÌÀÞÅÎÎÏÍ ÏÂÏÒÕÄÏ×ÁÎÉÉ (ÔÁËÖÅ "
|
||||||
|
"×ËÌÀÞÁÑ ÔÅËÓÔÏ×ÙÅ ÓÏÏÂÝÅÎÉÑ Ó ÕÒÏ×ÎÅÍÑ ÄÏ 2)"
|
||||||
|
|
||||||
#: cmdlnopts.c:107
|
#: cmdlnopts.c:107
|
||||||
msgid "get value of I/O port pins"
|
msgid "get value of I/O port pins"
|
||||||
@@ -846,7 +837,7 @@ msgstr "
|
|||||||
|
|
||||||
#: cmdlnopts.c:128
|
#: cmdlnopts.c:128
|
||||||
msgid "network answer timeout (default: 0.1s)"
|
msgid "network answer timeout (default: 0.1s)"
|
||||||
msgstr ""
|
msgstr "ÔÁÊÍÁÕÔ ÏÔ×ÅÔÁ ÐÏ ÓÅÔÉ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 0.1Ó)"
|
||||||
|
|
||||||
#: cmdlnopts.c:76
|
#: cmdlnopts.c:76
|
||||||
msgid "not open shutter, when exposing (\"dark frames\")"
|
msgid "not open shutter, when exposing (\"dark frames\")"
|
||||||
@@ -916,9 +907,9 @@ msgstr "
|
|||||||
msgid "run in 8-bit mode"
|
msgid "run in 8-bit mode"
|
||||||
msgstr "8-ÂÉÔÎÙÊ ÒÅÖÉÍ"
|
msgstr "8-ÂÉÔÎÙÊ ÒÅÖÉÍ"
|
||||||
|
|
||||||
#: server.c:1092
|
#: server.c:1099
|
||||||
msgid "server(): need at least command socket fd"
|
msgid "server(): need at least command socket fd"
|
||||||
msgstr ""
|
msgstr "server(): ÎÕÖÅÎ ËÁË ÍÉÎÉÍÕÍ ÄÅÓËÒÉÐÔÏÒ ËÏÍÁÎÄÎÏÇÏ ÓÏËÅÔÁ"
|
||||||
|
|
||||||
#: cmdlnopts.c:79
|
#: cmdlnopts.c:79
|
||||||
msgid "set CCD temperature to given value (degr C)"
|
msgid "set CCD temperature to given value (degr C)"
|
||||||
@@ -952,9 +943,9 @@ 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:939
|
#: ccdfunc.c:1117
|
||||||
msgid "start_socket(): can't open socket"
|
msgid "start_socket(): can't open socket"
|
||||||
msgstr ""
|
msgstr "start_socket(): ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ÓÏËÅÔ"
|
||||||
|
|
||||||
#: cmdlnopts.c:75
|
#: cmdlnopts.c:75
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
|
|||||||
3
main.c
3
main.c
@@ -40,6 +40,9 @@
|
|||||||
static int isserver = FALSE;
|
static int isserver = FALSE;
|
||||||
static pid_t childpid = 0;
|
static pid_t childpid = 0;
|
||||||
|
|
||||||
|
// get struct size
|
||||||
|
//char (*__dummy)[sizeof(cc_IMG)] = 1;
|
||||||
|
|
||||||
void signals(int signo){
|
void signals(int signo){
|
||||||
//if(signo) signal(signo, SIG_IGN);
|
//if(signo) signal(signo, SIG_IGN);
|
||||||
DBG("signo=%d", signo);
|
DBG("signo=%d", signo);
|
||||||
|
|||||||
124
server.c
124
server.c
@@ -46,9 +46,9 @@ static cc_frameformat frmformatmax = {0}, curformat = {0}; // maximal format
|
|||||||
// image in shared memory
|
// image in shared memory
|
||||||
static cc_IMG *ima = NULL;
|
static cc_IMG *ima = NULL;
|
||||||
|
|
||||||
static float focmaxpos = 0., focminpos = 0.; // focuser extremal positions
|
static float focmaxpos = 0.f, focminpos = 0.f; // focuser extremal positions
|
||||||
static int wmaxpos = 0.; // wheel max pos
|
static int wmaxpos = 0; // wheel max pos
|
||||||
static float tremain = 0.; // time when capture done
|
static float tremain = 0.f; // time when capture done
|
||||||
|
|
||||||
// IPC key for shared memory (for client's getter)
|
// IPC key for shared memory (for client's getter)
|
||||||
static key_t shmkey = IPC_PRIVATE;
|
static key_t shmkey = IPC_PRIVATE;
|
||||||
@@ -61,7 +61,7 @@ typedef struct{
|
|||||||
|
|
||||||
// cat | awk '{print "{ " $3 ", \"\" }," }' | sort
|
// cat | awk '{print "{ " $3 ", \"\" }," }' | sort
|
||||||
strpair allcommands[] = {
|
strpair allcommands[] = {
|
||||||
{ CC_CMD_AUTHOR, "FITS 'AUTHOR' field" },
|
//{ CC_CMD_AUTHOR, "FITS 'AUTHOR' field" },
|
||||||
{ CC_CMD_BRIGHTNESS, "camera brightness" },
|
{ CC_CMD_BRIGHTNESS, "camera brightness" },
|
||||||
{ CC_CMD_CAMDEVNO, "camera device number" },
|
{ CC_CMD_CAMDEVNO, "camera device number" },
|
||||||
{ CC_CMD_CAMFLAGS, "get camflags (bits: 0-start capture, 1-cancel, 2-restart server"},
|
{ CC_CMD_CAMFLAGS, "get camflags (bits: 0-start capture, 1-cancel, 2-restart server"},
|
||||||
@@ -81,23 +81,23 @@ strpair allcommands[] = {
|
|||||||
{ CC_CMD_FTEMP, "get focuser body temperature"},
|
{ CC_CMD_FTEMP, "get focuser body temperature"},
|
||||||
{ CC_CMD_FRAMEFORMAT, "camera frame format (X0,Y0,X1,Y1)" },
|
{ CC_CMD_FRAMEFORMAT, "camera frame format (X0,Y0,X1,Y1)" },
|
||||||
{ CC_CMD_GAIN, "camera gain" },
|
{ CC_CMD_GAIN, "camera gain" },
|
||||||
{ CC_CMD_GETHEADERS, "get last file FITS headers" },
|
//{ CC_CMD_GETHEADERS, "get last file FITS headers" },
|
||||||
{ CC_CMD_HBIN, "horizontal binning" },
|
{ CC_CMD_HBIN, "horizontal binning" },
|
||||||
{ CC_CMD_HELP, "show this help" },
|
{ CC_CMD_HELP, "show this help" },
|
||||||
{ CC_CMD_IMHEIGHT, "last image height" },
|
{ CC_CMD_IMHEIGHT, "last image height" },
|
||||||
{ CC_CMD_IMNUMBER, "grabbed image number from server start"},
|
{ CC_CMD_IMNUMBER, "grabbed image number from server start"},
|
||||||
{ CC_CMD_IMWIDTH, "last image width" },
|
{ CC_CMD_IMWIDTH, "last image width" },
|
||||||
{ CC_CMD_INFTY, "an infinity loop taking images until there's connected clients" },
|
{ CC_CMD_INFTY, "an infinity loop taking images until there's connected clients" },
|
||||||
{ CC_CMD_INSTRUMENT, "FITS 'INSTRUME' field" },
|
//{ CC_CMD_INSTRUMENT, "FITS 'INSTRUME' field" },
|
||||||
{ CC_CMD_IO, "get/set camera IO" },
|
{ CC_CMD_IO, "get/set camera IO" },
|
||||||
{ CC_CMD_8BIT, "run in 8 bit mode instead of 16 bit" },
|
{ CC_CMD_8BIT, "run in 8 bit mode instead of 16 bit" },
|
||||||
{ CC_CMD_FRAMEMAX, "camera maximal available format" },
|
{ CC_CMD_FRAMEMAX, "camera maximal available format" },
|
||||||
{ CC_CMD_NFLUSHES, "camera number of preflushes" },
|
{ CC_CMD_NFLUSHES, "camera number of preflushes" },
|
||||||
{ CC_CMD_OBJECT, "FITS 'OBJECT' field" },
|
//{ CC_CMD_OBJECT, "FITS 'OBJECT' field" },
|
||||||
{ CC_CMD_OBJTYPE, "FITS 'IMAGETYP' field" },
|
//{ CC_CMD_OBJTYPE, "FITS 'IMAGETYP' field" },
|
||||||
{ CC_CMD_OBSERVER, "FITS 'OBSERVER' field" },
|
//{ CC_CMD_OBSERVER, "FITS 'OBSERVER' field" },
|
||||||
{ CC_CMD_PLUGINCMD, "custom camera plugin command" },
|
{ CC_CMD_PLUGINCMD, "custom camera plugin command" },
|
||||||
{ CC_CMD_PROGRAM, "FITS 'PROG-ID' field" },
|
//{ CC_CMD_PROGRAM, "FITS 'PROG-ID' field" },
|
||||||
{ CC_CMD_RESTART, "restart server" },
|
{ CC_CMD_RESTART, "restart server" },
|
||||||
{ CC_CMD_SHMEMKEY, "get shared memory key" },
|
{ CC_CMD_SHMEMKEY, "get shared memory key" },
|
||||||
{ CC_CMD_SHUTTER, "camera shutter's operations" },
|
{ CC_CMD_SHUTTER, "camera shutter's operations" },
|
||||||
@@ -106,7 +106,7 @@ strpair allcommands[] = {
|
|||||||
{ CC_CMD_VBIN, "vertical binning" },
|
{ CC_CMD_VBIN, "vertical binning" },
|
||||||
{ CC_CMD_WDEVNO, "wheel device number" },
|
{ CC_CMD_WDEVNO, "wheel device number" },
|
||||||
{ CC_CMD_WLIST, "list all connected wheels" },
|
{ CC_CMD_WLIST, "list all connected wheels" },
|
||||||
{ CC_CMD_WMAXPOS, "get maximap wheel position"},
|
{ CC_CMD_WMAXPOS, "get maximal wheel position"},
|
||||||
{ CC_CMD_WPOS, "wheel position" },
|
{ CC_CMD_WPOS, "wheel position" },
|
||||||
{ CC_CMD_WTEMP, "get wheel body temperature"},
|
{ CC_CMD_WTEMP, "get wheel body temperature"},
|
||||||
{NULL, NULL},
|
{NULL, NULL},
|
||||||
@@ -168,6 +168,30 @@ static void fixima(){
|
|||||||
ima->datasize = ima->bytelen;
|
ima->datasize = ima->bytelen;
|
||||||
// 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);
|
||||||
@@ -177,6 +201,9 @@ static void fixima(){
|
|||||||
DBG("curformat: %dx%d", curformat.w, curformat.h);
|
DBG("curformat: %dx%d", curformat.w, curformat.h);
|
||||||
ima->h = raw_height;
|
ima->h = raw_height;
|
||||||
ima->w = raw_width;
|
ima->w = raw_width;
|
||||||
|
ima->bin_x = GP->hbin;
|
||||||
|
ima->bin_y = GP->vbin;
|
||||||
|
ima->exposure_time = GP->exptime;
|
||||||
if(!camera->getbitpix || !camera->getbitpix(&ima->bitpix)) ima->bitpix = 16;
|
if(!camera->getbitpix || !camera->getbitpix(&ima->bitpix)) ima->bitpix = 16;
|
||||||
if(ima->bitpix < 8 || ima->bitpix > 16) ima->bitpix = 16; // use maximum in any strange cases
|
if(ima->bitpix < 8 || ima->bitpix > 16) ima->bitpix = 16; // use maximum in any strange cases
|
||||||
DBG("bitpix=%d", ima->bitpix);
|
DBG("bitpix=%d", ima->bitpix);
|
||||||
@@ -232,8 +259,11 @@ static inline void cameracapturestate(){ // capturing - wait for exposition ends
|
|||||||
TIMESTAMP("Capture ready");
|
TIMESTAMP("Capture ready");
|
||||||
tremain = 0.;
|
tremain = 0.;
|
||||||
// now capture frame
|
// now capture frame
|
||||||
if(!ima || !ima->data) LOGERR("Can't capture image: data not initialized");
|
if(!ima || !ima->data){
|
||||||
else{
|
LOGERR("Can't capture image: data not initialized");
|
||||||
|
camstate = CAMERA_ERROR;
|
||||||
|
return;
|
||||||
|
}else{
|
||||||
TIMESTAMP("start capture");
|
TIMESTAMP("start capture");
|
||||||
if(!camera->capture){
|
if(!camera->capture){
|
||||||
WARNX(_("Camera plugin have no function `capture`"));
|
WARNX(_("Camera plugin have no function `capture`"));
|
||||||
@@ -247,13 +277,10 @@ static inline void cameracapturestate(){ // capturing - wait for exposition ends
|
|||||||
LOGERR("Can't capture image");
|
LOGERR("Can't capture image");
|
||||||
camstate = CAMERA_ERROR;
|
camstate = CAMERA_ERROR;
|
||||||
return;
|
return;
|
||||||
}else{
|
|
||||||
TIMESTAMP("Fill FITS header");
|
|
||||||
ima->gotstat = 0; // fresh image without statistics - recalculate when save
|
|
||||||
ima->timestamp = sl_dtime(); // set timestamp
|
|
||||||
fillFITSheader(ima);
|
|
||||||
++ima->imnumber; // increment counter
|
|
||||||
}
|
}
|
||||||
|
fill_image_fields(ima);
|
||||||
|
//fillFITSheader(ima);
|
||||||
|
++ima->imnumber; // increment counter
|
||||||
cc_unlock_shm();
|
cc_unlock_shm();
|
||||||
LOGDBG("cameracapturestate(): SHM UNlocked");
|
LOGDBG("cameracapturestate(): SHM UNlocked");
|
||||||
TIMESTAMP("Captured and unlocked");
|
TIMESTAMP("Captured and unlocked");
|
||||||
@@ -354,29 +381,7 @@ static int camdevini(int n){
|
|||||||
if(!camera->setgeometry || !camera->setgeometry(&curformat)) WARNX(_("Can't set given geometry"));
|
if(!camera->setgeometry || !camera->setgeometry(&curformat)) WARNX(_("Can't set given geometry"));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
static int focdevini(int n){
|
|
||||||
if(!focuser) return FALSE;
|
|
||||||
if(!focuser->setDevNo(n)){
|
|
||||||
LOGERR("Can't set active focuser number");
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
atomic_store(&focdevno, n);
|
|
||||||
LOGMSG("Set focuser device number to %d", n);
|
|
||||||
focuser->getMaxPos(&focmaxpos);
|
|
||||||
focuser->getMinPos(&focminpos);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
static int wheeldevini(int n){
|
|
||||||
if(!wheel) return FALSE;
|
|
||||||
if(!wheel->setDevNo(n)){
|
|
||||||
LOGERR("Can't set active wheel number");
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
atomic_store(&wheeldevno, n);
|
|
||||||
LOGMSG("Set wheel device number to %d", n);
|
|
||||||
wheel->getMaxPos(&wmaxpos);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*************************** Service handlers **********************************
|
*************************** Service handlers **********************************
|
||||||
@@ -727,6 +732,7 @@ static cc_hresult darkhandler(int fd, _U_ const char *key, const char *val){
|
|||||||
if(!cc_sendstrmessage(fd, buf)) return CC_RESULT_DISCONNECTED;
|
if(!cc_sendstrmessage(fd, buf)) return CC_RESULT_DISCONNECTED;
|
||||||
return CC_RESULT_SILENCE;
|
return CC_RESULT_SILENCE;
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
static cc_hresult FITSparhandler(int fd, const char *key, const char *val){
|
static cc_hresult FITSparhandler(int fd, const char *key, const char *val){
|
||||||
char buf[256], **fitskey = NULL;
|
char buf[256], **fitskey = NULL;
|
||||||
if(0 == strcmp(key, CC_CMD_AUTHOR)){
|
if(0 == strcmp(key, CC_CMD_AUTHOR)){
|
||||||
@@ -750,6 +756,7 @@ static cc_hresult FITSparhandler(int fd, const char *key, const char *val){
|
|||||||
if(!cc_sendstrmessage(fd, buf)) return CC_RESULT_DISCONNECTED;
|
if(!cc_sendstrmessage(fd, buf)) return CC_RESULT_DISCONNECTED;
|
||||||
return CC_RESULT_SILENCE;
|
return CC_RESULT_SILENCE;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
static cc_hresult handler(_U_ int fd, _U_ const char *key, _U_ const char *val){
|
static cc_hresult handler(_U_ int fd, _U_ const char *key, _U_ const char *val){
|
||||||
char buf[64];
|
char buf[64];
|
||||||
@@ -795,7 +802,7 @@ static cc_hresult wsetNhandler(int fd, _U_ const char *key, const char *val){
|
|||||||
if(num > wheel->Ndevices - 1 || num < 0){
|
if(num > wheel->Ndevices - 1 || num < 0){
|
||||||
return CC_RESULT_BADVAL;
|
return CC_RESULT_BADVAL;
|
||||||
}
|
}
|
||||||
if(!wheeldevini(num)) return CC_RESULT_FAIL;
|
if(!setWheelNo(num, &wmaxpos)) return CC_RESULT_FAIL;
|
||||||
}
|
}
|
||||||
snprintf(buf, 63, CC_CMD_WDEVNO "=%d", atomic_load(&wheeldevno));
|
snprintf(buf, 63, CC_CMD_WDEVNO "=%d", atomic_load(&wheeldevno));
|
||||||
if(!cc_sendstrmessage(fd, buf)) return CC_RESULT_DISCONNECTED;
|
if(!cc_sendstrmessage(fd, buf)) return CC_RESULT_DISCONNECTED;
|
||||||
@@ -867,7 +874,7 @@ static cc_hresult fsetNhandler(int fd, _U_ const char *key, const char *val){
|
|||||||
if(num > focuser->Ndevices - 1 || num < 0){
|
if(num > focuser->Ndevices - 1 || num < 0){
|
||||||
return CC_RESULT_BADVAL;
|
return CC_RESULT_BADVAL;
|
||||||
}
|
}
|
||||||
if(!focdevini(num)) return CC_RESULT_FAIL;
|
if(!setFocuserNo(num, &focminpos, &focmaxpos)) return CC_RESULT_FAIL;
|
||||||
}
|
}
|
||||||
snprintf(buf, 63, CC_CMD_FDEVNO "=%d", atomic_load(&focdevno));
|
snprintf(buf, 63, CC_CMD_FDEVNO "=%d", atomic_load(&focdevno));
|
||||||
if(!cc_sendstrmessage(fd, buf)) return CC_RESULT_DISCONNECTED;
|
if(!cc_sendstrmessage(fd, buf)) return CC_RESULT_DISCONNECTED;
|
||||||
@@ -945,6 +952,7 @@ static cc_hresult pluginhandler(int fd, _U_ const char *key, const char *val){
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
// get headers
|
// get headers
|
||||||
static cc_hresult gethdrshandler(int fd, _U_ const char *key, _U_ const char *val){
|
static cc_hresult gethdrshandler(int fd, _U_ const char *key, _U_ const char *val){
|
||||||
if(!ima) return CC_RESULT_FAIL;
|
if(!ima) return CC_RESULT_FAIL;
|
||||||
@@ -958,6 +966,7 @@ static cc_hresult gethdrshandler(int fd, _U_ const char *key, _U_ const char *va
|
|||||||
}
|
}
|
||||||
return CC_RESULT_SILENCE;
|
return CC_RESULT_SILENCE;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// for setters: do nothing when camera not in idle state
|
// for setters: do nothing when camera not in idle state
|
||||||
static int CAMbusy(){
|
static int CAMbusy(){
|
||||||
@@ -1020,6 +1029,7 @@ static cc_handleritem items[] = {
|
|||||||
{chkcc, inftyhandler, CC_CMD_INFTY},
|
{chkcc, inftyhandler, CC_CMD_INFTY},
|
||||||
{chkcc, pluginhandler, CC_CMD_PLUGINCMD},
|
{chkcc, pluginhandler, CC_CMD_PLUGINCMD},
|
||||||
{NULL, tremainhandler, CC_CMD_TREMAIN},
|
{NULL, tremainhandler, CC_CMD_TREMAIN},
|
||||||
|
#if 0
|
||||||
{chkcc, gethdrshandler, CC_CMD_GETHEADERS},
|
{chkcc, gethdrshandler, CC_CMD_GETHEADERS},
|
||||||
{NULL, FITSparhandler, CC_CMD_AUTHOR},
|
{NULL, FITSparhandler, CC_CMD_AUTHOR},
|
||||||
{NULL, FITSparhandler, CC_CMD_INSTRUMENT},
|
{NULL, FITSparhandler, CC_CMD_INSTRUMENT},
|
||||||
@@ -1027,6 +1037,7 @@ static cc_handleritem items[] = {
|
|||||||
{NULL, FITSparhandler, CC_CMD_OBJECT},
|
{NULL, FITSparhandler, CC_CMD_OBJECT},
|
||||||
{NULL, FITSparhandler, CC_CMD_PROGRAM},
|
{NULL, FITSparhandler, CC_CMD_PROGRAM},
|
||||||
{NULL, FITSparhandler, CC_CMD_OBJTYPE},
|
{NULL, FITSparhandler, CC_CMD_OBJTYPE},
|
||||||
|
#endif
|
||||||
{chkfoc, foclisthandler, CC_CMD_FOCLIST},
|
{chkfoc, foclisthandler, CC_CMD_FOCLIST},
|
||||||
{chkfoc, fsetNhandler, CC_CMD_FDEVNO},
|
{chkfoc, fsetNhandler, CC_CMD_FDEVNO},
|
||||||
{chkfoc, fgotohandler, CC_CMD_FGOTO},
|
{chkfoc, fgotohandler, CC_CMD_FGOTO},
|
||||||
@@ -1073,10 +1084,6 @@ static void *sendimage(void *C){
|
|||||||
if(!cc_senddata(client, locimage, sizeof(cc_IMG))) break;
|
if(!cc_senddata(client, locimage, sizeof(cc_IMG))) 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)) break;
|
||||||
// send FITS header (client can close socket if don't need it)
|
|
||||||
for(size_t i = 0; i < locimage->headerstrings; ++i){ // send header
|
|
||||||
if(!cc_senddata(client, &locimage->fitsheader[i], FLEN_CARD)) break;
|
|
||||||
}
|
|
||||||
}while(0);
|
}while(0);
|
||||||
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
|
||||||
@@ -1104,12 +1111,21 @@ void server(int sock, int imsock){
|
|||||||
TIMEINIT();
|
TIMEINIT();
|
||||||
// init everything
|
// init everything
|
||||||
int ctr = 3;
|
int ctr = 3;
|
||||||
if(startFocuser()) --ctr;
|
if(startFocuser()){
|
||||||
focdevini(0);
|
--ctr;
|
||||||
if(startWheel()) --ctr;
|
if(GP->focdevno < 0) GP->focdevno = 0;
|
||||||
wheeldevini(0);
|
setFocuserNo(GP->focdevno, &focminpos, &focmaxpos);
|
||||||
if(startCCD()) --ctr;
|
}
|
||||||
camdevini(0);
|
if(startWheel()){
|
||||||
|
--ctr;
|
||||||
|
if(GP->whldevno < 0) GP->whldevno = 0;
|
||||||
|
setWheelNo(GP->whldevno, &wmaxpos);
|
||||||
|
}
|
||||||
|
if(startCCD()){
|
||||||
|
--ctr;
|
||||||
|
if(GP->camdevno < 0) GP->camdevno = 0;
|
||||||
|
camdevini(GP->camdevno);
|
||||||
|
}
|
||||||
if(ctr == 3){
|
if(ctr == 3){
|
||||||
LOGERR("server(): no devices found");
|
LOGERR("server(): no devices found");
|
||||||
ERRX(_("No devices found"));
|
ERRX(_("No devices found"));
|
||||||
|
|||||||
Reference in New Issue
Block a user