add image counter, infty mode, make some faster

This commit is contained in:
Edward Emelianov 2023-12-25 16:21:27 +03:00
parent cfa057d0c1
commit 3113d9754d
12 changed files with 253 additions and 190 deletions

View File

@ -1,8 +1,8 @@
cmake_minimum_required(VERSION 3.20) cmake_minimum_required(VERSION 3.20)
set(PROJ ccd_capture) set(PROJ ccd_capture)
set(MINOR_VERSION "0")
set(MID_VERSION "1")
set(MAJOR_VERSION "1") set(MAJOR_VERSION "1")
set(MID_VERSION "1")
set(MINOR_VERSION "1")
set(VERSION "${MAJOR_VERSION}.${MID_VERSION}.${MINOR_VERSION}") set(VERSION "${MAJOR_VERSION}.${MID_VERSION}.${MINOR_VERSION}")
project(${PROJ} VERSION ${VERSION} LANGUAGES C) project(${PROJ} VERSION ${VERSION} LANGUAGES C)
@ -52,8 +52,9 @@ if(DEBUG)
set(CMAKE_BUILD_TYPE DEBUG) set(CMAKE_BUILD_TYPE DEBUG)
set(CMAKE_VERBOSE_MAKEFILE "ON") set(CMAKE_VERBOSE_MAKEFILE "ON")
else() else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -march=native -fdata-sections -ffunction-sections -flto") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -march=native -fdata-sections -ffunction-sections -flto=auto")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections -flto") # add_definitions(-DEBUG)
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections -flto=auto")
set(CMAKE_BUILD_TYPE RELEASE) set(CMAKE_BUILD_TYPE RELEASE)
endif() endif()

View File

@ -32,6 +32,7 @@ typedef struct __attribute__((packed, aligned(4))){
uint16_t max, min; // min/max values uint16_t max, min; // min/max values
float avr, std; // statistics float avr, std; // statistics
size_t bytelen; // size of image in bytes size_t bytelen; // size of image in bytes
size_t imnumber; // counter of images captured from server's start
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
/* `data` is uint8_t or uint16_t depending on `bitpix` */ /* `data` is uint8_t or uint16_t depending on `bitpix` */
} IMG; } IMG;

View File

@ -898,13 +898,14 @@ void framerate(){
tlast = t; tlast = t;
} }
static volatile int grabno = 0, lastgrabno = 0, exitgrab = FALSE; static volatile int exitgrab = FALSE;
static volatile size_t lastgrabno = 0;
static void *grabnext(void *arg){ static void *grabnext(void *arg){
FNAME(); FNAME();
IMG *ima = (IMG*) arg; IMG *ima = (IMG*) arg;
do{ do{
if(exitgrab) return NULL; if(exitgrab) return NULL;
TIMESTAMP("Start exp #%d", grabno+1); TIMESTAMP("Start next exp");
TIMEINIT(); TIMEINIT();
if(!ima || !camera) return NULL; if(!ima || !camera) return NULL;
if(!camera->startexposition()){ if(!camera->startexposition()){
@ -922,9 +923,9 @@ static void *grabnext(void *arg){
if(cs != CAPTURE_READY){ WARNX(_("Some error when capture")); return NULL;} if(cs != CAPTURE_READY){ WARNX(_("Some error when capture")); return NULL;}
TIMESTAMP("get"); TIMESTAMP("get");
if(!camera->capture(ima)){ WARNX(_("Can't grab image")); continue; } if(!camera->capture(ima)){ WARNX(_("Can't grab image")); continue; }
++ima->imnumber;
//calculate_stat(ima); //calculate_stat(ima);
TIMESTAMP("OK"); TIMESTAMP("OK");
++grabno;
}while(1); }while(1);
} }
@ -973,9 +974,11 @@ int ccdcaptured(IMG **imgptr){
grabthread = 0; grabthread = 0;
} }
}else{ // grab in process }else{ // grab in process
if(grabno != lastgrabno){ // done if(ima->imnumber != lastgrabno){ // done
lastgrabno = grabno; /*ssize_t delta = ima->imnumber - lastgrabno;
TIMESTAMP("Got exp #%d", grabno); if(delta > 0 && delta != 1) WARNX("ccdcaptured(): missed %zd images", delta-1);*/
lastgrabno = ima->imnumber;
TIMESTAMP("Got exp #%zd", lastgrabno);
framerate(); framerate();
return TRUE; return TRUE;
} }

View File

@ -101,7 +101,7 @@ static int parseans(char *ans){
sscanf(val, "%d,%d,%d,%d", &xc0, &yc0, &xc1, &yc1); sscanf(val, "%d,%d,%d,%d", &xc0, &yc0, &xc1, &yc1);
DBG("Got current format: %d,%d,%d,%d", xc0, yc0, xc1, yc1); DBG("Got current format: %d,%d,%d,%d", xc0, yc0, xc1, yc1);
return TRUE; return TRUE;
} }else if(0 == strcmp(CMD_INFTY, ans)) return TRUE;
/* /*
#ifdef IMAGEVIEW #ifdef IMAGEVIEW
else if(0 == strcmp(CMD_IMWIDTH, ans)){ else if(0 == strcmp(CMD_IMWIDTH, ans)){
@ -245,6 +245,7 @@ void client(int sock){
SENDCMDW(CMD_RESTART); SENDCMDW(CMD_RESTART);
return; return;
} }
if(GP->infty > -1) SENDMSGW(CMD_INFTY, "=%d", GP->infty);
send_headers(sock); send_headers(sock);
double t0 = dtime(), tw = t0; double t0 = dtime(), tw = t0;
int Nremain = 0, nframe = 1; int Nremain = 0, nframe = 1;
@ -255,7 +256,9 @@ void client(int sock){
else GP->waitexpend = TRUE; // N>1 - wait for exp ends else GP->waitexpend = TRUE; // N>1 - wait for exp ends
SENDMSGW(CMD_EXPSTATE, "=%d", CAMERA_CAPTURE); SENDMSGW(CMD_EXPSTATE, "=%d", CAMERA_CAPTURE);
}else{ }else{
getans(sock, NULL); int cntr = 0;
while(dtime() - t0 < WAIT_TIMEOUT && cntr < 10)
if(!getans(sock, NULL)) ++cntr;
DBG("RETURN: no more data"); DBG("RETURN: no more data");
return; return;
} }
@ -389,8 +392,8 @@ static void getimage(){
} }
if(ima.timestamp != oldtimestamp){ // test if image is really new if(ima.timestamp != oldtimestamp){ // test if image is really new
oldtimestamp = ima.timestamp; oldtimestamp = ima.timestamp;
TIMESTAMP("Got image"); grabno = ima.imnumber;
++grabno; TIMESTAMP("Got image #%zd", ima.imnumber);
}else WARNX("Still got old image"); }else WARNX("Still got old image");
eofg: eofg:
if(!shmima) close(imsock); if(!shmima) close(imsock);
@ -403,7 +406,7 @@ static void *grabnext(void _U_ *arg){ // daemon grabbing images through the net
while(1){ while(1){
if(!getWin()) exit(1); if(!getWin()) exit(1);
expstate = CAMERA_CAPTURE; expstate = CAMERA_CAPTURE;
TIMESTAMP("End of cycle, start new #%d", grabno+1); TIMESTAMP("End of cycle, start new");
TIMEINIT(); TIMEINIT();
SENDMSGW(CMD_EXPSTATE, "=%d", CAMERA_CAPTURE); // start capture SENDMSGW(CMD_EXPSTATE, "=%d", CAMERA_CAPTURE); // start capture
double timeout = GP->exptime + CLIENT_TIMEOUT, t0 = dtime(); double timeout = GP->exptime + CLIENT_TIMEOUT, t0 = dtime();
@ -443,7 +446,7 @@ static void *waitimage(void _U_ *arg){ // passive waiting for next image
usleep(1000); usleep(1000);
continue; continue;
} }
TIMESTAMP("End of cycle, start new #%d", grabno+1); TIMESTAMP("End of cycle, start new");
TIMEINIT(); TIMEINIT();
getimage(); getimage();
expstate = CAMERA_IDLE; expstate = CAMERA_IDLE;
@ -487,7 +490,9 @@ int sockcaptured(IMG **imgptr){
if(grabno != oldgrabno){ // image is ready if(grabno != oldgrabno){ // image is ready
TIMESTAMP("Image #%d ready", grabno); TIMESTAMP("Image #%d ready", grabno);
if(*imgptr && (*imgptr != &ima)) free(*imgptr); if(*imgptr && (*imgptr != &ima)) free(*imgptr);
*imgptr = &ima; *imgptr = &ima; /*
ssize_t delta = ima.imnumber - oldgrabno;
if(delta > 0 && delta != 1) WARNX("sockcaptured(): missed %zd images", delta-1);*/
oldgrabno = grabno; oldgrabno = grabno;
framerate(); framerate();
//TIMESTAMP("sockcaptured() end, return TRUE"); //TIMESTAMP("sockcaptured() end, return TRUE");

View File

@ -30,7 +30,8 @@ static glob_pars G = {
.brightness = NAN, .gain = NAN, .brightness = NAN, .gain = NAN,
.setwheel = -1, .setwheel = -1,
.fanspeed = -1, .fanspeed = -1,
.shmkey = 7777777 .shmkey = 7777777,
.infty = -1
}; };
/* /*
@ -105,6 +106,7 @@ myoption cmdlnopts[] = {
{"shmkey", NEED_ARG, NULL, 'k', arg_int, APTR(&G.shmkey), N_("shared memory (with image data) key (default: 7777777")}, {"shmkey", NEED_ARG, NULL, 'k', arg_int, APTR(&G.shmkey), N_("shared memory (with image data) key (default: 7777777")},
{"forceimsock",NO_ARGS, &G.forceimsock,1, arg_none, NULL, N_("force using image through socket transition even if can use SHM")}, {"forceimsock",NO_ARGS, &G.forceimsock,1, arg_none, NULL, N_("force using image through socket transition even if can use SHM")},
{"infty", NEED_ARG, NULL, 0, arg_int, APTR(&G.infty), N_("start (!=0) or stop(==0) infinity capturing loop")},
#ifdef IMAGEVIEW #ifdef IMAGEVIEW
{"display", NO_ARGS, NULL, 'D', arg_int, APTR(&G.showimage), N_("Display image in OpenGL window")}, {"display", NO_ARGS, NULL, 'D', arg_int, APTR(&G.showimage), N_("Display image in OpenGL window")},

View File

@ -71,6 +71,7 @@ typedef struct{
int showimage; // show image preview int showimage; // show image preview
int shmkey; // shared memory (with image data) key int shmkey; // shared memory (with image data) key
int forceimsock; // force using image through socket transition even if can use SHM int forceimsock; // force using image through socket transition even if can use SHM
int infty; // run (==1) or stop (==0) infinity loop
float gain; // gain level (only for CMOS) float gain; // gain level (only for CMOS)
float brightness; // brightness (only for CMOS) float brightness; // brightness (only for CMOS)
double exptime; // time of exposition in seconds double exptime; // time of exposition in seconds

View File

@ -28,7 +28,7 @@
#include "imageview.h" #include "imageview.h"
#include "events.h" #include "events.h"
#include "omp.h" #include "omp.h"
//#include "socket.h" // for timestamp #include "socket.h" // for timestamp
windowData *win = NULL; // main window (common variable for events.c) windowData *win = NULL; // main window (common variable for events.c)
static pthread_t GLUTthread = 0; // main GLUT thread static pthread_t GLUTthread = 0; // main GLUT thread
@ -198,9 +198,10 @@ static void renderBitmapString(float x, float y, void *font, char *string, GLuby
}*/ }*/
static void RedrawWindow(){ static void RedrawWindow(){
//double t0 = dtime();
//DBG("ini=%d, win=%s", initialized, win ? "yes" : "no"); //DBG("ini=%d, win=%s", initialized, win ? "yes" : "no");
if(!initialized || !win || win->killthread) return; if(!initialized || !win || win->killthread) return;
if(pthread_mutex_trylock(&win->mutex)) return; //if(pthread_mutex_trylock(&win->mutex)) return;
GLfloat w = win->image->w, h = win->image->h; GLfloat w = win->image->w, h = win->image->h;
glutSetWindow(win->ID); glutSetWindow(win->ID);
glClearColor(0.0, 0.0, 0.5, 1.0); glClearColor(0.0, 0.0, 0.5, 1.0);
@ -211,6 +212,7 @@ static void RedrawWindow(){
glEnable(GL_TEXTURE_2D); glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, win->Tex); glBindTexture(GL_TEXTURE_2D, win->Tex);
if(win->image->changed){ if(win->image->changed){
pthread_mutex_lock(&win->mutex);
DBG("Image changed!"); DBG("Image changed!");
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, win->image->w, win->image->h, 0, glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, win->image->w, win->image->h, 0,
@ -218,6 +220,7 @@ static void RedrawWindow(){
/* glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, win->image->w, win->image->h, /* glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, win->image->w, win->image->h,
GL_RGB, GL_UNSIGNED_BYTE, win->image->rawdata);*/ GL_RGB, GL_UNSIGNED_BYTE, win->image->rawdata);*/
win->image->changed = 0; win->image->changed = 0;
pthread_mutex_unlock(&win->mutex);
} }
w /= 2.f; h /= 2.f; w /= 2.f; h /= 2.f;
float lr = 1., ud = -1.; // flipping coefficients (mirror image around Y by default) float lr = 1., ud = -1.; // flipping coefficients (mirror image around Y by default)
@ -232,7 +235,8 @@ static void RedrawWindow(){
glDisable(GL_TEXTURE_2D); glDisable(GL_TEXTURE_2D);
glFinish(); glFinish();
glutSwapBuffers(); glutSwapBuffers();
pthread_mutex_unlock(&win->mutex); //pthread_mutex_unlock(&win->mutex);
//DBG("redraw: %gs", dtime()-t0);
usleep(1000); usleep(1000);
} }
@ -520,6 +524,7 @@ static uint8_t *mkcuts(IMG *img, int w, int h){
int s = w*h; int s = w*h;
double sum = 0., sum2 = 0.; double sum = 0., sum2 = 0.;
int bytes = getNbytes(img); int bytes = getNbytes(img);
TIMESTAMP("Make histogram");
if(bytes == 1){ if(bytes == 1){
uint8_t *data = (uint8_t*) img->data; uint8_t *data = (uint8_t*) img->data;
#pragma omp parallel #pragma omp parallel
@ -561,7 +566,7 @@ static uint8_t *mkcuts(IMG *img, int w, int h){
} }
} }
} }
TIMESTAMP("Calculate stat");
//WARNX("histo: %gs", dtime()-t0); //WARNX("histo: %gs", dtime()-t0);
// get median level // get median level
int counts = s/2, median = 0, max = (bytes == 1) ? 0xff : 0xffff; int counts = s/2, median = 0, max = (bytes == 1) ? 0xff : 0xffff;
@ -578,6 +583,7 @@ static uint8_t *mkcuts(IMG *img, int w, int h){
// now we can recalculate values: new = (old - low)*A // now we can recalculate values: new = (old - low)*A
//WARNX("stat: %gs", dtime()-t0); //WARNX("stat: %gs", dtime()-t0);
// DEBUG: 2ms without OMP; 0.7ms with // DEBUG: 2ms without OMP; 0.7ms with
TIMESTAMP("apply cuts");
if(bytes == 1){ if(bytes == 1){
uint8_t *data = (uint8_t*) img->data; uint8_t *data = (uint8_t*) img->data;
OMP_FOR() OMP_FOR()
@ -603,18 +609,26 @@ static uint8_t *mkcuts(IMG *img, int w, int h){
static void change_displayed_image(IMG *img){ static void change_displayed_image(IMG *img){
if(!win || !img) return; if(!win || !img) return;
pthread_mutex_lock(&win->mutex); static size_t lastN = 0;
ssize_t delta = img->imnumber - lastN;
TIMESTAMP("Got image #%zd", img->imnumber);
if(delta > 0 && delta != 1) WARNX("Missed %zd images", delta-1);
lastN = img->imnumber;
//pthread_mutex_lock(&win->mutex);
rawimage *im = win->image; rawimage *im = win->image;
DBG("imh=%d, imw=%d, ch=%u, cw=%u", im->h, im->w, img->h, img->w); DBG("imh=%d, imw=%d, ch=%u, cw=%u", im->h, im->w, img->h, img->w);
int w = img->w, h = img->h, s = w*h; int w = img->w, h = img->h, s = w*h;
if(!im || (im->h != h) || (im->w != w)){ // realloc image to new size if(!im || (im->h != h) || (im->w != w)){ // realloc image to new size
pthread_mutex_lock(&win->mutex);
DBG("\n\nRealloc rawdata"); DBG("\n\nRealloc rawdata");
if(!im) im = MALLOC(rawimage, 1); if(!im) im = MALLOC(rawimage, 1);
if(im->h*im->w < s) im->rawdata = realloc(im->rawdata, s*3); if(im->h*im->w < s) im->rawdata = realloc(im->rawdata, s*3);
im->h = h; im->w = w; im->h = h; im->w = w;
win->image = im; win->image = im;
DBG("win->image changed"); DBG("win->image changed");
pthread_mutex_unlock(&win->mutex);
} }
TIMESTAMP("level correction");
uint8_t *newima; uint8_t *newima;
if(imequalize){ if(imequalize){
DBG("equalize"); DBG("equalize");
@ -624,6 +638,7 @@ static void change_displayed_image(IMG *img){
newima = mkcuts(img, w, h); newima = mkcuts(img, w, h);
} }
GLubyte *dst = im->rawdata; GLubyte *dst = im->rawdata;
TIMESTAMP("colorfun");
//double t0 = dtime(); //double t0 = dtime();
if(ft < COLORFN_LINEAR){ // gray if(ft < COLORFN_LINEAR){ // gray
// without OMP: 1.8ms; with OMP: 0.8ms // without OMP: 1.8ms; with OMP: 0.8ms
@ -657,7 +672,7 @@ static void change_displayed_image(IMG *img){
}*/ }*/
DBG("Unlock"); DBG("Unlock");
win->image->changed = 1; win->image->changed = 1;
pthread_mutex_unlock(&win->mutex); //pthread_mutex_unlock(&win->mutex);
} }
void closeGL(){ // killed by external signal or ctrl+c void closeGL(){ // killed by external signal or ctrl+c
@ -703,10 +718,10 @@ int viewer(imagefunc newimage){
if((win->winevt & WINEVT_GETIMAGE) || !(win->winevt & WINEVT_PAUSE)){ if((win->winevt & WINEVT_GETIMAGE) || !(win->winevt & WINEVT_PAUSE)){
//DBG("CHK new image, t=%g", dtime()-t0); //DBG("CHK new image, t=%g", dtime()-t0);
if(newimage(&img)){ if(newimage(&img)){
//TIMESTAMP("got image -> change"); TIMESTAMP("got image -> change");
win->winevt &= ~WINEVT_GETIMAGE; win->winevt &= ~WINEVT_GETIMAGE;
change_displayed_image(img); // change image if refreshed change_displayed_image(img); // change image if refreshed
//TIMESTAMP("changed"); TIMESTAMP("changed");
} }
//DBG("Next cycle, t=%g", dtime()-t0); //DBG("Next cycle, t=%g", dtime()-t0);
} }

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-21 16:46+0300\n" "POT-Creation-Date: 2023-12-25 16:15+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,243 +17,247 @@ 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"
#: cmdlnopts.c:41 #: cmdlnopts.c:42
msgid "common device plugin (e.g devfli.so)" msgid "common device plugin (e.g devfli.so)"
msgstr "" msgstr ""
#: cmdlnopts.c:42 #: cmdlnopts.c:43
msgid "camera device plugin (e.g. devfli.so)" msgid "camera device plugin (e.g. devfli.so)"
msgstr "" msgstr ""
#: cmdlnopts.c:43 #: cmdlnopts.c:44
msgid "focuser device plugin (e.g. devzwo.so)" msgid "focuser device plugin (e.g. devzwo.so)"
msgstr "" msgstr ""
#: cmdlnopts.c:44 #: cmdlnopts.c:45
msgid "wheel device plugin (e.g. devdummy.so)" msgid "wheel device plugin (e.g. devdummy.so)"
msgstr "" msgstr ""
#: cmdlnopts.c:45 #: cmdlnopts.c:46
msgid "list connected devices" msgid "list connected devices"
msgstr "" msgstr ""
#: cmdlnopts.c:46 #: cmdlnopts.c:47
msgid "camera device number (if many: 0, 1, 2 etc)" msgid "camera device number (if many: 0, 1, 2 etc)"
msgstr "" msgstr ""
#: cmdlnopts.c:47 #: cmdlnopts.c:48
msgid "filter wheel device number (if many: 0, 1, 2 etc)" msgid "filter wheel device number (if many: 0, 1, 2 etc)"
msgstr "" msgstr ""
#: cmdlnopts.c:48 #: cmdlnopts.c:49
msgid "focuser device number (if many: 0, 1, 2 etc)" msgid "focuser device number (if many: 0, 1, 2 etc)"
msgstr "" msgstr ""
#: cmdlnopts.c:49 #: cmdlnopts.c:50
msgid "show this help" msgid "show this help"
msgstr "" msgstr ""
#: cmdlnopts.c:50 #: cmdlnopts.c:51
msgid "rewrite output file if exists" msgid "rewrite output file if exists"
msgstr "" msgstr ""
#: cmdlnopts.c:51 #: cmdlnopts.c:52
msgid "verbose level (-V - messages, -VV - debug, -VVV - all shit)" msgid "verbose level (-V - messages, -VV - debug, -VVV - all shit)"
msgstr "" msgstr ""
#: cmdlnopts.c:52 #: cmdlnopts.c:53
msgid "not open shutter, when exposing (\"dark frames\")" msgid "not open shutter, when exposing (\"dark frames\")"
msgstr "" msgstr ""
#: cmdlnopts.c:53 #: cmdlnopts.c:54
msgid "run in 8-bit mode" msgid "run in 8-bit mode"
msgstr "" msgstr ""
#: cmdlnopts.c:54 #: cmdlnopts.c:55
msgid "fast readout mode" msgid "fast readout mode"
msgstr "" msgstr ""
#: cmdlnopts.c:55 #: cmdlnopts.c:56
msgid "set CCD temperature to given value (degr C)" msgid "set CCD temperature to given value (degr C)"
msgstr "" msgstr ""
#: cmdlnopts.c:56 #: cmdlnopts.c:57
msgid "set fan speed (0 - off, 1 - low, 2 - high)" msgid "set fan speed (0 - off, 1 - low, 2 - high)"
msgstr "" msgstr ""
#: cmdlnopts.c:58 #: cmdlnopts.c:59
msgid "program author" msgid "program author"
msgstr "" msgstr ""
#: cmdlnopts.c:59 #: cmdlnopts.c:60
msgid "object type (neon, object, flat etc)" msgid "object type (neon, object, flat etc)"
msgstr "" msgstr ""
#: cmdlnopts.c:60 #: cmdlnopts.c:61
msgid "instrument name" msgid "instrument name"
msgstr "" msgstr ""
#: cmdlnopts.c:61 #: cmdlnopts.c:62
msgid "object name" msgid "object name"
msgstr "" msgstr ""
#: cmdlnopts.c:62 #: cmdlnopts.c:63
msgid "observers' names" msgid "observers' names"
msgstr "" msgstr ""
#: cmdlnopts.c:63 #: cmdlnopts.c:64
msgid "observing program name" msgid "observing program name"
msgstr "" msgstr ""
#: cmdlnopts.c:64 #: cmdlnopts.c:65
msgid "add records to header from given file[s]" msgid "add records to header from given file[s]"
msgstr "" msgstr ""
#: cmdlnopts.c:65 #: cmdlnopts.c:66
msgid "output file name" msgid "output file name"
msgstr "" msgstr ""
#: cmdlnopts.c:66 #: cmdlnopts.c:67
msgid "wait while exposition ends" msgid "wait while exposition ends"
msgstr "" msgstr ""
#: cmdlnopts.c:68 #: cmdlnopts.c:69
msgid "N flushes before exposing (default: 1)" msgid "N flushes before exposing (default: 1)"
msgstr "" msgstr ""
#: cmdlnopts.c:69 #: cmdlnopts.c:70
msgid "horizontal binning to N pixels" msgid "horizontal binning to N pixels"
msgstr "" msgstr ""
#: cmdlnopts.c:70 #: cmdlnopts.c:71
msgid "vertical binning to N pixels" msgid "vertical binning to N pixels"
msgstr "" msgstr ""
#: cmdlnopts.c:71 #: cmdlnopts.c:72
msgid "make series of N frames" msgid "make series of N frames"
msgstr "" msgstr ""
#: cmdlnopts.c:72 #: cmdlnopts.c:73
msgid "make pause for N seconds between expositions" msgid "make pause for N seconds between expositions"
msgstr "" msgstr ""
#: cmdlnopts.c:73 #: cmdlnopts.c:74
msgid "set exposure time to given value (seconds!)" msgid "set exposure time to given value (seconds!)"
msgstr "" msgstr ""
#: cmdlnopts.c:74 #: cmdlnopts.c:75
msgid "cancel current exposition" msgid "cancel current exposition"
msgstr "" msgstr ""
#: cmdlnopts.c:75 #: cmdlnopts.c:76
msgid "" msgid ""
"absolute (not divided by binning!) frame X0 coordinate (-1 - all with " "absolute (not divided by binning!) frame X0 coordinate (-1 - all with "
"overscan)" "overscan)"
msgstr "" msgstr ""
#: cmdlnopts.c:76 #: cmdlnopts.c:77
msgid "absolute frame Y0 coordinate (-1 - all with overscan)" msgid "absolute frame Y0 coordinate (-1 - all with overscan)"
msgstr "" msgstr ""
#: cmdlnopts.c:77 #: cmdlnopts.c:78
msgid "absolute frame X1 coordinate (-1 - all with overscan)" msgid "absolute frame X1 coordinate (-1 - all with overscan)"
msgstr "" msgstr ""
#: cmdlnopts.c:78 #: cmdlnopts.c:79
msgid "absolute frame Y1 coordinate (-1 - all with overscan)" msgid "absolute frame Y1 coordinate (-1 - all with overscan)"
msgstr "" msgstr ""
#: cmdlnopts.c:80 #: cmdlnopts.c:81
msgid "open shutter" msgid "open shutter"
msgstr "" msgstr ""
#: cmdlnopts.c:81 #: cmdlnopts.c:82
msgid "close shutter" msgid "close shutter"
msgstr "" msgstr ""
#: cmdlnopts.c:82 #: cmdlnopts.c:83
msgid "run exposition on LOW @ pin5 I/O port" msgid "run exposition on LOW @ pin5 I/O port"
msgstr "" msgstr ""
#: cmdlnopts.c:83 #: cmdlnopts.c:84
msgid "run exposition on HIGH @ pin5 I/O port" msgid "run exposition on HIGH @ pin5 I/O port"
msgstr "" msgstr ""
#: cmdlnopts.c:84 #: cmdlnopts.c:85
msgid "get value of I/O port pins" msgid "get value of I/O port pins"
msgstr "" msgstr ""
#: cmdlnopts.c:85 #: cmdlnopts.c:86
msgid "move stepper motor asynchronous" msgid "move stepper motor asynchronous"
msgstr "" msgstr ""
#: cmdlnopts.c:87 #: cmdlnopts.c:88
msgid "set I/O port pins to given value (decimal number, pin1 is LSB)" msgid "set I/O port pins to given value (decimal number, pin1 is LSB)"
msgstr "" msgstr ""
#: cmdlnopts.c:88 #: cmdlnopts.c:89
msgid "" msgid ""
"configure I/O port pins to given value (decimal number, pin1 is LSB, 1 == " "configure I/O port pins to given value (decimal number, pin1 is LSB, 1 == "
"output, 0 == input)" "output, 0 == input)"
msgstr "" msgstr ""
#: cmdlnopts.c:90 #: cmdlnopts.c:91
msgid "move focuser to absolute position, mm" msgid "move focuser to absolute position, mm"
msgstr "" msgstr ""
#: cmdlnopts.c:91 #: cmdlnopts.c:92
msgid "move focuser to relative position, mm (only for standalone)" msgid "move focuser to relative position, mm (only for standalone)"
msgstr "" msgstr ""
#: cmdlnopts.c:93 #: cmdlnopts.c:94
msgid "set wheel position" msgid "set wheel position"
msgstr "" msgstr ""
#: cmdlnopts.c:95 #: cmdlnopts.c:96
msgid "CMOS gain level" msgid "CMOS gain level"
msgstr "" msgstr ""
#: cmdlnopts.c:96 #: cmdlnopts.c:97
msgid "CMOS brightness level" msgid "CMOS brightness level"
msgstr "" msgstr ""
#: cmdlnopts.c:98 #: cmdlnopts.c:99
msgid "logging file name (if run as server)" msgid "logging file name (if run as server)"
msgstr "" msgstr ""
#: cmdlnopts.c:99 #: cmdlnopts.c:100
msgid "UNIX socket name (command socket)" msgid "UNIX socket name (command socket)"
msgstr "" msgstr ""
#: cmdlnopts.c:100 #: cmdlnopts.c:101
msgid "local INET command socket port" msgid "local INET command socket port"
msgstr "" msgstr ""
#: cmdlnopts.c:101 #: cmdlnopts.c:102
msgid "INET image socket port" msgid "INET image socket port"
msgstr "" msgstr ""
#: cmdlnopts.c:102 #: cmdlnopts.c:103
msgid "run as client" msgid "run as client"
msgstr "" msgstr ""
#: cmdlnopts.c:103 #: cmdlnopts.c:104
msgid "passive viewer (only get last images)" msgid "passive viewer (only get last images)"
msgstr "" msgstr ""
#: cmdlnopts.c:104 #: cmdlnopts.c:105
msgid "restart image server" msgid "restart image server"
msgstr "" msgstr ""
#: cmdlnopts.c:106 #: cmdlnopts.c:107
msgid "shared memory (with image data) key (default: 7777777" msgid "shared memory (with image data) key (default: 7777777"
msgstr "" msgstr ""
#: cmdlnopts.c:107 #: cmdlnopts.c:108
msgid "force using image through socket transition even if can use SHM" msgid "force using image through socket transition even if can use SHM"
msgstr "" msgstr ""
#: cmdlnopts.c:110 #: cmdlnopts.c:109
msgid "start (!=0) or stop(==0) infinity capturing loop"
msgstr ""
#: cmdlnopts.c:112
msgid "Display image in OpenGL window" msgid "Display image in OpenGL window"
msgstr "" msgstr ""
@ -486,12 +490,12 @@ msgstr ""
msgid "Can't set brightness to %g" msgid "Can't set brightness to %g"
msgstr "" msgstr ""
#: ccdfunc.c:767 server.c:262 #: ccdfunc.c:767 server.c:265
#, c-format #, c-format
msgid "Can't set binning %dx%d" msgid "Can't set binning %dx%d"
msgstr "" msgstr ""
#: ccdfunc.c:779 server.c:263 #: ccdfunc.c:779 server.c:266
msgid "Can't set given geometry" msgid "Can't set given geometry"
msgstr "" msgstr ""
@ -537,7 +541,7 @@ msgstr ""
msgid "Capture frame %d" msgid "Capture frame %d"
msgstr "" msgstr ""
#: ccdfunc.c:826 ccdfunc.c:911 server.c:148 #: ccdfunc.c:826 ccdfunc.c:912 server.c:149
msgid "Can't start exposition" msgid "Can't start exposition"
msgstr "" msgstr ""
@ -549,29 +553,29 @@ msgstr ""
msgid "Read grabbed image" msgid "Read grabbed image"
msgstr "" msgstr ""
#: ccdfunc.c:838 ccdfunc.c:924 #: ccdfunc.c:838 ccdfunc.c:925
msgid "Can't grab image" msgid "Can't grab image"
msgstr "" msgstr ""
#. %d секунд до окончания паузы\n #. %d секунд до окончания паузы\n
#: ccdfunc.c:850 client.c:294 #: ccdfunc.c:850 client.c:297
#, c-format #, c-format
msgid "%d seconds till pause ends\n" msgid "%d seconds till pause ends\n"
msgstr "" msgstr ""
#: ccdfunc.c:922 #: ccdfunc.c:923
msgid "Some error when capture" msgid "Some error when capture"
msgstr "" msgstr ""
#: server.c:196 #: server.c:189
msgid "No camera device" msgid "No camera device"
msgstr "" msgstr ""
#: client.c:279 #: client.c:282
msgid "Can't make exposition" msgid "Can't make exposition"
msgstr "" msgstr ""
#: client.c:310 #: client.c:313
msgid "Server timeout" msgid "Server timeout"
msgstr "" msgstr ""
@ -579,28 +583,28 @@ msgstr ""
msgid "Already initialized!" msgid "Already initialized!"
msgstr "" msgstr ""
#: imageview.c:308 #: imageview.c:312
msgid "Can't init mutex!" msgid "Can't init mutex!"
msgstr "" msgstr ""
#: imageview.c:421 #: imageview.c:425
#, c-format #, c-format
msgid "Histogram conversion: %s" msgid "Histogram conversion: %s"
msgstr "" msgstr ""
#: imageview.c:689 #: imageview.c:704
msgid "Can't open OpenGL window, image preview will be inaccessible" msgid "Can't open OpenGL window, image preview will be inaccessible"
msgstr "" msgstr ""
#: imageview.c:731 #: imageview.c:746
#, c-format #, c-format
msgid "Equalization of histogram: %s" msgid "Equalization of histogram: %s"
msgstr "" msgstr ""
#: imageview.c:731 #: imageview.c:746
msgid "on" msgid "on"
msgstr "" msgstr ""
#: imageview.c:731 #: imageview.c:746
msgid "off" msgid "off"
msgstr "" msgstr ""

View File

@ -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: 2023-12-21 16:40+0300\n" "POT-Creation-Date: 2023-12-25 15:48+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"
@ -22,7 +22,7 @@ msgid "%.1f seconds till exposition ends"
msgstr "%.1f ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÜËÓÐÏÚÉÃÉÉ" msgstr "%.1f ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÜËÓÐÏÚÉÃÉÉ"
#. %d Ñ<>екунд до окончаниÑ<C2B8> паузы\n #. %d Ñ<>екунд до окончаниÑ<C2B8> паузы\n
#: ccdfunc.c:850 client.c:294 #: ccdfunc.c:850 client.c:297
#, c-format #, c-format
msgid "%d seconds till pause ends\n" msgid "%d seconds till pause ends\n"
msgstr "%d ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÐÁÕÚÙ\n" msgstr "%d ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÐÁÕÚÙ\n"
@ -31,11 +31,11 @@ msgstr "%d
msgid "Already initialized!" msgid "Already initialized!"
msgstr "õÖÅ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎÏ!" msgstr "õÖÅ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎÏ!"
#: cmdlnopts.c:96 #: cmdlnopts.c:97
msgid "CMOS brightness level" msgid "CMOS brightness level"
msgstr "ÕÒÏ×ÅÎØ ÑÒËÏÓÔÉ CMOS" msgstr "ÕÒÏ×ÅÎØ ÑÒËÏÓÔÉ CMOS"
#: cmdlnopts.c:95 #: cmdlnopts.c:96
msgid "CMOS gain level" msgid "CMOS gain level"
msgstr "ÕÒÏ×ÅÎØ Gain CMOS" msgstr "ÕÒÏ×ÅÎØ Gain CMOS"
@ -105,7 +105,7 @@ msgstr "
msgid "Can't get max wheel position" msgid "Can't get max wheel position"
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ËÏÌÅÓÁ" msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ËÏÌÅÓÁ"
#: ccdfunc.c:838 ccdfunc.c:924 #: ccdfunc.c:838 ccdfunc.c:925
msgid "Can't grab image" msgid "Can't grab image"
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ" msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
@ -113,15 +113,15 @@ msgstr "
msgid "Can't home focuser" msgid "Can't home focuser"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÆÏËÕÓÅÒ × ÎÕÌØ" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÆÏËÕÓÅÒ × ÎÕÌØ"
#: imageview.c:308 #: imageview.c:312
msgid "Can't init mutex!" msgid "Can't init mutex!"
msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!" msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!"
#: client.c:279 #: client.c:282
msgid "Can't make exposition" msgid "Can't make exposition"
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ÜËÓÐÏÚÉÃÉÀ" msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ÜËÓÐÏÚÉÃÉÀ"
#: imageview.c:689 #: imageview.c:704
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, ÏÔÏÂÒÁÖÅÎÉÅ ÂÕÄÅÔ ÎÅÄÏÓÔÕÐÎÏ"
@ -162,7 +162,7 @@ msgstr "
msgid "Can't set active wheel number" msgid "Can't set active wheel number"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ËÏÌÅÓÁ" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ËÏÌÅÓÁ"
#: ccdfunc.c:767 server.c:262 #: ccdfunc.c:767 server.c:265
#, c-format #, c-format
msgid "Can't set binning %dx%d" msgid "Can't set binning %dx%d"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÂÉÎÎÉÎÇ %dx%d" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÂÉÎÎÉÎÇ %dx%d"
@ -190,7 +190,7 @@ msgstr "
msgid "Can't set gain to %g" msgid "Can't set gain to %g"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ Gain × %g" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ Gain × %g"
#: ccdfunc.c:779 server.c:263 #: ccdfunc.c:779 server.c:266
msgid "Can't set given geometry" msgid "Can't set given geometry"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÇÅÏÍÅÔÒÉÀ" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÇÅÏÍÅÔÒÉÀ"
@ -213,7 +213,7 @@ msgstr "
msgid "Can't set wheel position %d" msgid "Can't set wheel position %d"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ %d" msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ %d"
#: ccdfunc.c:826 ccdfunc.c:911 server.c:148 #: ccdfunc.c:826 ccdfunc.c:912 server.c:149
msgid "Can't start exposition" msgid "Can't start exposition"
msgstr "îÅ ÍÏÇÕ ÎÁÞÁÔØ ÜËÓÐÏÚÉÃÉÀ" msgstr "îÅ ÍÏÇÕ ÎÁÞÁÔØ ÜËÓÐÏÚÉÃÉÀ"
@ -228,11 +228,11 @@ msgstr "
msgid "Current format: %s" msgid "Current format: %s"
msgstr "" msgstr ""
#: cmdlnopts.c:110 #: cmdlnopts.c:112
msgid "Display image in OpenGL window" msgid "Display image in OpenGL window"
msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ × ÏËÎÅ OpenGL" msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ × ÏËÎÅ OpenGL"
#: imageview.c:731 #: imageview.c:746
#, c-format #, c-format
msgid "Equalization of histogram: %s" msgid "Equalization of histogram: %s"
msgstr "üË×ÁÌÉÚÁÃÉÑ ÇÉÓÔÏÇÒÁÍÍÙ: %s" msgstr "üË×ÁÌÉÚÁÃÉÑ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
@ -275,12 +275,12 @@ msgstr "
msgid "Full array: %s" msgid "Full array: %s"
msgstr "ðÏÌÎÙÊ ÆÏÒÍÁÔ: %s" msgstr "ðÏÌÎÙÊ ÆÏÒÍÁÔ: %s"
#: imageview.c:421 #: imageview.c:425
#, c-format #, c-format
msgid "Histogram conversion: %s" msgid "Histogram conversion: %s"
msgstr "ðÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÇÉÓÔÏÇÒÁÍÍÙ: %s" msgstr "ðÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
#: cmdlnopts.c:101 #: cmdlnopts.c:102
#, fuzzy #, fuzzy
msgid "INET image socket port" msgid "INET image socket port"
msgstr "ÐÏÒÔ ÌÏËÁÌØÎÏÇÏ ÓÅÔÅ×ÏÇÏ ÓÏËÅÔÁ" msgstr "ÐÏÒÔ ÌÏËÁÌØÎÏÇÏ ÓÅÔÅ×ÏÇÏ ÓÏËÅÔÁ"
@ -290,11 +290,11 @@ msgstr "
msgid "Image stat:\n" msgid "Image stat:\n"
msgstr "óÔÁÔÉÓÔÉËÁ ÐÏ ÉÚÏÂÒÁÖÅÎÉÀ: \n" msgstr "óÔÁÔÉÓÔÉËÁ ÐÏ ÉÚÏÂÒÁÖÅÎÉÀ: \n"
#: cmdlnopts.c:68 #: cmdlnopts.c:69
msgid "N flushes before exposing (default: 1)" msgid "N flushes before exposing (default: 1)"
msgstr "N ÚÁÓ×ÅÞÉ×ÁÎÉÊ ÐÅÒÅÄ ÜËÓÐÏÚÉÃÉÅÊ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 1)" msgstr "N ÚÁÓ×ÅÞÉ×ÁÎÉÊ ÐÅÒÅÄ ÜËÓÐÏÚÉÃÉÅÊ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 1)"
#: server.c:196 #: server.c:189
msgid "No camera device" msgid "No camera device"
msgstr "îÅ ÕËÁÚÁÎÏ ÕÓÔÒÏÊÓÔ×Ï ËÁÍÅÒÙ" msgstr "îÅ ÕËÁÚÁÎÏ ÕÓÔÒÏÊÓÔ×Ï ËÁÍÅÒÙ"
@ -328,7 +328,7 @@ msgstr "
msgid "Readout mode: %s" msgid "Readout mode: %s"
msgstr "òÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ: %s" msgstr "òÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ: %s"
#: client.c:310 #: client.c:313
msgid "Server timeout" msgid "Server timeout"
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ" msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
@ -352,7 +352,7 @@ msgstr "
msgid "Shutter command: %s\n" msgid "Shutter command: %s\n"
msgstr "ëÏÍÁÎÄÁ ÚÁÔ×ÏÒÁ: %s\n" msgstr "ëÏÍÁÎÄÁ ÚÁÔ×ÏÒÁ: %s\n"
#: ccdfunc.c:922 #: ccdfunc.c:923
msgid "Some error when capture" msgid "Some error when capture"
msgstr "" msgstr ""
@ -368,7 +368,7 @@ msgstr "
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"
#: cmdlnopts.c:99 #: cmdlnopts.c:100
#, fuzzy #, fuzzy
msgid "UNIX socket name (command socket)" msgid "UNIX socket name (command socket)"
msgstr "éÍÑ UNIX-ÓÏËÅÔÁ" msgstr "éÍÑ UNIX-ÓÏËÅÔÁ"
@ -382,229 +382,233 @@ msgstr "
msgid "Wheel position should be from 0 to %d" msgid "Wheel position should be from 0 to %d"
msgstr "ðÏÚÉÃÉÑ ËÏÌÅÓÁ ÄÏÌÖÎÁ ÂÙÔØ ÏÔ 0 ÄÏ %d" msgstr "ðÏÚÉÃÉÑ ËÏÌÅÓÁ ÄÏÌÖÎÁ ÂÙÔØ ÏÔ 0 ÄÏ %d"
#: cmdlnopts.c:75 #: cmdlnopts.c:76
msgid "absolute (not divided by binning!) frame X0 coordinate (-1 - all " msgid "absolute (not divided by binning!) frame X0 coordinate (-1 - all "
"with overscan)" "with overscan)"
msgstr "ÁÂÓÏÌÀÔÎÁÑ (ÎÅ ÄÅÌÅÎÎÁÑ ÎÁ ÂÉÎÎÉÎÇ!) ËÏÏÒÄÉÎÁÔÁ X0 (-1 - ×ËÌÀÞÁÑ " msgstr "ÁÂÓÏÌÀÔÎÁÑ (ÎÅ ÄÅÌÅÎÎÁÑ ÎÁ ÂÉÎÎÉÎÇ!) ËÏÏÒÄÉÎÁÔÁ X0 (-1 - ×ËÌÀÞÁÑ "
"Ï×ÅÒÓËÁÎ)" "Ï×ÅÒÓËÁÎ)"
#: cmdlnopts.c:77 #: cmdlnopts.c:78
msgid "absolute frame X1 coordinate (-1 - all with overscan)" msgid "absolute frame X1 coordinate (-1 - all with overscan)"
msgstr "ÁÂÓÏÌÀÔÎÁÑ ËÏÏÒÄÉÎÁÔÁ X1 (-1 - ×ËÌÀÞÁÑ Ï×ÅÒÓËÁÎ)" msgstr "ÁÂÓÏÌÀÔÎÁÑ ËÏÏÒÄÉÎÁÔÁ X1 (-1 - ×ËÌÀÞÁÑ Ï×ÅÒÓËÁÎ)"
#: cmdlnopts.c:76 #: cmdlnopts.c:77
msgid "absolute frame Y0 coordinate (-1 - all with overscan)" msgid "absolute frame Y0 coordinate (-1 - all with overscan)"
msgstr "ÁÂÓÏÌÀÔÎÁÑ ËÏÏÒÄÉÎÁÔÁ Y0 (-1 - ×ËÌÀÞÁÑ Ï×ÅÒÓËÁÎ)" msgstr "ÁÂÓÏÌÀÔÎÁÑ ËÏÏÒÄÉÎÁÔÁ Y0 (-1 - ×ËÌÀÞÁÑ Ï×ÅÒÓËÁÎ)"
#: cmdlnopts.c:78 #: cmdlnopts.c:79
msgid "absolute frame Y1 coordinate (-1 - all with overscan)" msgid "absolute frame Y1 coordinate (-1 - all with overscan)"
msgstr "ÁÂÓÏÌÀÔÎÁÑ ËÏÏÒÄÉÎÁÔÁ Y1 (-1 - ×ËÌÀÞÁÑ Ï×ÅÒÓËÁÎ)" msgstr "ÁÂÓÏÌÀÔÎÁÑ ËÏÏÒÄÉÎÁÔÁ Y1 (-1 - ×ËÌÀÞÁÑ Ï×ÅÒÓËÁÎ)"
#: cmdlnopts.c:64 #: cmdlnopts.c:65
msgid "add records to header from given file[s]" msgid "add records to header from given file[s]"
msgstr "ÄÏÂÁ×ÉÔØ ÚÁÐÉÓÉ Ë ÛÁÐËÅ FITS-ÆÁÊÌÁ ÉÚ ÚÁÄÁÎÎÙÈ ÆÁÊÌÏ×" msgstr "ÄÏÂÁ×ÉÔØ ÚÁÐÉÓÉ Ë ÛÁÐËÅ FITS-ÆÁÊÌÁ ÉÚ ÚÁÄÁÎÎÙÈ ÆÁÊÌÏ×"
#: cmdlnopts.c:46 #: cmdlnopts.c:47
msgid "camera device number (if many: 0, 1, 2 etc)" msgid "camera device number (if many: 0, 1, 2 etc)"
msgstr "ÎÏÍÅÒ ÕÓÔÒÏÊÓÔ×Á ËÁÍÅÒÙ" msgstr "ÎÏÍÅÒ ÕÓÔÒÏÊÓÔ×Á ËÁÍÅÒÙ"
#: cmdlnopts.c:42 #: cmdlnopts.c:43
msgid "camera device plugin (e.g. devfli.so)" msgid "camera device plugin (e.g. devfli.so)"
msgstr "ÐÌÁÇÉÎ ËÁÍÅÒÙ (ÎÁÐÒÉÍÅÒ, devfli.so)" msgstr "ÐÌÁÇÉÎ ËÁÍÅÒÙ (ÎÁÐÒÉÍÅÒ, devfli.so)"
#: cmdlnopts.c:74 #: cmdlnopts.c:75
msgid "cancel current exposition" msgid "cancel current exposition"
msgstr "ÏÔÍÅÎÁ ÔÅËÕÝÅÊ ÜËÓÐÏÚÉÃÉÉ" msgstr "ÏÔÍÅÎÁ ÔÅËÕÝÅÊ ÜËÓÐÏÚÉÃÉÉ"
#: cmdlnopts.c:81 #: cmdlnopts.c:82
msgid "close shutter" msgid "close shutter"
msgstr "ÚÁËÒÙÔØ ÚÁÔ×ÏÒ" msgstr "ÚÁËÒÙÔØ ÚÁÔ×ÏÒ"
#: cmdlnopts.c:41 #: cmdlnopts.c:42
msgid "common device plugin (e.g devfli.so)" msgid "common device plugin (e.g devfli.so)"
msgstr "ÏÂÝÉÊ ÐÌÁÇÉÎ ÄÌÑ ×ÓÅÈ ÕÓÔÒÏÊÓÔ× (ÎÁÐÒÉÍÅÒ, devfli.so)" msgstr "ÏÂÝÉÊ ÐÌÁÇÉÎ ÄÌÑ ×ÓÅÈ ÕÓÔÒÏÊÓÔ× (ÎÁÐÒÉÍÅÒ, devfli.so)"
#: cmdlnopts.c:88 #: cmdlnopts.c:89
msgid "configure I/O port pins to given value (decimal number, pin1 is LSB, " msgid "configure I/O port pins to given value (decimal number, pin1 is LSB, "
"1 == output, 0 == input)" "1 == output, 0 == input)"
msgstr "ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ ÐÏÒÔ I/O × ÚÁÄÁÎÎÏÅ ÓÏÓÔÏÑÎÉÅ (ÄÅÓÑÔÉÞÎÏÅ ÞÉÓÌÏ, " msgstr "ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ ÐÏÒÔ I/O × ÚÁÄÁÎÎÏÅ ÓÏÓÔÏÑÎÉÅ (ÄÅÓÑÔÉÞÎÏÅ ÞÉÓÌÏ, "
"pin1 - ÍÌÁÄÛÉÊ ÂÉÔ, 1 - ×ÙÈÏÄ, 0 - ×ÈÏÄ)" "pin1 - ÍÌÁÄÛÉÊ ÂÉÔ, 1 - ×ÙÈÏÄ, 0 - ×ÈÏÄ)"
#: cmdlnopts.c:54 #: cmdlnopts.c:55
msgid "fast readout mode" msgid "fast readout mode"
msgstr "ÂÙÓÔÒÙÊ ÒÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ" msgstr "ÂÙÓÔÒÙÊ ÒÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ"
#: cmdlnopts.c:47 #: cmdlnopts.c:48
msgid "filter wheel device number (if many: 0, 1, 2 etc)" msgid "filter wheel device number (if many: 0, 1, 2 etc)"
msgstr "ÎÏÍÅÒ ÕÓÔÒÏÊÓÔ×Á ÔÕÒÅÌÉ" msgstr "ÎÏÍÅÒ ÕÓÔÒÏÊÓÔ×Á ÔÕÒÅÌÉ"
#: cmdlnopts.c:48 #: cmdlnopts.c:49
msgid "focuser device number (if many: 0, 1, 2 etc)" msgid "focuser device number (if many: 0, 1, 2 etc)"
msgstr "ÎÏÍÅÒ ÕÓÔÒÏÊÓÔ×Á ÆÏËÕÓÅÒÁ" msgstr "ÎÏÍÅÒ ÕÓÔÒÏÊÓÔ×Á ÆÏËÕÓÅÒÁ"
#: cmdlnopts.c:43 #: cmdlnopts.c:44
msgid "focuser device plugin (e.g. devzwo.so)" msgid "focuser device plugin (e.g. devzwo.so)"
msgstr "ÐÌÁÇÉÎ ÆÏËÕÓÅÒÁ (ÎÁÐÒÉÍÅÒ, devzwo.so)" msgstr "ÐÌÁÇÉÎ ÆÏËÕÓÅÒÁ (ÎÁÐÒÉÍÅÒ, devzwo.so)"
#: cmdlnopts.c:107 #: cmdlnopts.c:108
msgid "force using image through socket transition even if can use SHM" msgid "force using image through socket transition even if can use SHM"
msgstr "" msgstr ""
#: cmdlnopts.c:84 #: cmdlnopts.c:85
msgid "get value of I/O port pins" msgid "get value of I/O port pins"
msgstr "ÐÏÌÕÞÉÔØ ÚÎÁÞÅÎÉÅ ÐÏÒÔÁ I/O" msgstr "ÐÏÌÕÞÉÔØ ÚÎÁÞÅÎÉÅ ÐÏÒÔÁ I/O"
#: cmdlnopts.c:69 #: cmdlnopts.c:70
msgid "horizontal binning to N pixels" msgid "horizontal binning to N pixels"
msgstr "ÇÏÒÉÚÏÎÔÁÌØÎÙÊ ÂÉÎÎÉÎÇ × N ÐÉËÓÅÌÅÊ" msgstr "ÇÏÒÉÚÏÎÔÁÌØÎÙÊ ÂÉÎÎÉÎÇ × N ÐÉËÓÅÌÅÊ"
#: cmdlnopts.c:60 #: cmdlnopts.c:61
msgid "instrument name" msgid "instrument name"
msgstr "ÎÁÚ×ÁÎÉÅ ÐÒÉÂÏÒÁ" msgstr "ÎÁÚ×ÁÎÉÅ ÐÒÉÂÏÒÁ"
#: cmdlnopts.c:45 #: cmdlnopts.c:46
msgid "list connected devices" msgid "list connected devices"
msgstr "ÓÐÉÓÏË ÐÏÄËÌÀÞÅÎÎÙÈ ÕÓÔÒÏÊÓÔ×" msgstr "ÓÐÉÓÏË ÐÏÄËÌÀÞÅÎÎÙÈ ÕÓÔÒÏÊÓÔ×"
#: cmdlnopts.c:100 #: cmdlnopts.c:101
#, fuzzy #, fuzzy
msgid "local INET command socket port" msgid "local INET command socket port"
msgstr "ÐÏÒÔ ÌÏËÁÌØÎÏÇÏ ÓÅÔÅ×ÏÇÏ ÓÏËÅÔÁ" msgstr "ÐÏÒÔ ÌÏËÁÌØÎÏÇÏ ÓÅÔÅ×ÏÇÏ ÓÏËÅÔÁ"
#: cmdlnopts.c:98 #: cmdlnopts.c:99
msgid "logging file name (if run as server)" msgid "logging file name (if run as server)"
msgstr "ÉÍÑ ÆÁÊÌÁ ÌÏÇÇÉÒÏ×ÁÎÉÑ (ÅÓÌÉ ÚÁÐÕÝÅÎ ÓÅÒ×ÅÒ)" msgstr "ÉÍÑ ÆÁÊÌÁ ÌÏÇÇÉÒÏ×ÁÎÉÑ (ÅÓÌÉ ÚÁÐÕÝÅÎ ÓÅÒ×ÅÒ)"
#: cmdlnopts.c:72 #: cmdlnopts.c:73
msgid "make pause for N seconds between expositions" msgid "make pause for N seconds between expositions"
msgstr "ÐÁÕÚÁ × N ÓÅËÕÎÄ ÍÅÖÄÕ ÜËÓÐÏÚÉÃÉÑÍÉ" msgstr "ÐÁÕÚÁ × N ÓÅËÕÎÄ ÍÅÖÄÕ ÜËÓÐÏÚÉÃÉÑÍÉ"
#: cmdlnopts.c:71 #: cmdlnopts.c:72
msgid "make series of N frames" msgid "make series of N frames"
msgstr "ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÉÚ N ËÁÄÒÏ×" msgstr "ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÉÚ N ËÁÄÒÏ×"
#: cmdlnopts.c:90 #: cmdlnopts.c:91
msgid "move focuser to absolute position, mm" msgid "move focuser to absolute position, mm"
msgstr "ÐÅÒÅÍÅÓÔÉÔØ ÆÏËÕÓÅÒ × ÁÂÓÏÌÀÔÎÏÅ ÐÏÌÏÖÅÎÉÅ, ÍÍ" msgstr "ÐÅÒÅÍÅÓÔÉÔØ ÆÏËÕÓÅÒ × ÁÂÓÏÌÀÔÎÏÅ ÐÏÌÏÖÅÎÉÅ, ÍÍ"
#: cmdlnopts.c:91 #: cmdlnopts.c:92
msgid "move focuser to relative position, mm (only for standalone)" msgid "move focuser to relative position, mm (only for standalone)"
msgstr "ÐÅÒÅÍÅÓÔÉÔØ ÆÏËÕÓÅÒ × ÏÔÎÏÓÉÔÅÌØÎÏÅ ÐÏÌÏÖÅÎÉÅ, ÍÍ (ÎÅ ÄÌÑ ÓÅÒ×ÅÒ/" msgstr "ÐÅÒÅÍÅÓÔÉÔØ ÆÏËÕÓÅÒ × ÏÔÎÏÓÉÔÅÌØÎÏÅ ÐÏÌÏÖÅÎÉÅ, ÍÍ (ÎÅ ÄÌÑ ÓÅÒ×ÅÒ/"
"ËÌÉÅÎÔ)" "ËÌÉÅÎÔ)"
#: cmdlnopts.c:85 #: cmdlnopts.c:86
msgid "move stepper motor asynchronous" msgid "move stepper motor asynchronous"
msgstr "ÁÓÉÎÈÒÏÎÎÏÅ Ä×ÉÖÅÎÉÅ ÛÁÇÏ×ÏÇÏ Ä×ÉÇÁÔÅÌÑ" msgstr "ÁÓÉÎÈÒÏÎÎÏÅ Ä×ÉÖÅÎÉÅ ÛÁÇÏ×ÏÇÏ Ä×ÉÇÁÔÅÌÑ"
#: cmdlnopts.c:52 #: cmdlnopts.c:53
msgid "not open shutter, when exposing (\"dark frames\")" msgid "not open shutter, when exposing (\"dark frames\")"
msgstr "ÎÅ ÏÔËÒÙ×ÁÔØ ÚÁÔ×ÏÒ ÐÒÉ ÜËÓÐÏÚÉÃÉÉ (\"ÔÅÍÎÏ×ÙÅ\")" msgstr "ÎÅ ÏÔËÒÙ×ÁÔØ ÚÁÔ×ÏÒ ÐÒÉ ÜËÓÐÏÚÉÃÉÉ (\"ÔÅÍÎÏ×ÙÅ\")"
#: cmdlnopts.c:61 #: cmdlnopts.c:62
msgid "object name" msgid "object name"
msgstr "ÎÁÚ×ÁÎÉÅ ÏÂßÅËÔÁ" msgstr "ÎÁÚ×ÁÎÉÅ ÏÂßÅËÔÁ"
#: cmdlnopts.c:59 #: cmdlnopts.c:60
msgid "object type (neon, object, flat etc)" msgid "object type (neon, object, flat etc)"
msgstr "ÔÉÐ ÏÂßÅËÔÁ (neon, object, flat É Ô.Ä.)" msgstr "ÔÉÐ ÏÂßÅËÔÁ (neon, object, flat É Ô.Ä.)"
#: cmdlnopts.c:62 #: cmdlnopts.c:63
msgid "observers' names" msgid "observers' names"
msgstr "ÉÍÅÎÁ ÎÁÂÌÀÄÁÔÅÌÅÊ" msgstr "ÉÍÅÎÁ ÎÁÂÌÀÄÁÔÅÌÅÊ"
#: cmdlnopts.c:63 #: cmdlnopts.c:64
msgid "observing program name" msgid "observing program name"
msgstr "ÎÁÚ×ÁÎÉÅ ÐÒÏÇÒÁÍÍÙ" msgstr "ÎÁÚ×ÁÎÉÅ ÐÒÏÇÒÁÍÍÙ"
#: imageview.c:731 #: imageview.c:746
msgid "off" msgid "off"
msgstr "×ÙËÌ" msgstr "×ÙËÌ"
#: imageview.c:731 #: imageview.c:746
msgid "on" msgid "on"
msgstr "×ËÌ" msgstr "×ËÌ"
#: cmdlnopts.c:80 #: cmdlnopts.c:81
msgid "open shutter" msgid "open shutter"
msgstr "ÏÔËÒÙÔØ ÚÁÔ×ÏÒ" msgstr "ÏÔËÒÙÔØ ÚÁÔ×ÏÒ"
#: cmdlnopts.c:65 #: cmdlnopts.c:66
msgid "output file name" msgid "output file name"
msgstr "ÉÍÑ ÆÁÊÌÁ" msgstr "ÉÍÑ ÆÁÊÌÁ"
#: cmdlnopts.c:103 #: cmdlnopts.c:104
msgid "passive viewer (only get last images)" msgid "passive viewer (only get last images)"
msgstr "" msgstr ""
#: cmdlnopts.c:58 #: cmdlnopts.c:59
msgid "program author" msgid "program author"
msgstr "Á×ÔÏÒ ÐÒÏÇÒÁÍÍÙ" msgstr "Á×ÔÏÒ ÐÒÏÇÒÁÍÍÙ"
#: cmdlnopts.c:104 #: cmdlnopts.c:105
msgid "restart image server" msgid "restart image server"
msgstr "ÐÅÒÅÚÁÐÕÓË ÓÅÒ×ÅÒÁ" msgstr "ÐÅÒÅÚÁÐÕÓË ÓÅÒ×ÅÒÁ"
#: cmdlnopts.c:50 #: cmdlnopts.c:51
msgid "rewrite output file if exists" msgid "rewrite output file if exists"
msgstr "ÐÅÒÅÚÁÐÉÓØ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ" msgstr "ÐÅÒÅÚÁÐÉÓØ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ"
#: cmdlnopts.c:102 #: cmdlnopts.c:103
msgid "run as client" msgid "run as client"
msgstr "ÚÁÐÕÓÔÉÔØ ËÌÉÅÎÔ" msgstr "ÚÁÐÕÓÔÉÔØ ËÌÉÅÎÔ"
#: cmdlnopts.c:83 #: cmdlnopts.c:84
msgid "run exposition on HIGH @ pin5 I/O port" msgid "run exposition on HIGH @ pin5 I/O port"
msgstr "" msgstr ""
#: cmdlnopts.c:82 #: cmdlnopts.c:83
msgid "run exposition on LOW @ pin5 I/O port" msgid "run exposition on LOW @ pin5 I/O port"
msgstr "" msgstr ""
#: cmdlnopts.c:53 #: cmdlnopts.c:54
msgid "run in 8-bit mode" msgid "run in 8-bit mode"
msgstr "8-ÂÉÔÎÙÊ ÒÅÖÉÍ" msgstr "8-ÂÉÔÎÙÊ ÒÅÖÉÍ"
#: cmdlnopts.c:55 #: cmdlnopts.c:56
msgid "set CCD temperature to given value (degr C)" msgid "set CCD temperature to given value (degr C)"
msgstr "ÕÓÔÁÎÏ×ÉÔØ ÔÅÍÐÅÒÁÔÕÒÕ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ (ÇÒÁÄã)" msgstr "ÕÓÔÁÎÏ×ÉÔØ ÔÅÍÐÅÒÁÔÕÒÕ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ (ÇÒÁÄã)"
#: cmdlnopts.c:87 #: cmdlnopts.c:88
msgid "set I/O port pins to given value (decimal number, pin1 is LSB)" msgid "set I/O port pins to given value (decimal number, pin1 is LSB)"
msgstr "ÕÓÔÁÎÏ×ÉÔØ ÐÏÒÔ I/O (ÄÅÓÑÔÉÞÎÏÅ ÞÉÓÌÏ, pin1 - ÍÌÁÄÛÉÊ ÂÉÔ)" msgstr "ÕÓÔÁÎÏ×ÉÔØ ÐÏÒÔ I/O (ÄÅÓÑÔÉÞÎÏÅ ÞÉÓÌÏ, pin1 - ÍÌÁÄÛÉÊ ÂÉÔ)"
#: cmdlnopts.c:73 #: cmdlnopts.c:74
msgid "set exposure time to given value (seconds!)" msgid "set exposure time to given value (seconds!)"
msgstr "ÕÓÔÁÎÏ×ÉÔØ ×ÒÅÍÑ ÜËÓÐÏÚÉÃÉÉ (ÓÅËÕÎÄÙ!)" msgstr "ÕÓÔÁÎÏ×ÉÔØ ×ÒÅÍÑ ÜËÓÐÏÚÉÃÉÉ (ÓÅËÕÎÄÙ!)"
#: cmdlnopts.c:56 #: cmdlnopts.c:57
msgid "set fan speed (0 - off, 1 - low, 2 - high)" msgid "set fan speed (0 - off, 1 - low, 2 - high)"
msgstr "ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÁ (0 - ×ÙËÌ, 1 - ÎÉÚËÁÑ, 2 - ×ÙÓÏËÁÑ)" msgstr "ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÁ (0 - ×ÙËÌ, 1 - ÎÉÚËÁÑ, 2 - ×ÙÓÏËÁÑ)"
#: cmdlnopts.c:93 #: cmdlnopts.c:94
msgid "set wheel position" msgid "set wheel position"
msgstr "ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ" msgstr "ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ"
#: cmdlnopts.c:106 #: cmdlnopts.c:107
msgid "shared memory (with image data) key (default: 7777777" msgid "shared memory (with image data) key (default: 7777777"
msgstr "" msgstr ""
#: cmdlnopts.c:49 #: cmdlnopts.c:50
msgid "show this help" msgid "show this help"
msgstr "ÏÔÏÂÒÁÚÉÔØ ÜÔÕ ÓÐÒÁ×ËÕ" msgstr "ÏÔÏÂÒÁÚÉÔØ ÜÔÕ ÓÐÒÁ×ËÕ"
#: cmdlnopts.c:51 #: cmdlnopts.c:109
msgid "start (!=0) or stop(==0) infinity capturing loop"
msgstr ""
#: cmdlnopts.c:52
msgid "verbose level (-V - messages, -VV - debug, -VVV - all shit)" msgid "verbose level (-V - messages, -VV - debug, -VVV - all shit)"
msgstr "ÕÒÏ×ÅÎØ ÂÏÌÔÌÉ×ÏÓÔÉ (-V - ÓÏÏÂÝÅÎÉÑ, -VV - ÏÔÌÁÄËÁ, -VVV - ×ÓÅ)" msgstr "ÕÒÏ×ÅÎØ ÂÏÌÔÌÉ×ÏÓÔÉ (-V - ÓÏÏÂÝÅÎÉÑ, -VV - ÏÔÌÁÄËÁ, -VVV - ×ÓÅ)"
#: cmdlnopts.c:70 #: cmdlnopts.c:71
msgid "vertical binning to N pixels" msgid "vertical binning to N pixels"
msgstr "×ÅÒÔÉËÁÌØÎÙÊ ÂÉÎÎÉÎÇ × N ÐÉËÓÅÌÅÊ" msgstr "×ÅÒÔÉËÁÌØÎÙÊ ÂÉÎÎÉÎÇ × N ÐÉËÓÅÌÅÊ"
#: cmdlnopts.c:66 #: cmdlnopts.c:67
msgid "wait while exposition ends" msgid "wait while exposition ends"
msgstr "ÖÄÁÔØ, ÐÏËÁ ÎÅ ËÏÎÞÉÔÓÑ ÜËÓÐÏÚÉÃÉÑ" msgstr "ÖÄÁÔØ, ÐÏËÁ ÎÅ ËÏÎÞÉÔÓÑ ÜËÓÐÏÚÉÃÉÑ"
#: cmdlnopts.c:44 #: cmdlnopts.c:45
msgid "wheel device plugin (e.g. devdummy.so)" msgid "wheel device plugin (e.g. devdummy.so)"
msgstr "ÐÌÁÇÉÎ ÕÓÔÒÏÊÓÔ×Á ÔÕÒÅÌÉ (ÎÁÐÒÉÍÅÒ, devdummy.so)" msgstr "ÐÌÁÇÉÎ ÕÓÔÒÏÊÓÔ×Á ÔÕÒÅÌÉ (ÎÁÐÒÉÍÅÒ, devdummy.so)"

View File

@ -37,7 +37,7 @@ static _Atomic camera_state camstate = CAMERA_IDLE;
#define FLAG_STARTCAPTURE (1<<0) #define FLAG_STARTCAPTURE (1<<0)
#define FLAG_CANCEL (1<<1) #define FLAG_CANCEL (1<<1)
#define FLAG_RESTARTSERVER (1<<2) #define FLAG_RESTARTSERVER (1<<2)
static atomic_int camflags = 0, camfanspd = 0, confio = 0, nflushes; static atomic_int camflags = 0, camfanspd = 0, confio = 0, nflushes, infty = 0;
static char *outfile = NULL, *lastfile = NULL; // current output file name/prefix; last name of saved file static char *outfile = NULL, *lastfile = NULL; // current output file name/prefix; last name of saved file
static frameformat frmformatmax = {0}, curformat = {0}; // maximal format static frameformat frmformatmax = {0}, curformat = {0}; // maximal format
static void *camdev = NULL, *focdev = NULL, *wheeldev = NULL; static void *camdev = NULL, *focdev = NULL, *wheeldev = NULL;
@ -80,6 +80,7 @@ strpair allcommands[] = {
{ CMD_IMHEIGHT, "last image height" }, { CMD_IMHEIGHT, "last image height" },
{ CMD_IMWIDTH, "last image width" }, { CMD_IMWIDTH, "last image width" },
{ CMD_INFO, "connected devices state" }, { CMD_INFO, "connected devices state" },
{ CMD_INFTY, "an infinity loop taking images until there's connected clients" },
{ CMD_INSTRUMENT, "FITS 'INSTRUME' field" }, { CMD_INSTRUMENT, "FITS 'INSTRUME' field" },
{ CMD_IO, "get/set camera IO" }, { CMD_IO, "get/set camera IO" },
{ CMD_LASTFNAME, "path to last saved file"}, { CMD_LASTFNAME, "path to last saved file"},
@ -107,7 +108,7 @@ static pthread_mutex_t locmutex = PTHREAD_MUTEX_INITIALIZER; // mutex for wheel/
// return TRUE if `locmutex` can be locked // return TRUE if `locmutex` can be locked
static int lock(){ static int lock(){
if(pthread_mutex_trylock(&locmutex)){ if(pthread_mutex_trylock(&locmutex)){
DBG("\n\nAlready locked"); //DBG("\n\nAlready locked");
return FALSE; return FALSE;
} }
return TRUE; return TRUE;
@ -152,14 +153,6 @@ static inline void cameraidlestate(){ // idle - wait for capture commands
} }
} }
static inline void cameracapturestate(){ // capturing - wait for exposition ends static inline void cameracapturestate(){ // capturing - wait for exposition ends
if(camflags & FLAG_CANCEL){ // cancel all expositions
DBG("Cancel exposition");
LOGMSG("User canceled exposition");
camflags &= ~(FLAG_STARTCAPTURE | FLAG_CANCEL);
camera->cancel();
camstate = CAMERA_IDLE;
return;
}
capture_status cs; capture_status cs;
if(camera->pollcapture(&cs, &tremain)){ if(camera->pollcapture(&cs, &tremain)){
if(cs != CAPTURE_PROCESS){ if(cs != CAPTURE_PROCESS){
@ -217,6 +210,16 @@ static void* processCAM(_U_ void *d){
LOGMSG("BODYTEMP=%.1f", t); LOGMSG("BODYTEMP=%.1f", t);
} }
} }
if(camflags & FLAG_CANCEL){ // cancel all expositions
DBG("Cancel exposition");
LOGMSG("User canceled exposition");
camflags &= ~(FLAG_STARTCAPTURE | FLAG_CANCEL);
camera->cancel();
camstate = CAMERA_IDLE;
infty = 0; // also cancel infinity loop
unlock();
continue;
}
camera_state curstate = camstate; camera_state curstate = camstate;
switch(curstate){ switch(curstate){
case CAMERA_IDLE: case CAMERA_IDLE:
@ -603,7 +606,7 @@ static hresult expstatehandler(_U_ int fd, _U_ const char *key, _U_ const char *
return RESULT_OK; return RESULT_OK;
} }
else if(n == CAMERA_CAPTURE){ // start exposition else if(n == CAMERA_CAPTURE){ // start exposition
TIMESTAMP("End of cycle - start new"); TIMESTAMP("Get FLAG_STARTCAPTURE");
TIMEINIT(); TIMEINIT();
camflags |= FLAG_STARTCAPTURE; camflags |= FLAG_STARTCAPTURE;
return RESULT_OK; return RESULT_OK;
@ -939,6 +942,18 @@ static hresult shmemkeyhandler(int fd, _U_ const char *key, _U_ const char *val)
return RESULT_SILENCE; return RESULT_SILENCE;
} }
// infinity loop
static hresult inftyhandler(int fd, _U_ const char *key, const char *val){
char buf[64];
if(val){
int i = atoi(val);
infty = (i) ? 1 : 0;
}
snprintf(buf, 63, CMD_INFTY "=%d", infty);
if(!sendstrmessage(fd, buf)) return RESULT_DISCONNECTED;
return RESULT_SILENCE;
}
// 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(){
if(camera && camstate != CAMERA_IDLE){ if(camera && camstate != CAMERA_IDLE){
@ -999,6 +1014,7 @@ static handleritem items[] = {
{chkcc, _8bithandler, CMD_8BIT}, {chkcc, _8bithandler, CMD_8BIT},
{chkcc, fastspdhandler, CMD_FASTSPD}, {chkcc, fastspdhandler, CMD_FASTSPD},
{chkcc, darkhandler, CMD_DARK}, {chkcc, darkhandler, CMD_DARK},
{chkcc, inftyhandler, CMD_INFTY},
{NULL, tremainhandler, CMD_TREMAIN}, {NULL, tremainhandler, CMD_TREMAIN},
{NULL, FITSparhandler, CMD_AUTHOR}, {NULL, FITSparhandler, CMD_AUTHOR},
{NULL, FITSparhandler, CMD_INSTRUMENT}, {NULL, FITSparhandler, CMD_INSTRUMENT},
@ -1056,7 +1072,7 @@ void server(int sock, int imsock){
if(camera){ if(camera){
if(pthread_create(&camthread, NULL, processCAM, NULL)) ERR("pthread_create()"); if(pthread_create(&camthread, NULL, processCAM, NULL)) ERR("pthread_create()");
} }
int nfd = 2; // only one socket @start int nfd = 2; // only two listening sockets @start: command and image
struct pollfd poll_set[MAXCLIENTS+2]; struct pollfd poll_set[MAXCLIENTS+2];
char buffers[MAXCLIENTS][CLBUFSZ]; // buffers for data reading char buffers[MAXCLIENTS][CLBUFSZ]; // buffers for data reading
bzero(poll_set, sizeof(poll_set)); bzero(poll_set, sizeof(poll_set));
@ -1105,7 +1121,10 @@ void server(int sock, int imsock){
} }
// process some data & send messages to ALL // process some data & send messages to ALL
if(camstate == CAMERA_FRAMERDY || camstate == CAMERA_ERROR){ if(camstate == CAMERA_FRAMERDY || camstate == CAMERA_ERROR){
if(camstate == CAMERA_FRAMERDY) ima->timestamp = dtime(); // set timestamp if(camstate == CAMERA_FRAMERDY){
ima->timestamp = dtime(); // set timestamp
++ima->imnumber; // increment counter
}
char buff[PATH_MAX+32]; char buff[PATH_MAX+32];
snprintf(buff, PATH_MAX, CMD_EXPSTATE "=%d", camstate); snprintf(buff, PATH_MAX, CMD_EXPSTATE "=%d", camstate);
DBG("Send %s to %d clients", buff, nfd - 2); DBG("Send %s to %d clients", buff, nfd - 2);
@ -1134,6 +1153,13 @@ void server(int sock, int imsock){
--nfd; --nfd;
} }
} }
// check `infty`
if(camstate == CAMERA_IDLE && infty){ // start new exposition
// mark to start new capture in infinity loop when at least one client connected
if(nfd > 2) camflags |= FLAG_STARTCAPTURE;
TIMESTAMP("start new capture due to `infty`");
TIMEINIT();
}
} }
focclose(focdev); focclose(focdev);
closewheel(wheeldev); closewheel(wheeldev);

View File

@ -70,6 +70,7 @@ char *makeabspath(const char *path, int shouldbe);
#define CMD_8BIT "8bit" #define CMD_8BIT "8bit"
#define CMD_FASTSPD "fastspeed" #define CMD_FASTSPD "fastspeed"
#define CMD_DARK "dark" #define CMD_DARK "dark"
#define CMD_INFTY "infty"
// FITS file keywords // FITS file keywords
#define CMD_AUTHOR "author" #define CMD_AUTHOR "author"
#define CMD_INSTRUMENT "instrument" #define CMD_INSTRUMENT "instrument"

View File

@ -36,7 +36,7 @@
// wait for mutex locking // wait for mutex locking
#define BUSY_TIMEOUT (1.0) #define BUSY_TIMEOUT (1.0)
// waiting for answer timeout // waiting for answer timeout
#define ANSWER_TIMEOUT (0.001) #define ANSWER_TIMEOUT (0.01)
// wait for exposition ends (between subsequent check calls) // wait for exposition ends (between subsequent check calls)
#define WAIT_TIMEOUT (2.0) #define WAIT_TIMEOUT (2.0)
// client will disconnect after this time from last server message // client will disconnect after this time from last server message