mirror of
https://github.com/eddyem/CCD_Capture.git
synced 2025-12-06 18:55:17 +03:00
change stored size (8/16 bit); allocate img for server in shared memory (TODO: add to client ability of reading from shm)
This commit is contained in:
parent
cb38636d78
commit
8132c07479
@ -293,10 +293,10 @@ static int setdevno(int N){
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int setbitdepth(int i){
|
static int setbitdepth(int depth){
|
||||||
#define MONON 4
|
#define MONON 4
|
||||||
const char *fmts[MONON] = {"Mono16", "Mono14", "Mono12", "Mono10"};
|
const char *fmts[MONON] = {"Mono16", "Mono14", "Mono12", "Mono10"};
|
||||||
if(i == 0){ // 8 bit
|
if(depth == 0){ // 8 bit
|
||||||
if(!PylonDeviceFeatureIsAvailable( hDev, "EnumEntry_PixelFormat_Mono8" )) return FALSE;
|
if(!PylonDeviceFeatureIsAvailable( hDev, "EnumEntry_PixelFormat_Mono8" )) return FALSE;
|
||||||
PYLONFN(PylonDeviceFeatureFromString, hDev, "PixelFormat", "Mono8");
|
PYLONFN(PylonDeviceFeatureFromString, hDev, "PixelFormat", "Mono8");
|
||||||
green("Pixel format: Mono8\n");
|
green("Pixel format: Mono8\n");
|
||||||
@ -370,21 +370,21 @@ static int capture(IMG *ima){
|
|||||||
int width = grabResult.SizeX, height = grabResult.SizeY, stride = grabResult.SizeX + grabResult.PaddingX;
|
int width = grabResult.SizeX, height = grabResult.SizeY, stride = grabResult.SizeX + grabResult.PaddingX;
|
||||||
//TIMESTAMP("start converting");
|
//TIMESTAMP("start converting");
|
||||||
if(is16bit){
|
if(is16bit){
|
||||||
int s2 = stride<<1, w2 = width<<1;
|
int s2 = stride<<1;
|
||||||
OMP_FOR()
|
OMP_FOR()
|
||||||
for(int y = 0; y < height; ++y){
|
for(int y = 0; y < height; ++y){
|
||||||
uint16_t *Out = &ima->data[y*width];
|
uint8_t *Out = &((uint8_t*)ima->data)[y*width];
|
||||||
const uint8_t *In = &imgBuf[y*s2];
|
const uint8_t *In = &imgBuf[y*s2];
|
||||||
memcpy(Out, In, w2);
|
for(int x = 0; x < width; ++x){
|
||||||
|
*Out++ = *In; In += 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
OMP_FOR()
|
OMP_FOR()
|
||||||
for(int y = 0; y < height; ++y){
|
for(int y = 0; y < height; ++y){
|
||||||
uint16_t *Out = &ima->data[y*width];
|
uint16_t *Out = &((uint16_t*)ima->data)[y*width];
|
||||||
const uint8_t *In = &imgBuf[y*stride];
|
const uint8_t *In = &imgBuf[y*stride];
|
||||||
for(int x = 0; x < width; ++x){
|
memcpy(Out, In, width);
|
||||||
*Out++ = *In++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//TIMESTAMP("image ready");
|
//TIMESTAMP("image ready");
|
||||||
|
|||||||
@ -40,6 +40,7 @@ static float focuserpos = 1., brightness = 1., gain = 0.;
|
|||||||
static float camtemp = -30., exptime = 0.;
|
static float camtemp = -30., exptime = 0.;
|
||||||
static capture_status capstat = CAPTURE_NO;
|
static capture_status capstat = CAPTURE_NO;
|
||||||
static double texpstart = 0.;
|
static double texpstart = 0.;
|
||||||
|
static uint8_t bitpix = 16; // bit depth: 8 or 16
|
||||||
|
|
||||||
static int campoll(capture_status *st, float *remain){
|
static int campoll(capture_status *st, float *remain){
|
||||||
if(capstat != CAPTURE_PROCESS){
|
if(capstat != CAPTURE_PROCESS){
|
||||||
@ -68,16 +69,37 @@ static int startexp(){
|
|||||||
static int camcapt(IMG *ima){
|
static int camcapt(IMG *ima){
|
||||||
static int n = 0;
|
static int n = 0;
|
||||||
if(!ima || !ima->data) return FALSE;
|
if(!ima || !ima->data) return FALSE;
|
||||||
|
if(bitpix == 16){
|
||||||
OMP_FOR()
|
OMP_FOR()
|
||||||
for(int y = 0; y < ima->h; ++y){
|
for(int y = 0; y < ima->h; ++y){
|
||||||
uint16_t *d = &ima->data[y*ima->w];
|
uint16_t *d = &((uint16_t*)ima->data)[y*ima->w];
|
||||||
for(int x = 0; x < ima->w; ++x){ // sinusoide 100x200
|
for(int x = 0; x < ima->w; ++x){ // sinusoide 100x200
|
||||||
//*d++ = (uint16_t)(((n+x)%100)/99.*65535.);
|
//*d++ = (uint16_t)(((n+x)%100)/99.*65535.);
|
||||||
*d++ = (uint16_t)((1. + sin((n+x) * M_PI/50.)*sin((n+y) * M_PI/100.))*32767.);
|
*d++ = (uint16_t)((1. + sin((n+x) * M_PI/50.)*sin((n+y) * M_PI/100.))*32767.);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
OMP_FOR()
|
||||||
|
for(int y = 0; y < ima->h; ++y){
|
||||||
|
uint8_t *d = &((uint8_t*)ima->data)[y*ima->w];
|
||||||
|
for(int x = 0; x < ima->w; ++x){ // sinusoide 100x200
|
||||||
|
//*d++ = (uint16_t)(((n+x)%100)/99.*65535.);
|
||||||
|
*d++ = (uint8_t)((1. + sin((n+x) * M_PI/50.)*sin((n+y) * M_PI/100.))*127.);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
++n;
|
++n;
|
||||||
ima->bitpix = 16;
|
ima->bitpix = bitpix;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int camsetbit(int b){
|
||||||
|
bitpix = (b) ? 16 : 8;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int camgetbp(uint8_t *bp){
|
||||||
|
if(bp) *bp = bitpix;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,7 +127,6 @@ static int camsetexp(float t){
|
|||||||
exptime = t;
|
exptime = t;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int camsetgain(float g){
|
static int camsetgain(float g){
|
||||||
gain = g;
|
gain = g;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -261,11 +282,12 @@ __attribute__ ((visibility("default"))) Camera camera = {
|
|||||||
.confio = istub,
|
.confio = istub,
|
||||||
.setio = istub,
|
.setio = istub,
|
||||||
.setframetype = istub,
|
.setframetype = istub,
|
||||||
.setbitdepth = istub,
|
.setbitdepth = camsetbit,
|
||||||
.setfastspeed = istub,
|
.setfastspeed = istub,
|
||||||
.setgeometry = camsetgeom,
|
.setgeometry = camsetgeom,
|
||||||
.setfanspeed = camfan,
|
.setfanspeed = camfan,
|
||||||
// getters:
|
// getters:
|
||||||
|
.getbitpix = camgetbp,
|
||||||
.getbrightness = camgetbrig,
|
.getbrightness = camgetbrig,
|
||||||
.getModelName = camgetnam,
|
.getModelName = camgetnam,
|
||||||
.getgain = camgetgain,
|
.getgain = camgetgain,
|
||||||
|
|||||||
@ -463,7 +463,8 @@ retn:
|
|||||||
static int fli_capt(IMG *ima){
|
static int fli_capt(IMG *ima){
|
||||||
if(!ima || !ima->data) return FALSE;
|
if(!ima || !ima->data) return FALSE;
|
||||||
for(int row = 0; row < ima->h; row++){
|
for(int row = 0; row < ima->h; row++){
|
||||||
TRYFUNC(FLIGrabRow, camdev, &ima->data[row * ima->w], ima->w);
|
void *ptr = (void*)((is16bit) ? ((uint16_t*)ima->data) + row * ima->w : ((uint8_t*)ima->data) + row * ima->w);
|
||||||
|
TRYFUNC(FLIGrabRow, camdev, ptr, ima->w);
|
||||||
if(fli_err) return FALSE;
|
if(fli_err) return FALSE;
|
||||||
}
|
}
|
||||||
ima->bitpix = is16bit ? 16 : 8;
|
ima->bitpix = is16bit ? 16 : 8;
|
||||||
|
|||||||
@ -445,36 +445,27 @@ retn:
|
|||||||
static int cam_capt(IMG *ima){
|
static int cam_capt(IMG *ima){
|
||||||
if(!handle || !pdata) return FALSE;
|
if(!handle || !pdata) return FALSE;
|
||||||
if(!ima || !ima->data) return FALSE;
|
if(!ima || !ima->data) return FALSE;
|
||||||
;
|
|
||||||
int bytes = ima->h*ima->w * 2, stbytes = stImageInfo.nWidth * stImageInfo.nHeight * 2;
|
|
||||||
if(bytes > pdatasz) bytes = pdatasz;
|
|
||||||
if(bytes != stbytes) WARNX("Different sizes of image buffer & grabbed image");
|
|
||||||
if(stbytes > bytes) bytes = stbytes;
|
|
||||||
DBG("Copy %d bytes (stbytes=%d)", bytes, stbytes);
|
|
||||||
MVCC_ENUMVALUE EnumValue;
|
MVCC_ENUMVALUE EnumValue;
|
||||||
TRY(GetEnumValue, "PixelSize", &EnumValue);
|
TRY(GetEnumValue, "PixelSize", &EnumValue);
|
||||||
DBG("PixelSize = %u", EnumValue.nCurValue);
|
DBG("PixelSize = %u", EnumValue.nCurValue);
|
||||||
ONOK(){
|
ONOK(){
|
||||||
//green("pixsize=%d\n", EnumValue.nCurValue);
|
int bytes = ima->h*ima->w * ((7 + ima->bitpix) / 8), stbytes = stImageInfo.nWidth * stImageInfo.nHeight;
|
||||||
if(EnumValue.nCurValue == 16){
|
if(EnumValue.nCurValue == 16){
|
||||||
memcpy(ima->data, pdata, bytes);
|
|
||||||
ima->bitpix = 12;
|
ima->bitpix = 12;
|
||||||
return TRUE;
|
stbytes *= 2;
|
||||||
}else if(EnumValue.nCurValue != 8){
|
}else if(EnumValue.nCurValue == 8){
|
||||||
|
ima->bitpix = 8;
|
||||||
|
}else{
|
||||||
WARNX("Unsupported pixel size");
|
WARNX("Unsupported pixel size");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
if(bytes > pdatasz) bytes = pdatasz;
|
||||||
// transform 8bits to 16
|
if(bytes != stbytes) WARNX("Different sizes of image buffer & grabbed image");
|
||||||
DBG("TRANSFORM 8 bit to 16");
|
DBG("Copy %d bytes (stbytes=%d)", bytes, stbytes);
|
||||||
bytes /= 2;
|
memcpy(ima->data, pdata, bytes);
|
||||||
uint8_t *ptr = (uint8_t*) pdata;
|
|
||||||
OMP_FOR()
|
|
||||||
for(int i = 0; i < bytes; ++i){
|
|
||||||
ima->data[i] = (uint16_t) *ptr++;
|
|
||||||
}
|
|
||||||
ima->bitpix = 8;
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cam_modelname(char *buf, int bufsz){
|
static int cam_modelname(char *buf, int bufsz){
|
||||||
|
|||||||
@ -101,7 +101,8 @@ static int campoll(capture_status *st, float *remain){
|
|||||||
break;
|
break;
|
||||||
default: // failed
|
default: // failed
|
||||||
DBG("Failed: %d", s);
|
DBG("Failed: %d", s);
|
||||||
*st = CAPTURE_ABORTED;
|
//*st = CAPTURE_ABORTED;
|
||||||
|
*st = CAPTURE_READY;
|
||||||
}
|
}
|
||||||
if(remain){
|
if(remain){
|
||||||
float diff = exptime - (dtime() - starttime);
|
float diff = exptime - (dtime() - starttime);
|
||||||
@ -392,6 +393,7 @@ static int setfspd(int spd){ // set fast speed (0..3): 0 - 40% bandwidthovrl, 3
|
|||||||
if(spd > 2) bw = 100.;
|
if(spd > 2) bw = 100.;
|
||||||
else if(spd > 0) bw += 20. * spd;
|
else if(spd > 0) bw += 20. * spd;
|
||||||
DBG("set BANDWIDTH to %g", bw);
|
DBG("set BANDWIDTH to %g", bw);
|
||||||
|
zwo_setfloat(1, ASI_HIGH_SPEED_MODE);
|
||||||
if(ASI_SUCCESS != zwo_setfloat(bw, ASI_BANDWIDTHOVERLOAD)){
|
if(ASI_SUCCESS != zwo_setfloat(bw, ASI_BANDWIDTHOVERLOAD)){
|
||||||
DBG("Can't set");
|
DBG("Can't set");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|||||||
@ -18,13 +18,22 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h> // for size_t
|
||||||
|
|
||||||
typedef struct{
|
// magic to mark our SHM
|
||||||
uint16_t *data; // image data
|
#define SHM_MAGIC (0xdeadbeef)
|
||||||
|
|
||||||
|
// base image parameters - sent by socket and stored in shared memory
|
||||||
|
typedef struct __attribute__((packed, aligned(4))){
|
||||||
|
uint32_t MAGICK; // magick (DEADBEEF) - to mark our shm
|
||||||
|
double timestamp; // timestamp of image taken
|
||||||
uint8_t bitpix; // bits per pixel (8 or 16)
|
uint8_t bitpix; // bits per pixel (8 or 16)
|
||||||
int w, h; // image size
|
int w, h; // image size
|
||||||
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
|
||||||
|
void *data; // pointer to data (next byte after this struct) - only for server
|
||||||
|
/* `data` is uint8_t or uint16_t depending on `bitpix` */
|
||||||
} IMG;
|
} IMG;
|
||||||
|
|
||||||
// format of single frame
|
// format of single frame
|
||||||
@ -78,12 +87,13 @@ typedef struct{
|
|||||||
int (*confio)(int s); // configure IO-port
|
int (*confio)(int s); // configure IO-port
|
||||||
int (*setio)(int s); // set IO-port to given state
|
int (*setio)(int s); // set IO-port to given state
|
||||||
int (*setframetype)(int l); // set frametype: 1 - light, 0 - dark
|
int (*setframetype)(int l); // set frametype: 1 - light, 0 - dark
|
||||||
int (*setbitdepth)(int h); // set bit depth: 1 - high, 0 - low
|
int (*setbitdepth)(int h); // set bit depth : 1 - high (16 bit), 0 - low (8 bit)
|
||||||
int (*setfastspeed)(int s); // set readout speed: 1 - fast, 0 - low
|
int (*setfastspeed)(int s); // set readout speed: 1 - fast, 0 - low
|
||||||
// geometry (if TRUE, all args are changed to suitable values)
|
// geometry (if TRUE, all args are changed to suitable values)
|
||||||
int (*setgeometry)(frameformat *fmt); // set geometry in UNBINNED coordinates
|
int (*setgeometry)(frameformat *fmt); // set geometry in UNBINNED coordinates
|
||||||
int (*setfanspeed)(fan_speed spd); // set fan speed
|
int (*setfanspeed)(fan_speed spd); // set fan speed
|
||||||
// getters:
|
// getters:
|
||||||
|
int (*getbitpix)(uint8_t *bp); // get bit depth in bits per pixel (8, 12, 16 etc)
|
||||||
int (*getbrightness)(float *b);// get brightnes level
|
int (*getbrightness)(float *b);// get brightnes level
|
||||||
int (*getModelName)(char *n, int l);// string with model name (l - length of n in bytes)
|
int (*getModelName)(char *n, int l);// string with model name (l - length of n in bytes)
|
||||||
int (*getgain)(float *g); // get gain value
|
int (*getgain)(float *g); // get gain value
|
||||||
|
|||||||
79
ccdfunc.c
79
ccdfunc.c
@ -211,7 +211,6 @@ int saveFITS(IMG *img, char **outp){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
int width = img->w, height = img->h;
|
int width = img->w, height = img->h;
|
||||||
void *data = (void*) img->data;
|
|
||||||
long naxes[2] = {width, height};
|
long naxes[2] = {width, height};
|
||||||
double tmpd = 0.0;
|
double tmpd = 0.0;
|
||||||
float tmpf = 0.0;
|
float tmpf = 0.0;
|
||||||
@ -224,7 +223,9 @@ int saveFITS(IMG *img, char **outp){
|
|||||||
fitserror = 0;
|
fitserror = 0;
|
||||||
TRYFITS(fits_create_file, &fp, fnam);
|
TRYFITS(fits_create_file, &fp, fnam);
|
||||||
if(fitserror) goto cloerr;
|
if(fitserror) goto cloerr;
|
||||||
TRYFITS(fits_create_img, fp, USHORT_IMG, 2, naxes);
|
int nbytes = getNbytes(img);
|
||||||
|
if(nbytes == 1) TRYFITS(fits_create_img, fp, BYTE_IMG, 2, naxes);
|
||||||
|
else TRYFITS(fits_create_img, fp, USHORT_IMG, 2, naxes);
|
||||||
if(fitserror) goto cloerr;
|
if(fitserror) goto cloerr;
|
||||||
// ORIGIN / organization responsible for the data
|
// ORIGIN / organization responsible for the data
|
||||||
WRITEKEY(fp, TSTRING, "ORIGIN", "SAO RAS", "organization responsible for the data");
|
WRITEKEY(fp, TSTRING, "ORIGIN", "SAO RAS", "organization responsible for the data");
|
||||||
@ -348,7 +349,8 @@ int saveFITS(IMG *img, char **outp){
|
|||||||
// INSTRUME / Instrument
|
// INSTRUME / Instrument
|
||||||
if(GP->instrument)
|
if(GP->instrument)
|
||||||
WRITEKEY(fp, TSTRING, "INSTRUME", GP->instrument, "Instrument");
|
WRITEKEY(fp, TSTRING, "INSTRUME", GP->instrument, "Instrument");
|
||||||
TRYFITS(fits_write_img, fp, TUSHORT, 1, width * height, 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);
|
||||||
if(fitserror) goto cloerr;
|
if(fitserror) goto cloerr;
|
||||||
TRYFITS(fits_close_file, fp);
|
TRYFITS(fits_close_file, fp);
|
||||||
cloerr:
|
cloerr:
|
||||||
@ -369,24 +371,23 @@ cloerr:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void calculate_stat(IMG *image){
|
static void stat8(IMG *image){
|
||||||
uint64_t Noverld = 0L, size = image->h*image->w;
|
|
||||||
double sum = 0., sum2 = 0.;
|
double sum = 0., sum2 = 0.;
|
||||||
uint16_t max = 0, min = 65535;
|
size_t size = image->w * image->h;
|
||||||
|
uint8_t max = 0, min = UINT8_MAX;
|
||||||
|
uint8_t *idata = (uint8_t*)image->data;
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
{
|
{
|
||||||
uint16_t maxpriv = 0, minpriv = 65535;
|
uint8_t maxpriv = 0, minpriv = UINT8_MAX;
|
||||||
uint64_t ovrpriv = 0;
|
|
||||||
double sumpriv = 0., sum2priv = 0.;
|
double sumpriv = 0., sum2priv = 0.;
|
||||||
#pragma omp for nowait
|
#pragma omp for nowait
|
||||||
for(uint64_t i = 0; i < size; ++i){
|
for(size_t i = 0; i < size; ++i){
|
||||||
uint16_t val = image->data[i];
|
uint8_t val = idata[i];
|
||||||
float pv = (float) val;
|
float pv = (float) val;
|
||||||
sum += pv;
|
sum += pv;
|
||||||
sum2 += (pv * pv);
|
sum2 += (pv * pv);
|
||||||
if(max < val) max = val;
|
if(max < val) max = val;
|
||||||
if(min > val) min = val;
|
if(min > val) min = val;
|
||||||
if(val >= 65530) ovrpriv++;
|
|
||||||
}
|
}
|
||||||
#pragma omp critical
|
#pragma omp critical
|
||||||
{
|
{
|
||||||
@ -394,7 +395,6 @@ void calculate_stat(IMG *image){
|
|||||||
if(min > minpriv) min = minpriv;
|
if(min > minpriv) min = minpriv;
|
||||||
sum += sumpriv;
|
sum += sumpriv;
|
||||||
sum2 += sum2priv;
|
sum2 += sum2priv;
|
||||||
Noverld += ovrpriv;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
double sz = (float)size;
|
double sz = (float)size;
|
||||||
@ -402,10 +402,49 @@ void calculate_stat(IMG *image){
|
|||||||
image->avr = avr;
|
image->avr = avr;
|
||||||
image->std = sqrt(fabs(sum2/sz - avr*avr));
|
image->std = sqrt(fabs(sum2/sz - avr*avr));
|
||||||
image->max = max; image->min = min;
|
image->max = max; image->min = min;
|
||||||
|
}
|
||||||
|
static void stat16(IMG *image){
|
||||||
|
double sum = 0., sum2 = 0.;
|
||||||
|
size_t size = image->w * image->h;
|
||||||
|
uint16_t max = 0, min = UINT16_MAX;
|
||||||
|
uint16_t *idata = (uint16_t*)image->data;
|
||||||
|
#pragma omp parallel
|
||||||
|
{
|
||||||
|
uint16_t maxpriv = 0, minpriv = UINT16_MAX;
|
||||||
|
double sumpriv = 0., sum2priv = 0.;
|
||||||
|
#pragma omp for nowait
|
||||||
|
for(size_t i = 0; i < size; ++i){
|
||||||
|
uint16_t val = idata[i];
|
||||||
|
float pv = (float) val;
|
||||||
|
sum += pv;
|
||||||
|
sum2 += (pv * pv);
|
||||||
|
if(max < val) max = val;
|
||||||
|
if(min > val) min = val;
|
||||||
|
}
|
||||||
|
#pragma omp critical
|
||||||
|
{
|
||||||
|
if(max < maxpriv) max = maxpriv;
|
||||||
|
if(min > minpriv) min = minpriv;
|
||||||
|
sum += sumpriv;
|
||||||
|
sum2 += sum2priv;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
double sz = (float)size;
|
||||||
|
double avr = sum/sz;
|
||||||
|
image->avr = avr;
|
||||||
|
image->std = sqrt(fabs(sum2/sz - avr*avr));
|
||||||
|
image->max = max; image->min = min;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void calculate_stat(IMG *image){
|
||||||
|
int nbytes = ((7 + image->bitpix) / 8);
|
||||||
|
if(nbytes == 1) stat8(image);
|
||||||
|
else stat16(image);
|
||||||
if(GP->verbose){
|
if(GP->verbose){
|
||||||
printf(_("Image stat:\n"));
|
printf(_("Image stat:\n"));
|
||||||
printf("avr = %.1f, std = %.1f, Noverload = %ld\n", avr, image->std, Noverld);
|
printf("avr = %.1f, std = %.1f\n", image->avr, image->std);
|
||||||
printf("max = %u, min = %u, size = %ld\n", max, min, size);
|
printf("max = %u, min = %u, size = %d pix\n", image->max, image->min, image->w * image->h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -770,6 +809,7 @@ void ccds(){
|
|||||||
frameformat fmt = camera->geometry;
|
frameformat fmt = camera->geometry;
|
||||||
int raw_width = fmt.w / GP->hbin, raw_height = fmt.h / GP->vbin;
|
int raw_width = fmt.w / GP->hbin, raw_height = fmt.h / GP->vbin;
|
||||||
DBG("w=%d, h=%d", raw_width, raw_height);
|
DBG("w=%d, h=%d", raw_width, raw_height);
|
||||||
|
// allocate maximum available memory - for 16bit image
|
||||||
uint16_t *img = MALLOC(uint16_t, raw_width * raw_height);
|
uint16_t *img = MALLOC(uint16_t, raw_width * raw_height);
|
||||||
DBG("\n\nAllocated image 2x%dx%d=%d", raw_width, raw_height, 2 * raw_width * raw_height);
|
DBG("\n\nAllocated image 2x%dx%d=%d", raw_width, raw_height, 2 * raw_width * raw_height);
|
||||||
IMG ima = {.data = img, .w = raw_width, .h = raw_height};
|
IMG ima = {.data = img, .w = raw_width, .h = raw_height};
|
||||||
@ -827,6 +867,17 @@ void camstop(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief getNbytes - calculate amount of bytes to store bitpix (1/2)
|
||||||
|
* @param image - image
|
||||||
|
* @return 1 for bitpix<8 or 2
|
||||||
|
*/
|
||||||
|
int getNbytes(IMG *image){
|
||||||
|
int n = (image->bitpix + 7) / 8;
|
||||||
|
if(n < 1) n = 1;
|
||||||
|
if(n > 2) n = 2;
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef IMAGEVIEW
|
#ifdef IMAGEVIEW
|
||||||
#define NFRM (10)
|
#define NFRM (10)
|
||||||
|
|||||||
@ -31,6 +31,8 @@ int prepare_ccds();
|
|||||||
void ccds();
|
void ccds();
|
||||||
void camstop();
|
void camstop();
|
||||||
|
|
||||||
|
int getNbytes(IMG *image);
|
||||||
|
|
||||||
int startCCD(void **dlh);
|
int startCCD(void **dlh);
|
||||||
int startWheel(void **dlh);
|
int startWheel(void **dlh);
|
||||||
int startFocuser(void **dlh);
|
int startFocuser(void **dlh);
|
||||||
|
|||||||
71
client.c
71
client.c
@ -46,7 +46,8 @@ static int xc0,yc0,xc1,yc1; // current format
|
|||||||
#ifdef IMAGEVIEW
|
#ifdef IMAGEVIEW
|
||||||
static IMG ima = {0};
|
static IMG ima = {0};
|
||||||
static volatile atomic_int grabno = 0, oldgrabno = 0;
|
static volatile atomic_int grabno = 0, oldgrabno = 0;
|
||||||
static int imdatalen = 0, imbufsz = 0;
|
static size_t imbufsz = 0;
|
||||||
|
static uint8_t *imbuf = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static char *readmsg(int fd){
|
static char *readmsg(int fd){
|
||||||
@ -100,6 +101,7 @@ static int parseans(char *ans){
|
|||||||
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;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
#ifdef IMAGEVIEW
|
#ifdef IMAGEVIEW
|
||||||
else if(0 == strcmp(CMD_IMWIDTH, ans)){
|
else if(0 == strcmp(CMD_IMWIDTH, ans)){
|
||||||
ima.w = atoi(val);
|
ima.w = atoi(val);
|
||||||
@ -113,6 +115,7 @@ static int parseans(char *ans){
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
*/
|
||||||
//TIMESTAMP("parseans() end");
|
//TIMESTAMP("parseans() end");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@ -313,40 +316,56 @@ void init_grab_sock(int sock){
|
|||||||
send_headers(sock);
|
send_headers(sock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void getimage(){
|
/**
|
||||||
FNAME();
|
* @brief readNbytes - read `N` bytes from descriptor `fd` into buffer *buf
|
||||||
int sock = controlfd;
|
* @return false if failed
|
||||||
TIMESTAMP("Get image sizes");
|
*/
|
||||||
SENDCMDW(CMD_IMWIDTH);
|
static int readNbytes(int fd, size_t N, uint8_t *buf){
|
||||||
SENDCMDW(CMD_IMHEIGHT);
|
size_t got = 0, need = N;
|
||||||
int imsock = open_socket(FALSE, GP->imageport, TRUE);
|
|
||||||
if(imsock < 0) ERRX("getimage(): can't open image transport socket");
|
|
||||||
if(imbufsz < imdatalen){
|
|
||||||
DBG("Reallocate memory from %d to %d", imbufsz, imdatalen);
|
|
||||||
ima.data = realloc(ima.data, imdatalen);
|
|
||||||
imbufsz = imdatalen;
|
|
||||||
}
|
|
||||||
double t0 = dtime();
|
double t0 = dtime();
|
||||||
int got = 0;
|
while(dtime() - t0 < CLIENT_TIMEOUT && canberead(fd) && need){
|
||||||
TIMESTAMP("Start of data read");
|
ssize_t rd = read(fd, buf + got, need);
|
||||||
while(dtime() - t0 < CLIENT_TIMEOUT){
|
|
||||||
if(!canberead(imsock)) continue;
|
|
||||||
uint8_t *target = ((uint8_t*)ima.data)+got;
|
|
||||||
int rd = read(imsock, target, imdatalen - got);
|
|
||||||
if(rd <= 0){
|
if(rd <= 0){
|
||||||
WARNX("Server disconnected");
|
WARNX("Server disconnected");
|
||||||
signals(1);
|
signals(1);
|
||||||
}
|
}
|
||||||
got += rd;
|
got += rd; need -= rd;
|
||||||
//DBG("Read %d bytes; total read %d from %d; first: %x %x %x %x", rd, got, imdatalen, target[0],
|
|
||||||
// target[1], target[2], target[3]);
|
|
||||||
if(got == imdatalen){
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
if(need) return FALSE; // didn't got whole packet
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void getimage(){
|
||||||
|
FNAME();
|
||||||
|
TIMESTAMP("Get image sizes");
|
||||||
|
/*SENDCMDW(CMD_IMWIDTH);
|
||||||
|
SENDCMDW(CMD_IMHEIGHT);*/
|
||||||
|
int imsock = open_socket(FALSE, GP->imageport, TRUE);
|
||||||
|
if(imsock < 0) ERRX("getimage(): can't open image transport socket");
|
||||||
|
// get image size
|
||||||
|
if(!readNbytes(imsock, sizeof(IMG), (uint8_t*)&ima)){
|
||||||
|
WARNX("Can't read image header");
|
||||||
|
goto eofg;
|
||||||
|
}
|
||||||
|
if(ima.bytelen < 1){
|
||||||
|
WARNX("Wrong image size");
|
||||||
|
goto eofg;
|
||||||
|
}
|
||||||
|
if(imbufsz < ima.bytelen){
|
||||||
|
size_t newsz = 1024 * (1 + ima.bytelen / 1024);
|
||||||
|
DBG("Reallocate memory from %zd to %zd", imbufsz, newsz);
|
||||||
|
imbufsz = newsz;
|
||||||
|
imbuf = realloc(imbuf, imbufsz);
|
||||||
|
}
|
||||||
|
ima.data = imbuf; // renew this value each time after getting `ima` from server
|
||||||
|
TIMESTAMP("Start of data read");
|
||||||
|
if(!readNbytes(imsock, ima.bytelen, imbuf)){
|
||||||
|
WARNX("Can't read image data");
|
||||||
|
goto eofg;
|
||||||
}
|
}
|
||||||
if(dtime() - t0 > CLIENT_TIMEOUT) WARNX("Timeout, image didn't received");
|
|
||||||
TIMESTAMP("Got image");
|
TIMESTAMP("Got image");
|
||||||
++grabno;
|
++grabno;
|
||||||
|
eofg:
|
||||||
close(imsock);
|
close(imsock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -30,6 +30,7 @@ static glob_pars G = {
|
|||||||
.brightness = NAN, .gain = NAN,
|
.brightness = NAN, .gain = NAN,
|
||||||
.setwheel = -1,
|
.setwheel = -1,
|
||||||
.fanspeed = -1,
|
.fanspeed = -1,
|
||||||
|
.shmkey = 7777777
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -102,6 +103,8 @@ myoption cmdlnopts[] = {
|
|||||||
{"viewer", NO_ARGS, &G.viewer,1, arg_none, NULL, N_("passive viewer (only get last images)")},
|
{"viewer", NO_ARGS, &G.viewer,1, arg_none, NULL, N_("passive viewer (only get last images)")},
|
||||||
{"restart", NO_ARGS, &G.restart,1, arg_none, NULL, N_("restart image server")},
|
{"restart", NO_ARGS, &G.restart,1, arg_none, NULL, N_("restart image server")},
|
||||||
|
|
||||||
|
{"shmkey", NEED_ARG, NULL, 'k', arg_int, APTR(&G.shmkey), N_("shared memory (with image data) key (default: 7777777")},
|
||||||
|
|
||||||
#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")},
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -69,6 +69,7 @@ typedef struct{
|
|||||||
int verbose; // each '-V' increases it
|
int verbose; // each '-V' increases it
|
||||||
int rewrite; // rewrite file
|
int rewrite; // rewrite file
|
||||||
int showimage; // show image preview
|
int showimage; // show image preview
|
||||||
|
int shmkey; // shared memory (with image data) key
|
||||||
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
|
||||||
|
|||||||
91
imageview.c
91
imageview.c
@ -427,6 +427,7 @@ static void roll_colorfun(){
|
|||||||
if(t == COLORFN_MAX) t = COLORFN_BWLINEAR;
|
if(t == COLORFN_MAX) t = COLORFN_BWLINEAR;
|
||||||
change_colorfun(t);
|
change_colorfun(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
no omp
|
no omp
|
||||||
histo: 0.000675201s
|
histo: 0.000675201s
|
||||||
@ -444,7 +445,7 @@ result: 0.0014689s
|
|||||||
* @param w,h - image width and height
|
* @param w,h - image width and height
|
||||||
* @return data allocated here
|
* @return data allocated here
|
||||||
*/
|
*/
|
||||||
static uint8_t *equalize(uint16_t *ori, int w, int h){
|
static uint8_t *equalize(IMG *img, int w, int h){
|
||||||
uint8_t *retn = MALLOC(uint8_t, w*h);
|
uint8_t *retn = MALLOC(uint8_t, w*h);
|
||||||
double orig_hysto[0x10000] = {0.}; // original hystogram
|
double orig_hysto[0x10000] = {0.}; // original hystogram
|
||||||
uint8_t eq_levls[0x10000] = {0}; // levels to convert: newpix = eq_levls[oldpix]
|
uint8_t eq_levls[0x10000] = {0}; // levels to convert: newpix = eq_levls[oldpix]
|
||||||
@ -464,19 +465,39 @@ static uint8_t *equalize(uint16_t *ori, int w, int h){
|
|||||||
for(int i = 0; i < 0x10000; ++i) orig_hysto[i] += histogram_private[i];
|
for(int i = 0; i < 0x10000; ++i) orig_hysto[i] += histogram_private[i];
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
|
int bytes = getNbytes(img);
|
||||||
|
|
||||||
|
if(bytes == 1){
|
||||||
|
uint8_t *data = (uint8_t*) img->data;
|
||||||
for(int i = 0; i < s; ++i){
|
for(int i = 0; i < s; ++i){
|
||||||
++orig_hysto[ori[i]];
|
++orig_hysto[data[i]];
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
uint16_t *data = (uint16_t*) img->data;
|
||||||
|
for(int i = 0; i < s; ++i){
|
||||||
|
++orig_hysto[data[i]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//WARNX("histo: %gs", dtime()-t0);
|
//WARNX("histo: %gs", dtime()-t0);
|
||||||
|
int max = (bytes == 1) ? 0xff : 0xffff;
|
||||||
double part = (double)(s + 1) / 0x100, N = 0.;
|
double part = (double)(s + 1) / 0x100, N = 0.;
|
||||||
for(int i = 0; i <= 0xffff; ++i){
|
for(int i = 0; i <= max; ++i){
|
||||||
N += orig_hysto[i];
|
N += orig_hysto[i];
|
||||||
eq_levls[i] = (uint8_t)(N/part);
|
eq_levls[i] = (uint8_t)(N/part);
|
||||||
}
|
}
|
||||||
//WARNX("equal: %gs", dtime()-t0);
|
//WARNX("equal: %gs", dtime()-t0);
|
||||||
//OMP_FOR() -- takes the same time!
|
//OMP_FOR() -- takes the same time!
|
||||||
|
if(bytes == 1){
|
||||||
|
uint8_t *data = (uint8_t*) img->data;
|
||||||
for(int i = 0; i < s; ++i){
|
for(int i = 0; i < s; ++i){
|
||||||
retn[i] = eq_levls[ori[i]];
|
retn[i] = eq_levls[data[i]];
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
uint16_t *data = (uint16_t*) img->data;
|
||||||
|
for(int i = 0; i < s; ++i){
|
||||||
|
retn[i] = eq_levls[data[i]];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//WARNX("result: %gs", dtime()-t0);
|
//WARNX("result: %gs", dtime()-t0);
|
||||||
return retn;
|
return retn;
|
||||||
@ -493,20 +514,42 @@ cuts: 0.00188208s
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// count image cuts as [median-sigma median+5sigma]
|
// count image cuts as [median-sigma median+5sigma]
|
||||||
static uint8_t *mkcuts(uint16_t *ori, int w, int h){
|
static uint8_t *mkcuts(IMG *img, int w, int h){
|
||||||
uint8_t *retn = MALLOC(uint8_t, w*h);
|
uint8_t *retn = MALLOC(uint8_t, w*h);
|
||||||
int orig_hysto[0x10000] = {0.}; // original hystogram
|
int orig_hysto[0x10000] = {0.}; // original hystogram
|
||||||
int s = w*h;
|
int s = w*h;
|
||||||
double sum = 0., sum2 = 0.;
|
double sum = 0., sum2 = 0.;
|
||||||
//double t0 = dtime();
|
int bytes = getNbytes(img);
|
||||||
|
if(bytes == 1){
|
||||||
|
uint8_t *data = (uint8_t*) img->data;
|
||||||
|
#pragma omp parallel
|
||||||
|
{
|
||||||
|
size_t histogram_private[0x100] = {0};
|
||||||
|
double sm = 0., sm2 = 0.;
|
||||||
|
#pragma omp for nowait
|
||||||
|
for(int i = 0; i < s; ++i){
|
||||||
|
++histogram_private[data[i]];
|
||||||
|
double b = data[i];
|
||||||
|
sm += b;
|
||||||
|
sm2 += b*b;
|
||||||
|
}
|
||||||
|
#pragma omp critical
|
||||||
|
{
|
||||||
|
for(int i = 0; i < 0x100; ++i) orig_hysto[i] += histogram_private[i];
|
||||||
|
sum += sm;
|
||||||
|
sum2 += sm2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
uint16_t *data = (uint16_t*) img->data;
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
{
|
{
|
||||||
size_t histogram_private[0x10000] = {0};
|
size_t histogram_private[0x10000] = {0};
|
||||||
double sm = 0., sm2 = 0.;
|
double sm = 0., sm2 = 0.;
|
||||||
#pragma omp for nowait
|
#pragma omp for nowait
|
||||||
for(int i = 0; i < s; ++i){
|
for(int i = 0; i < s; ++i){
|
||||||
++histogram_private[ori[i]];
|
++histogram_private[data[i]];
|
||||||
double b = ori[i];
|
double b = data[i];
|
||||||
sm += b;
|
sm += b;
|
||||||
sm2 += b*b;
|
sm2 += b*b;
|
||||||
}
|
}
|
||||||
@ -517,37 +560,43 @@ static uint8_t *mkcuts(uint16_t *ori, int w, int h){
|
|||||||
sum2 += sm2;
|
sum2 += sm2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
for(int i = 0; i < s; ++i){
|
|
||||||
double b = ori[i];
|
|
||||||
++orig_hysto[ori[i]];
|
|
||||||
sum += b;
|
|
||||||
sum2 += b*b;
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
//WARNX("histo: %gs", dtime()-t0);
|
//WARNX("histo: %gs", dtime()-t0);
|
||||||
// get median level
|
// get median level
|
||||||
int counts = s/2, median = 0;
|
int counts = s/2, median = 0, max = (bytes == 1) ? 0xff : 0xffff;
|
||||||
for(; median < 0xffff; ++median){
|
for(; median < max; ++median){
|
||||||
if((counts -= orig_hysto[median]) < 0) break;
|
if((counts -= orig_hysto[median]) < 0) break;
|
||||||
}
|
}
|
||||||
sum /= s;
|
sum /= s;
|
||||||
double sigma = sqrt(sum2/s - sum*sum);
|
double sigma = sqrt(sum2/s - sum*sum);
|
||||||
int low = median - sigma, high = median + 5.*sigma;
|
int low = median - sigma, high = median + 5.*sigma;
|
||||||
if(low < 0) low = 0;
|
if(low < 0) low = 0;
|
||||||
if(high > 0xffff) high = 0xffff;
|
if(high > max) high = max;
|
||||||
double A = 255./(high - low);
|
double A = 255./(high - low);
|
||||||
DBG("Got: sigma=%.1f, low=%d, high=%d, A=%g", sigma, low, high, A);
|
DBG("Got: sigma=%.1f, low=%d, high=%d, A=%g", sigma, low, high, A);
|
||||||
// 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
|
||||||
|
if(bytes == 1){
|
||||||
|
uint8_t *data = (uint8_t*) img->data;
|
||||||
OMP_FOR()
|
OMP_FOR()
|
||||||
for(int i = 0; i < s; ++i){
|
for(int i = 0; i < s; ++i){
|
||||||
uint16_t old = ori[i];
|
uint16_t old = data[i];
|
||||||
if(old > high){ retn[i] = 255; continue; }
|
if(old > high){ retn[i] = 255; continue; }
|
||||||
else if(old < low){ retn[i] = 0; continue; }
|
else if(old < low){ retn[i] = 0; continue; }
|
||||||
retn[i] = (uint8_t)(A*(old - low));
|
retn[i] = (uint8_t)(A*(old - low));
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
uint16_t *data = (uint16_t*) img->data;
|
||||||
|
OMP_FOR()
|
||||||
|
for(int i = 0; i < s; ++i){
|
||||||
|
uint16_t old = data[i];
|
||||||
|
if(old > high){ retn[i] = 255; continue; }
|
||||||
|
else if(old < low){ retn[i] = 0; continue; }
|
||||||
|
retn[i] = (uint8_t)(A*(old - low));
|
||||||
|
}
|
||||||
|
}
|
||||||
//WARNX("cuts: %gs", dtime()-t0);
|
//WARNX("cuts: %gs", dtime()-t0);
|
||||||
return retn;
|
return retn;
|
||||||
}
|
}
|
||||||
@ -569,10 +618,10 @@ static void change_displayed_image(IMG *img){
|
|||||||
uint8_t *newima;
|
uint8_t *newima;
|
||||||
if(imequalize){
|
if(imequalize){
|
||||||
DBG("equalize");
|
DBG("equalize");
|
||||||
newima = equalize(img->data, w, h);
|
newima = equalize(img, w, h);
|
||||||
}else{
|
}else{
|
||||||
DBG("cuts");
|
DBG("cuts");
|
||||||
newima = mkcuts(img->data, w, h);
|
newima = mkcuts(img, w, h);
|
||||||
}
|
}
|
||||||
GLubyte *dst = im->rawdata;
|
GLubyte *dst = im->rawdata;
|
||||||
//double t0 = dtime();
|
//double t0 = dtime();
|
||||||
|
|||||||
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: 2023-05-31 16:14+0300\n"
|
"POT-Creation-Date: 2023-12-14 16:53+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,235 +17,239 @@ 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:40
|
#: cmdlnopts.c:41
|
||||||
msgid "common device plugin (e.g devfli.so)"
|
msgid "common device plugin (e.g devfli.so)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:41
|
#: cmdlnopts.c:42
|
||||||
msgid "camera device plugin (e.g. devfli.so)"
|
msgid "camera device plugin (e.g. devfli.so)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:42
|
#: cmdlnopts.c:43
|
||||||
msgid "focuser device plugin (e.g. devzwo.so)"
|
msgid "focuser device plugin (e.g. devzwo.so)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:43
|
#: cmdlnopts.c:44
|
||||||
msgid "wheel device plugin (e.g. devdummy.so)"
|
msgid "wheel device plugin (e.g. devdummy.so)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:44
|
#: cmdlnopts.c:45
|
||||||
msgid "list connected devices"
|
msgid "list connected devices"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:45
|
#: cmdlnopts.c:46
|
||||||
msgid "camera device number (if many: 0, 1, 2 etc)"
|
msgid "camera device number (if many: 0, 1, 2 etc)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:46
|
#: cmdlnopts.c:47
|
||||||
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:47
|
#: cmdlnopts.c:48
|
||||||
msgid "focuser device number (if many: 0, 1, 2 etc)"
|
msgid "focuser device number (if many: 0, 1, 2 etc)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:48
|
#: cmdlnopts.c:49
|
||||||
msgid "show this help"
|
msgid "show this help"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:49
|
#: cmdlnopts.c:50
|
||||||
msgid "rewrite output file if exists"
|
msgid "rewrite output file if exists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:50
|
#: cmdlnopts.c:51
|
||||||
msgid "verbose level (-V - messages, -VV - debug, -VVV - all shit)"
|
msgid "verbose level (-V - messages, -VV - debug, -VVV - all shit)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:51
|
#: cmdlnopts.c:52
|
||||||
msgid "not open shutter, when exposing (\"dark frames\")"
|
msgid "not open shutter, when exposing (\"dark frames\")"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:52
|
#: cmdlnopts.c:53
|
||||||
msgid "run in 8-bit mode"
|
msgid "run in 8-bit mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:53
|
#: cmdlnopts.c:54
|
||||||
msgid "fast readout mode"
|
msgid "fast readout mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:54
|
#: cmdlnopts.c:55
|
||||||
msgid "set CCD temperature to given value (degr C)"
|
msgid "set CCD temperature to given value (degr C)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:55
|
#: cmdlnopts.c:56
|
||||||
msgid "set fan speed (0 - off, 1 - low, 2 - high)"
|
msgid "set fan speed (0 - off, 1 - low, 2 - high)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:57
|
#: cmdlnopts.c:58
|
||||||
msgid "program author"
|
msgid "program author"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:58
|
#: cmdlnopts.c:59
|
||||||
msgid "object type (neon, object, flat etc)"
|
msgid "object type (neon, object, flat etc)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:59
|
#: cmdlnopts.c:60
|
||||||
msgid "instrument name"
|
msgid "instrument name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:60
|
#: cmdlnopts.c:61
|
||||||
msgid "object name"
|
msgid "object name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:61
|
#: cmdlnopts.c:62
|
||||||
msgid "observers' names"
|
msgid "observers' names"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:62
|
#: cmdlnopts.c:63
|
||||||
msgid "observing program name"
|
msgid "observing program name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:63
|
#: cmdlnopts.c:64
|
||||||
msgid "add records to header from given file[s]"
|
msgid "add records to header from given file[s]"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:64
|
#: cmdlnopts.c:65
|
||||||
msgid "output file name"
|
msgid "output file name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:65
|
#: cmdlnopts.c:66
|
||||||
msgid "wait while exposition ends"
|
msgid "wait while exposition ends"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:67
|
#: cmdlnopts.c:68
|
||||||
msgid "N flushes before exposing (default: 1)"
|
msgid "N flushes before exposing (default: 1)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:68
|
#: cmdlnopts.c:69
|
||||||
msgid "horizontal binning to N pixels"
|
msgid "horizontal binning to N pixels"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:69
|
#: cmdlnopts.c:70
|
||||||
msgid "vertical binning to N pixels"
|
msgid "vertical binning to N pixels"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:70
|
#: cmdlnopts.c:71
|
||||||
msgid "make series of N frames"
|
msgid "make series of N frames"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:71
|
#: cmdlnopts.c:72
|
||||||
msgid "make pause for N seconds between expositions"
|
msgid "make pause for N seconds between expositions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:72
|
#: cmdlnopts.c:73
|
||||||
msgid "set exposure time to given value (seconds!)"
|
msgid "set exposure time to given value (seconds!)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:73
|
#: cmdlnopts.c:74
|
||||||
msgid "cancel current exposition"
|
msgid "cancel current exposition"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:74
|
#: cmdlnopts.c:75
|
||||||
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:75
|
#: cmdlnopts.c:76
|
||||||
msgid "absolute frame Y0 coordinate (-1 - all with overscan)"
|
msgid "absolute frame Y0 coordinate (-1 - all with overscan)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:76
|
#: cmdlnopts.c:77
|
||||||
msgid "absolute frame X1 coordinate (-1 - all with overscan)"
|
msgid "absolute frame X1 coordinate (-1 - all with overscan)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:77
|
#: cmdlnopts.c:78
|
||||||
msgid "absolute frame Y1 coordinate (-1 - all with overscan)"
|
msgid "absolute frame Y1 coordinate (-1 - all with overscan)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:79
|
#: cmdlnopts.c:80
|
||||||
msgid "open shutter"
|
msgid "open shutter"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:80
|
#: cmdlnopts.c:81
|
||||||
msgid "close shutter"
|
msgid "close shutter"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:81
|
#: cmdlnopts.c:82
|
||||||
msgid "run exposition on LOW @ pin5 I/O port"
|
msgid "run exposition on LOW @ pin5 I/O port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:82
|
#: cmdlnopts.c:83
|
||||||
msgid "run exposition on HIGH @ pin5 I/O port"
|
msgid "run exposition on HIGH @ pin5 I/O port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:83
|
#: cmdlnopts.c:84
|
||||||
msgid "get value of I/O port pins"
|
msgid "get value of I/O port pins"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:84
|
#: cmdlnopts.c:85
|
||||||
msgid "move stepper motor asynchronous"
|
msgid "move stepper motor asynchronous"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:86
|
#: cmdlnopts.c:87
|
||||||
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:87
|
#: cmdlnopts.c:88
|
||||||
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:89
|
#: cmdlnopts.c:90
|
||||||
msgid "move focuser to absolute position, mm"
|
msgid "move focuser to absolute position, mm"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:90
|
#: cmdlnopts.c:91
|
||||||
msgid "move focuser to relative position, mm (only for standalone)"
|
msgid "move focuser to relative position, mm (only for standalone)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:92
|
#: cmdlnopts.c:93
|
||||||
msgid "set wheel position"
|
msgid "set wheel position"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:94
|
#: cmdlnopts.c:95
|
||||||
msgid "CMOS gain level"
|
msgid "CMOS gain level"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:95
|
#: cmdlnopts.c:96
|
||||||
msgid "CMOS brightness level"
|
msgid "CMOS brightness level"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:97
|
#: cmdlnopts.c:98
|
||||||
msgid "logging file name (if run as server)"
|
msgid "logging file name (if run as server)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:98
|
#: cmdlnopts.c:99
|
||||||
msgid "UNIX socket name"
|
msgid "UNIX socket name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:99
|
#: cmdlnopts.c:100
|
||||||
msgid "local INET socket port"
|
msgid "local INET socket port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:100
|
#: cmdlnopts.c:101
|
||||||
msgid "local INET socket port to send/receive images"
|
msgid "local INET socket port to send/receive images"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:101
|
#: cmdlnopts.c:102
|
||||||
msgid "run as client"
|
msgid "run as client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:102
|
#: cmdlnopts.c:103
|
||||||
msgid "passive viewer (only get last images)"
|
msgid "passive viewer (only get last images)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:103
|
#: cmdlnopts.c:104
|
||||||
msgid "restart image server"
|
msgid "restart image server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:106
|
#: cmdlnopts.c:106
|
||||||
|
msgid "shared memory (with image data) key (default: 7777777"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cmdlnopts.c:109
|
||||||
msgid "Display image in OpenGL window"
|
msgid "Display image in OpenGL window"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -279,291 +283,291 @@ msgstr ""
|
|||||||
msgid "Can't save file with prefix %s"
|
msgid "Can't save file with prefix %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:357
|
#: ccdfunc.c:359
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "File saved as '%s'"
|
msgid "File saved as '%s'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:366
|
#: ccdfunc.c:368
|
||||||
msgid "Error saving file"
|
msgid "Error saving file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:406
|
#: ccdfunc.c:445
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Image stat:\n"
|
msgid "Image stat:\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:414
|
#: ccdfunc.c:453
|
||||||
msgid "Focuser device not pointed"
|
msgid "Focuser device not pointed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:421
|
#: ccdfunc.c:460
|
||||||
msgid "No focusers found"
|
msgid "No focusers found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:452
|
|
||||||
#, c-format
|
|
||||||
msgid "Found %d focusers, you point number %d"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:456
|
|
||||||
msgid "Can't set active focuser number"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:470
|
|
||||||
msgid "Can't get focuser limit positions"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:477
|
|
||||||
msgid "Can't get current focuser position"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ccdfunc.c:491
|
#: ccdfunc.c:491
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set position %g: out of limits [%g, %g]"
|
msgid "Found %d focusers, you point number %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:495
|
#: ccdfunc.c:495
|
||||||
|
msgid "Can't set active focuser number"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:509
|
||||||
|
msgid "Can't get focuser limit positions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:516
|
||||||
|
msgid "Can't get current focuser position"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:530
|
||||||
|
#, c-format
|
||||||
|
msgid "Can't set position %g: out of limits [%g, %g]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ccdfunc.c:534
|
||||||
msgid "Can't home focuser"
|
msgid "Can't home focuser"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:497
|
#: ccdfunc.c:536
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set position %g"
|
msgid "Can't set position %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:505
|
#: ccdfunc.c:544
|
||||||
msgid "Wheel device not pointed"
|
msgid "Wheel device not pointed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:512
|
#: ccdfunc.c:551
|
||||||
msgid "No wheels found"
|
msgid "No wheels found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:543
|
#: ccdfunc.c:582
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Found %d wheels, you point number %d"
|
msgid "Found %d wheels, you point number %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:547
|
#: ccdfunc.c:586
|
||||||
msgid "Can't set active wheel number"
|
msgid "Can't set active wheel number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:563
|
#: ccdfunc.c:602
|
||||||
msgid "Can't get max wheel position"
|
msgid "Can't get max wheel position"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:570
|
#: ccdfunc.c:609
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Wheel position should be from 0 to %d"
|
msgid "Wheel position should be from 0 to %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:574
|
#: ccdfunc.c:613
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set wheel position %d"
|
msgid "Can't set wheel position %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:591
|
#: ccdfunc.c:630
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%.1f seconds till exposition ends"
|
msgid "%.1f seconds till exposition ends"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:606
|
#: ccdfunc.c:645
|
||||||
msgid "Camera device not pointed"
|
msgid "Camera device not pointed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:613 ccdfunc.c:614
|
#: ccdfunc.c:652 ccdfunc.c:653
|
||||||
msgid "No cameras found"
|
msgid "No cameras found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:644
|
#: ccdfunc.c:683
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Found %d cameras, you point number %d"
|
msgid "Found %d cameras, you point number %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:648
|
#: ccdfunc.c:687
|
||||||
msgid "Can't set active camera number"
|
msgid "Can't set active camera number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:654
|
#: ccdfunc.c:693
|
||||||
msgid "Can't set fan speed"
|
msgid "Can't set fan speed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:655
|
#: ccdfunc.c:694
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set fan speed to %d"
|
msgid "Set fan speed to %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:660
|
#: ccdfunc.c:699
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Camera model: %s"
|
msgid "Camera model: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:661
|
#: ccdfunc.c:700
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pixel size: %g x %g"
|
msgid "Pixel size: %g x %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:667
|
#: ccdfunc.c:706
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Full array: %s"
|
msgid "Full array: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:670
|
#: ccdfunc.c:709
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Field of view: %s"
|
msgid "Field of view: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:673
|
#: ccdfunc.c:712
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Current format: %s"
|
msgid "Current format: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:676
|
#: ccdfunc.c:715
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set T to %g degC"
|
msgid "Can't set T to %g degC"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:684
|
#: ccdfunc.c:723
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shutter command: %s\n"
|
msgid "Shutter command: %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:686
|
#: ccdfunc.c:725
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't run shutter command %s (unsupported?)"
|
msgid "Can't run shutter command %s (unsupported?)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. "Попытка сконфигурировать порт I/O как %d\n"
|
#. "Попытка сконфигурировать порт I/O как %d\n"
|
||||||
#: ccdfunc.c:690
|
#: ccdfunc.c:729
|
||||||
#, 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:692
|
#: ccdfunc.c:731
|
||||||
msgid "Can't configure (unsupported?)"
|
msgid "Can't configure (unsupported?)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:699
|
#: ccdfunc.c:738
|
||||||
msgid "Can't get IOport state (unsupported?)"
|
msgid "Can't get IOport state (unsupported?)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. "Попытка записи %d в порт I/O\n"
|
#. "Попытка записи %d в порт I/O\n"
|
||||||
#: ccdfunc.c:703
|
#: ccdfunc.c:742
|
||||||
#, 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:705
|
#: ccdfunc.c:744
|
||||||
msgid "Can't set IOport"
|
msgid "Can't set IOport"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:712
|
#: ccdfunc.c:751
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set gain to %g"
|
msgid "Set gain to %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:713
|
#: ccdfunc.c:752
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set gain to %g"
|
msgid "Can't set gain to %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:718
|
#: ccdfunc.c:757
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set brightness to %g"
|
msgid "Set brightness to %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:719
|
#: ccdfunc.c:758
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set brightness to %g"
|
msgid "Can't set brightness to %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:725 server.c:251
|
#: ccdfunc.c:764 server.c:312
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set binning %dx%d"
|
msgid "Can't set binning %dx%d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:737 server.c:252
|
#: ccdfunc.c:776 server.c:313
|
||||||
msgid "Can't set given geometry"
|
msgid "Can't set given geometry"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:741
|
#: ccdfunc.c:780
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set %d flushes"
|
msgid "Can't set %d flushes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:745
|
#: ccdfunc.c:784
|
||||||
#, 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:748
|
#: ccdfunc.c:787
|
||||||
msgid "Can't change frame type"
|
msgid "Can't change frame type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:751
|
#: ccdfunc.c:790
|
||||||
msgid "Can't set bit depth"
|
msgid "Can't set bit depth"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:753
|
#: ccdfunc.c:792
|
||||||
msgid "Can't set readout speed"
|
msgid "Can't set readout speed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:754
|
#: ccdfunc.c:793
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Readout mode: %s"
|
msgid "Readout mode: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:755
|
#: ccdfunc.c:794
|
||||||
msgid "Only show statistics"
|
msgid "Only show statistics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. GET binning should be AFTER setgeometry!
|
#. GET binning should be AFTER setgeometry!
|
||||||
#: ccdfunc.c:757
|
#: ccdfunc.c:796
|
||||||
msgid "Can't get current binning"
|
msgid "Can't get current binning"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Захват кадра %d\n
|
#. Захват кадра %d\n
|
||||||
#: ccdfunc.c:781
|
#: ccdfunc.c:821
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Capture frame %d"
|
msgid "Capture frame %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:783 ccdfunc.c:857 server.c:137
|
#: ccdfunc.c:823 ccdfunc.c:908 server.c:198
|
||||||
msgid "Can't start exposition"
|
msgid "Can't start exposition"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:788
|
#: ccdfunc.c:828
|
||||||
msgid "Can't capture image"
|
msgid "Can't capture image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:791
|
#: ccdfunc.c:831
|
||||||
msgid "Read grabbed image"
|
msgid "Read grabbed image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:795 ccdfunc.c:870
|
#: ccdfunc.c:835 ccdfunc.c:921
|
||||||
msgid "Can't grab image"
|
msgid "Can't grab image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. %d секунд до окончания паузы\n
|
#. %d секунд до окончания паузы\n
|
||||||
#: ccdfunc.c:807 client.c:288
|
#: ccdfunc.c:847 client.c:291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d seconds till pause ends\n"
|
msgid "%d seconds till pause ends\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:868
|
#: ccdfunc.c:919
|
||||||
msgid "Some error when capture"
|
msgid "Some error when capture"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: server.c:185
|
#: server.c:246
|
||||||
msgid "No camera device"
|
msgid "No camera device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:275
|
#: client.c:278
|
||||||
msgid "Can't make exposition"
|
msgid "Can't make exposition"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: client.c:304
|
#: client.c:307
|
||||||
msgid "Server timeout"
|
msgid "Server timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -580,19 +584,19 @@ msgstr ""
|
|||||||
msgid "Histogram conversion: %s"
|
msgid "Histogram conversion: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: imageview.c:640
|
#: imageview.c:689
|
||||||
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:682
|
#: imageview.c:731
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Equalization of histogram: %s"
|
msgid "Equalization of histogram: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: imageview.c:682
|
#: imageview.c:731
|
||||||
msgid "on"
|
msgid "on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: imageview.c:682
|
#: imageview.c:731
|
||||||
msgid "off"
|
msgid "off"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
254
locale/ru/ru.po
254
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: 2023-05-31 16:14+0300\n"
|
"POT-Creation-Date: 2023-12-14 16:52+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,13 +16,13 @@ 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:591
|
#: ccdfunc.c:630
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%.1f seconds till exposition ends"
|
msgid "%.1f seconds till exposition ends"
|
||||||
msgstr "%.1f ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÜËÓÐÏÚÉÃÉÉ"
|
msgstr "%.1f ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÜËÓÐÏÚÉÃÉÉ"
|
||||||
|
|
||||||
#. %d Ñ<>екунд до окончаниÑ<C2B8> паузы\n
|
#. %d Ñ<>екунд до окончаниÑ<C2B8> паузы\n
|
||||||
#: ccdfunc.c:807 client.c:288
|
#: ccdfunc.c:847 client.c:291
|
||||||
#, 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,15 +31,15 @@ msgstr "%d
|
|||||||
msgid "Already initialized!"
|
msgid "Already initialized!"
|
||||||
msgstr "õÖÅ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎÏ!"
|
msgstr "õÖÅ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎÏ!"
|
||||||
|
|
||||||
#: cmdlnopts.c:95
|
#: cmdlnopts.c:96
|
||||||
msgid "CMOS brightness level"
|
msgid "CMOS brightness level"
|
||||||
msgstr "ÕÒÏ×ÅÎØ ÑÒËÏÓÔÉ CMOS"
|
msgstr "ÕÒÏ×ÅÎØ ÑÒËÏÓÔÉ CMOS"
|
||||||
|
|
||||||
#: cmdlnopts.c:94
|
#: cmdlnopts.c:95
|
||||||
msgid "CMOS gain level"
|
msgid "CMOS gain level"
|
||||||
msgstr "ÕÒÏ×ÅÎØ Gain CMOS"
|
msgstr "ÕÒÏ×ÅÎØ Gain CMOS"
|
||||||
|
|
||||||
#: ccdfunc.c:606
|
#: ccdfunc.c:645
|
||||||
msgid "Camera device not pointed"
|
msgid "Camera device not pointed"
|
||||||
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÐÏÄËÌÀÞÅÎÏ"
|
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÐÏÄËÌÀÞÅÎÏ"
|
||||||
|
|
||||||
@ -47,20 +47,20 @@ msgstr "
|
|||||||
msgid "Camera device unknown"
|
msgid "Camera device unknown"
|
||||||
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÏÐÏÚÎÁÎÏ"
|
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÏÐÏÚÎÁÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:660
|
#: ccdfunc.c:699
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Camera model: %s"
|
msgid "Camera model: %s"
|
||||||
msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s"
|
msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:788
|
#: ccdfunc.c:828
|
||||||
msgid "Can't capture image"
|
msgid "Can't capture image"
|
||||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
||||||
|
|
||||||
#: ccdfunc.c:748
|
#: ccdfunc.c:787
|
||||||
msgid "Can't change frame type"
|
msgid "Can't change frame type"
|
||||||
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÔÉÐ ËÁÄÒÁ"
|
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÔÉÐ ËÁÄÒÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:692
|
#: ccdfunc.c:731
|
||||||
msgid "Can't configure (unsupported?)"
|
msgid "Can't configure (unsupported?)"
|
||||||
msgstr "îÅ ÍÏÇÕ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ (ÏÐÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
msgstr "îÅ ÍÏÇÕ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ (ÏÐÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
||||||
|
|
||||||
@ -84,32 +84,32 @@ msgstr "
|
|||||||
msgid "Can't find wheel in plugin %s: %s"
|
msgid "Can't find wheel in plugin %s: %s"
|
||||||
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÐÌÁÇÉÎ ÔÕÒÅÌÉ %s: %s"
|
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÐÌÁÇÉÎ ÔÕÒÅÌÉ %s: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:699
|
#: ccdfunc.c:738
|
||||||
msgid "Can't get IOport state (unsupported?)"
|
msgid "Can't get IOport state (unsupported?)"
|
||||||
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÓÏÓÔÏÑÎÉÅ ÐÏÒÔÁ I/O (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÓÏÓÔÏÑÎÉÅ ÐÏÒÔÁ I/O (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
||||||
|
|
||||||
#. GET binning should be AFTER setgeometry!
|
#. GET binning should be AFTER setgeometry!
|
||||||
#: ccdfunc.c:757
|
#: ccdfunc.c:796
|
||||||
msgid "Can't get current binning"
|
msgid "Can't get current binning"
|
||||||
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ ÂÉÎÎÉÎÇÁ"
|
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ ÂÉÎÎÉÎÇÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:477
|
#: ccdfunc.c:516
|
||||||
msgid "Can't get current focuser position"
|
msgid "Can't get current focuser position"
|
||||||
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÔÅËÕÝÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
|
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÔÅËÕÝÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:470
|
#: ccdfunc.c:509
|
||||||
msgid "Can't get focuser limit positions"
|
msgid "Can't get focuser limit positions"
|
||||||
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
|
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:563
|
#: ccdfunc.c:602
|
||||||
msgid "Can't get max wheel position"
|
msgid "Can't get max wheel position"
|
||||||
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ËÏÌÅÓÁ"
|
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ËÏÌÅÓÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:795 ccdfunc.c:870
|
#: ccdfunc.c:835 ccdfunc.c:921
|
||||||
msgid "Can't grab image"
|
msgid "Can't grab image"
|
||||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
||||||
|
|
||||||
#: ccdfunc.c:495
|
#: ccdfunc.c:534
|
||||||
msgid "Can't home focuser"
|
msgid "Can't home focuser"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÆÏËÕÓÅÒ × ÎÕÌØ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÆÏËÕÓÅÒ × ÎÕÌØ"
|
||||||
|
|
||||||
@ -117,15 +117,15 @@ msgstr "
|
|||||||
msgid "Can't init mutex!"
|
msgid "Can't init mutex!"
|
||||||
msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!"
|
msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!"
|
||||||
|
|
||||||
#: client.c:275
|
#: client.c:278
|
||||||
msgid "Can't make exposition"
|
msgid "Can't make exposition"
|
||||||
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ÜËÓÐÏÚÉÃÉÀ"
|
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ÜËÓÐÏÚÉÃÉÀ"
|
||||||
|
|
||||||
#: imageview.c:640
|
#: imageview.c:689
|
||||||
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, ÏÔÏÂÒÁÖÅÎÉÅ ÂÕÄÅÔ ÎÅÄÏÓÔÕÐÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:686
|
#: ccdfunc.c:725
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't run shutter command %s (unsupported?)"
|
msgid "Can't run shutter command %s (unsupported?)"
|
||||||
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ ÚÁÔ×ÏÒÁ %s (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ ÚÁÔ×ÏÒÁ %s (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
||||||
@ -136,141 +136,141 @@ msgstr "
|
|||||||
msgid "Can't save file with prefix %s"
|
msgid "Can't save file with prefix %s"
|
||||||
msgstr "îÅ ÍÏÇÕ ÓÏÈÒÁÎÉÔØ ÆÁÊÌ Ó ÐÒÅÆÉËÓÏÍ %s"
|
msgstr "îÅ ÍÏÇÕ ÓÏÈÒÁÎÉÔØ ÆÁÊÌ Ó ÐÒÅÆÉËÓÏÍ %s"
|
||||||
|
|
||||||
#: ccdfunc.c:741
|
#: ccdfunc.c:780
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set %d flushes"
|
msgid "Can't set %d flushes"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ %d ÓÂÒÏÓÏ×"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ %d ÓÂÒÏÓÏ×"
|
||||||
|
|
||||||
#: ccdfunc.c:705
|
#: ccdfunc.c:744
|
||||||
msgid "Can't set IOport"
|
msgid "Can't set IOport"
|
||||||
msgstr "îÅ ÍÏÇÕ ÐÏÍÅÎÑÔØ ÚÎÁÞÅÎÉÑ ÐÏÒÔÁ I/O"
|
msgstr "îÅ ÍÏÇÕ ÐÏÍÅÎÑÔØ ÚÎÁÞÅÎÉÑ ÐÏÒÔÁ I/O"
|
||||||
|
|
||||||
#: ccdfunc.c:676
|
#: ccdfunc.c:715
|
||||||
#, 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:648
|
#: ccdfunc.c:687
|
||||||
msgid "Can't set active camera number"
|
msgid "Can't set active camera number"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÊ ËÁÍÅÒÙ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÊ ËÁÍÅÒÙ"
|
||||||
|
|
||||||
#: ccdfunc.c:456
|
#: ccdfunc.c:495
|
||||||
msgid "Can't set active focuser number"
|
msgid "Can't set active focuser number"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ÆÏËÕÓÅÒÁ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ÆÏËÕÓÅÒÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:547
|
#: ccdfunc.c:586
|
||||||
msgid "Can't set active wheel number"
|
msgid "Can't set active wheel number"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ËÏÌÅÓÁ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ËÏÌÅÓÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:725 server.c:251
|
#: ccdfunc.c:764 server.c:312
|
||||||
#, 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:751
|
#: ccdfunc.c:790
|
||||||
msgid "Can't set bit depth"
|
msgid "Can't set bit depth"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÒÁÚÒÑÄÎÏÓÔØ áãð"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÒÁÚÒÑÄÎÏÓÔØ áãð"
|
||||||
|
|
||||||
#: ccdfunc.c:719
|
#: ccdfunc.c:758
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set brightness to %g"
|
msgid "Can't set brightness to %g"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
||||||
|
|
||||||
#: ccdfunc.c:745
|
#: ccdfunc.c:784
|
||||||
#, 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:654
|
#: ccdfunc.c:693
|
||||||
msgid "Can't set fan speed"
|
msgid "Can't set fan speed"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ×"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ×"
|
||||||
|
|
||||||
#: ccdfunc.c:713
|
#: ccdfunc.c:752
|
||||||
#, 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:737 server.c:252
|
#: ccdfunc.c:776 server.c:313
|
||||||
msgid "Can't set given geometry"
|
msgid "Can't set given geometry"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÇÅÏÍÅÔÒÉÀ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÇÅÏÍÅÔÒÉÀ"
|
||||||
|
|
||||||
#: ccdfunc.c:497
|
#: ccdfunc.c:536
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set position %g"
|
msgid "Can't set position %g"
|
||||||
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÐÏÚÉÃÉÀ ÎÁ %g"
|
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÐÏÚÉÃÉÀ ÎÁ %g"
|
||||||
|
|
||||||
#: ccdfunc.c:491
|
#: ccdfunc.c:530
|
||||||
#, 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:753
|
#: ccdfunc.c:792
|
||||||
msgid "Can't set readout speed"
|
msgid "Can't set readout speed"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ÓÞÉÔÙ×ÁÎÉÑ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ÓÞÉÔÙ×ÁÎÉÑ"
|
||||||
|
|
||||||
#: ccdfunc.c:574
|
#: ccdfunc.c:613
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set wheel position %d"
|
msgid "Can't set wheel position %d"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ %d"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ %d"
|
||||||
|
|
||||||
#: ccdfunc.c:783 ccdfunc.c:857 server.c:137
|
#: ccdfunc.c:823 ccdfunc.c:908 server.c:198
|
||||||
msgid "Can't start exposition"
|
msgid "Can't start exposition"
|
||||||
msgstr "îÅ ÍÏÇÕ ÎÁÞÁÔØ ÜËÓÐÏÚÉÃÉÀ"
|
msgstr "îÅ ÍÏÇÕ ÎÁÞÁÔØ ÜËÓÐÏÚÉÃÉÀ"
|
||||||
|
|
||||||
#. Захват кадра %d\n
|
#. Захват кадра %d\n
|
||||||
#: ccdfunc.c:781
|
#: ccdfunc.c:821
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Capture frame %d"
|
msgid "Capture frame %d"
|
||||||
msgstr "úÁÈ×ÁÔ ËÁÄÒÁ %d"
|
msgstr "úÁÈ×ÁÔ ËÁÄÒÁ %d"
|
||||||
|
|
||||||
#: ccdfunc.c:673
|
#: ccdfunc.c:712
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Current format: %s"
|
msgid "Current format: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:106
|
#: cmdlnopts.c:109
|
||||||
msgid "Display image in OpenGL window"
|
msgid "Display image in OpenGL window"
|
||||||
msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ × ÏËÎÅ OpenGL"
|
msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ × ÏËÎÅ OpenGL"
|
||||||
|
|
||||||
#: imageview.c:682
|
#: imageview.c:731
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Equalization of histogram: %s"
|
msgid "Equalization of histogram: %s"
|
||||||
msgstr "üË×ÁÌÉÚÁÃÉÑ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
|
msgstr "üË×ÁÌÉÚÁÃÉÑ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:366
|
#: ccdfunc.c:368
|
||||||
msgid "Error saving file"
|
msgid "Error saving file"
|
||||||
msgstr "ïÛÉÂËÁ ÓÏÈÒÁÎÅÎÉÑ ÆÁÊÌÁ"
|
msgstr "ïÛÉÂËÁ ÓÏÈÒÁÎÅÎÉÑ ÆÁÊÌÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:670
|
#: ccdfunc.c:709
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Field of view: %s"
|
msgid "Field of view: %s"
|
||||||
msgstr "ðÏÌÅ ÚÒÅÎÉÑ: %s"
|
msgstr "ðÏÌÅ ÚÒÅÎÉÑ: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:357
|
#: ccdfunc.c:359
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "File saved as '%s'"
|
msgid "File saved as '%s'"
|
||||||
msgstr "æÁÊÌ ÓÏÈÒÁÎÅÎ ËÁË '%s'"
|
msgstr "æÁÊÌ ÓÏÈÒÁÎÅÎ ËÁË '%s'"
|
||||||
|
|
||||||
#: ccdfunc.c:414
|
#: ccdfunc.c:453
|
||||||
msgid "Focuser device not pointed"
|
msgid "Focuser device not pointed"
|
||||||
msgstr "õÓÔÒÏÊÓÔ×Ï ÆÏËÕÓÅÒÁ ÎÅ ÕËÁÚÁÎÏ"
|
msgstr "õÓÔÒÏÊÓÔ×Ï ÆÏËÕÓÅÒÁ ÎÅ ÕËÁÚÁÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:644
|
#: ccdfunc.c:683
|
||||||
#, 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:452
|
#: ccdfunc.c:491
|
||||||
#, 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:543
|
#: ccdfunc.c:582
|
||||||
#, 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:667
|
#: ccdfunc.c:706
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Full array: %s"
|
msgid "Full array: %s"
|
||||||
msgstr "ðÏÌÎÙÊ ÆÏÒÍÁÔ: %s"
|
msgstr "ðÏÌÎÙÊ ÆÏÒÍÁÔ: %s"
|
||||||
@ -280,321 +280,325 @@ msgstr "
|
|||||||
msgid "Histogram conversion: %s"
|
msgid "Histogram conversion: %s"
|
||||||
msgstr "ðÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
|
msgstr "ðÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:406
|
#: ccdfunc.c:445
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Image stat:\n"
|
msgid "Image stat:\n"
|
||||||
msgstr "óÔÁÔÉÓÔÉËÁ ÐÏ ÉÚÏÂÒÁÖÅÎÉÀ: \n"
|
msgstr "óÔÁÔÉÓÔÉËÁ ÐÏ ÉÚÏÂÒÁÖÅÎÉÀ: \n"
|
||||||
|
|
||||||
#: cmdlnopts.c:67
|
#: cmdlnopts.c:68
|
||||||
msgid "N flushes before exposing (default: 1)"
|
msgid "N flushes before exposing (default: 1)"
|
||||||
msgstr "N ÚÁÓ×ÅÞÉ×ÁÎÉÊ ÐÅÒÅÄ ÜËÓÐÏÚÉÃÉÅÊ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 1)"
|
msgstr "N ÚÁÓ×ÅÞÉ×ÁÎÉÊ ÐÅÒÅÄ ÜËÓÐÏÚÉÃÉÅÊ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 1)"
|
||||||
|
|
||||||
#: server.c:185
|
#: server.c:246
|
||||||
msgid "No camera device"
|
msgid "No camera device"
|
||||||
msgstr "îÅ ÕËÁÚÁÎÏ ÕÓÔÒÏÊÓÔ×Ï ËÁÍÅÒÙ"
|
msgstr "îÅ ÕËÁÚÁÎÏ ÕÓÔÒÏÊÓÔ×Ï ËÁÍÅÒÙ"
|
||||||
|
|
||||||
#: ccdfunc.c:613 ccdfunc.c:614
|
#: ccdfunc.c:652 ccdfunc.c:653
|
||||||
msgid "No cameras found"
|
msgid "No cameras found"
|
||||||
msgstr "ëÁÍÅÒ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
msgstr "ëÁÍÅÒ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:421
|
#: ccdfunc.c:460
|
||||||
msgid "No focusers found"
|
msgid "No focusers found"
|
||||||
msgstr "æÏËÕÓÅÒÏ× ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
msgstr "æÏËÕÓÅÒÏ× ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:512
|
#: ccdfunc.c:551
|
||||||
msgid "No wheels found"
|
msgid "No wheels found"
|
||||||
msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:755
|
#: ccdfunc.c:794
|
||||||
msgid "Only show statistics"
|
msgid "Only show statistics"
|
||||||
msgstr "ôÏÌØËÏ ÏÔÏÂÒÁÚÉÔØ ÓÔÁÔÉÓÔÉËÕ"
|
msgstr "ôÏÌØËÏ ÏÔÏÂÒÁÚÉÔØ ÓÔÁÔÉÓÔÉËÕ"
|
||||||
|
|
||||||
#: ccdfunc.c:661
|
#: ccdfunc.c:700
|
||||||
#, 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:791
|
#: ccdfunc.c:831
|
||||||
msgid "Read grabbed image"
|
msgid "Read grabbed image"
|
||||||
msgstr "óÞÉÔÙ×ÁÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ"
|
msgstr "óÞÉÔÙ×ÁÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ"
|
||||||
|
|
||||||
#: ccdfunc.c:754
|
#: ccdfunc.c:793
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Readout mode: %s"
|
msgid "Readout mode: %s"
|
||||||
msgstr "òÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ: %s"
|
msgstr "òÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ: %s"
|
||||||
|
|
||||||
#: client.c:304
|
#: client.c:307
|
||||||
msgid "Server timeout"
|
msgid "Server timeout"
|
||||||
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
|
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:718
|
#: ccdfunc.c:757
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set brightness to %g"
|
msgid "Set brightness to %g"
|
||||||
msgstr "õÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
msgstr "õÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
||||||
|
|
||||||
#: ccdfunc.c:655
|
#: ccdfunc.c:694
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set fan speed to %d"
|
msgid "Set fan speed to %d"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ× × %d"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ× × %d"
|
||||||
|
|
||||||
#: ccdfunc.c:712
|
#: ccdfunc.c:751
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set gain to %g"
|
msgid "Set gain to %g"
|
||||||
msgstr "õÓÔÁÎÏ×ÉÔØ Gain × %g"
|
msgstr "õÓÔÁÎÏ×ÉÔØ Gain × %g"
|
||||||
|
|
||||||
#: ccdfunc.c:684
|
#: ccdfunc.c:723
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shutter command: %s\n"
|
msgid "Shutter command: %s\n"
|
||||||
msgstr "ëÏÍÁÎÄÁ ÚÁÔ×ÏÒÁ: %s\n"
|
msgstr "ëÏÍÁÎÄÁ ÚÁÔ×ÏÒÁ: %s\n"
|
||||||
|
|
||||||
#: ccdfunc.c:868
|
#: ccdfunc.c:919
|
||||||
msgid "Some error when capture"
|
msgid "Some error when capture"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. "Попытка Ñ<>конфигурировать порт I/O как %d\n"
|
#. "Попытка Ñ<>конфигурировать порт I/O как %d\n"
|
||||||
#: ccdfunc.c:690
|
#: ccdfunc.c:729
|
||||||
#, 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"
|
||||||
|
|
||||||
#. "Попытка запиÑ<C2B8>и %d в порт I/O\n"
|
#. "Попытка запиÑ<C2B8>и %d в порт I/O\n"
|
||||||
#: ccdfunc.c:703
|
#: ccdfunc.c:742
|
||||||
#, 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"
|
||||||
|
|
||||||
#: cmdlnopts.c:98
|
#: cmdlnopts.c:99
|
||||||
msgid "UNIX socket name"
|
msgid "UNIX socket name"
|
||||||
msgstr "éÍÑ UNIX-ÓÏËÅÔÁ"
|
msgstr "éÍÑ UNIX-ÓÏËÅÔÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:505
|
#: ccdfunc.c:544
|
||||||
msgid "Wheel device not pointed"
|
msgid "Wheel device not pointed"
|
||||||
msgstr "õÓÔÒÏÊÓÔ×Ï ÔÕÒÅÌÉ ÎÅ ÕËÁÚÁÎÏ"
|
msgstr "õÓÔÒÏÊÓÔ×Ï ÔÕÒÅÌÉ ÎÅ ÕËÁÚÁÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:570
|
#: ccdfunc.c:609
|
||||||
#, 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"
|
||||||
|
|
||||||
#: cmdlnopts.c:74
|
#: cmdlnopts.c:75
|
||||||
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:76
|
#: cmdlnopts.c:77
|
||||||
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:75
|
#: cmdlnopts.c:76
|
||||||
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:77
|
#: cmdlnopts.c:78
|
||||||
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:63
|
#: cmdlnopts.c:64
|
||||||
msgid "add records to header from given file[s]"
|
msgid "add records to header from given file[s]"
|
||||||
msgstr "ÄÏÂÁ×ÉÔØ ÚÁÐÉÓÉ Ë ÛÁÐËÅ FITS-ÆÁÊÌÁ ÉÚ ÚÁÄÁÎÎÙÈ ÆÁÊÌÏ×"
|
msgstr "ÄÏÂÁ×ÉÔØ ÚÁÐÉÓÉ Ë ÛÁÐËÅ FITS-ÆÁÊÌÁ ÉÚ ÚÁÄÁÎÎÙÈ ÆÁÊÌÏ×"
|
||||||
|
|
||||||
#: cmdlnopts.c:45
|
#: cmdlnopts.c:46
|
||||||
msgid "camera device number (if many: 0, 1, 2 etc)"
|
msgid "camera device number (if many: 0, 1, 2 etc)"
|
||||||
msgstr "ÎÏÍÅÒ ÕÓÔÒÏÊÓÔ×Á ËÁÍÅÒÙ"
|
msgstr "ÎÏÍÅÒ ÕÓÔÒÏÊÓÔ×Á ËÁÍÅÒÙ"
|
||||||
|
|
||||||
#: cmdlnopts.c:41
|
#: cmdlnopts.c:42
|
||||||
msgid "camera device plugin (e.g. devfli.so)"
|
msgid "camera device plugin (e.g. devfli.so)"
|
||||||
msgstr "ÐÌÁÇÉÎ ËÁÍÅÒÙ (ÎÁÐÒÉÍÅÒ, devfli.so)"
|
msgstr "ÐÌÁÇÉÎ ËÁÍÅÒÙ (ÎÁÐÒÉÍÅÒ, devfli.so)"
|
||||||
|
|
||||||
#: cmdlnopts.c:73
|
#: cmdlnopts.c:74
|
||||||
msgid "cancel current exposition"
|
msgid "cancel current exposition"
|
||||||
msgstr "ÏÔÍÅÎÁ ÔÅËÕÝÅÊ ÜËÓÐÏÚÉÃÉÉ"
|
msgstr "ÏÔÍÅÎÁ ÔÅËÕÝÅÊ ÜËÓÐÏÚÉÃÉÉ"
|
||||||
|
|
||||||
#: cmdlnopts.c:80
|
#: cmdlnopts.c:81
|
||||||
msgid "close shutter"
|
msgid "close shutter"
|
||||||
msgstr "ÚÁËÒÙÔØ ÚÁÔ×ÏÒ"
|
msgstr "ÚÁËÒÙÔØ ÚÁÔ×ÏÒ"
|
||||||
|
|
||||||
#: cmdlnopts.c:40
|
#: cmdlnopts.c:41
|
||||||
msgid "common device plugin (e.g devfli.so)"
|
msgid "common device plugin (e.g devfli.so)"
|
||||||
msgstr "ÏÂÝÉÊ ÐÌÁÇÉÎ ÄÌÑ ×ÓÅÈ ÕÓÔÒÏÊÓÔ× (ÎÁÐÒÉÍÅÒ, devfli.so)"
|
msgstr "ÏÂÝÉÊ ÐÌÁÇÉÎ ÄÌÑ ×ÓÅÈ ÕÓÔÒÏÊÓÔ× (ÎÁÐÒÉÍÅÒ, devfli.so)"
|
||||||
|
|
||||||
#: cmdlnopts.c:87
|
#: cmdlnopts.c:88
|
||||||
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:53
|
#: cmdlnopts.c:54
|
||||||
msgid "fast readout mode"
|
msgid "fast readout mode"
|
||||||
msgstr "ÂÙÓÔÒÙÊ ÒÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ"
|
msgstr "ÂÙÓÔÒÙÊ ÒÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ"
|
||||||
|
|
||||||
#: cmdlnopts.c:46
|
#: cmdlnopts.c:47
|
||||||
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:47
|
#: cmdlnopts.c:48
|
||||||
msgid "focuser device number (if many: 0, 1, 2 etc)"
|
msgid "focuser device number (if many: 0, 1, 2 etc)"
|
||||||
msgstr "ÎÏÍÅÒ ÕÓÔÒÏÊÓÔ×Á ÆÏËÕÓÅÒÁ"
|
msgstr "ÎÏÍÅÒ ÕÓÔÒÏÊÓÔ×Á ÆÏËÕÓÅÒÁ"
|
||||||
|
|
||||||
#: cmdlnopts.c:42
|
#: cmdlnopts.c:43
|
||||||
msgid "focuser device plugin (e.g. devzwo.so)"
|
msgid "focuser device plugin (e.g. devzwo.so)"
|
||||||
msgstr "ÐÌÁÇÉÎ ÆÏËÕÓÅÒÁ (ÎÁÐÒÉÍÅÒ, devzwo.so)"
|
msgstr "ÐÌÁÇÉÎ ÆÏËÕÓÅÒÁ (ÎÁÐÒÉÍÅÒ, devzwo.so)"
|
||||||
|
|
||||||
#: cmdlnopts.c:83
|
#: cmdlnopts.c:84
|
||||||
msgid "get value of I/O port pins"
|
msgid "get value of I/O port pins"
|
||||||
msgstr "ÐÏÌÕÞÉÔØ ÚÎÁÞÅÎÉÅ ÐÏÒÔÁ I/O"
|
msgstr "ÐÏÌÕÞÉÔØ ÚÎÁÞÅÎÉÅ ÐÏÒÔÁ I/O"
|
||||||
|
|
||||||
#: cmdlnopts.c:68
|
#: cmdlnopts.c:69
|
||||||
msgid "horizontal binning to N pixels"
|
msgid "horizontal binning to N pixels"
|
||||||
msgstr "ÇÏÒÉÚÏÎÔÁÌØÎÙÊ ÂÉÎÎÉÎÇ × N ÐÉËÓÅÌÅÊ"
|
msgstr "ÇÏÒÉÚÏÎÔÁÌØÎÙÊ ÂÉÎÎÉÎÇ × N ÐÉËÓÅÌÅÊ"
|
||||||
|
|
||||||
#: cmdlnopts.c:59
|
#: cmdlnopts.c:60
|
||||||
msgid "instrument name"
|
msgid "instrument name"
|
||||||
msgstr "ÎÁÚ×ÁÎÉÅ ÐÒÉÂÏÒÁ"
|
msgstr "ÎÁÚ×ÁÎÉÅ ÐÒÉÂÏÒÁ"
|
||||||
|
|
||||||
#: cmdlnopts.c:44
|
#: cmdlnopts.c:45
|
||||||
msgid "list connected devices"
|
msgid "list connected devices"
|
||||||
msgstr "ÓÐÉÓÏË ÐÏÄËÌÀÞÅÎÎÙÈ ÕÓÔÒÏÊÓÔ×"
|
msgstr "ÓÐÉÓÏË ÐÏÄËÌÀÞÅÎÎÙÈ ÕÓÔÒÏÊÓÔ×"
|
||||||
|
|
||||||
#: cmdlnopts.c:99
|
#: cmdlnopts.c:100
|
||||||
msgid "local INET socket port"
|
msgid "local INET socket port"
|
||||||
msgstr "ÐÏÒÔ ÌÏËÁÌØÎÏÇÏ ÓÅÔÅ×ÏÇÏ ÓÏËÅÔÁ"
|
msgstr "ÐÏÒÔ ÌÏËÁÌØÎÏÇÏ ÓÅÔÅ×ÏÇÏ ÓÏËÅÔÁ"
|
||||||
|
|
||||||
#: cmdlnopts.c:100
|
#: cmdlnopts.c:101
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "local INET socket port to send/receive images"
|
msgid "local INET socket port to send/receive images"
|
||||||
msgstr "ÐÏÒÔ ÌÏËÁÌØÎÏÇÏ ÓÅÔÅ×ÏÇÏ ÓÏËÅÔÁ"
|
msgstr "ÐÏÒÔ ÌÏËÁÌØÎÏÇÏ ÓÅÔÅ×ÏÇÏ ÓÏËÅÔÁ"
|
||||||
|
|
||||||
#: cmdlnopts.c:97
|
#: cmdlnopts.c:98
|
||||||
msgid "logging file name (if run as server)"
|
msgid "logging file name (if run as server)"
|
||||||
msgstr "ÉÍÑ ÆÁÊÌÁ ÌÏÇÇÉÒÏ×ÁÎÉÑ (ÅÓÌÉ ÚÁÐÕÝÅÎ ÓÅÒ×ÅÒ)"
|
msgstr "ÉÍÑ ÆÁÊÌÁ ÌÏÇÇÉÒÏ×ÁÎÉÑ (ÅÓÌÉ ÚÁÐÕÝÅÎ ÓÅÒ×ÅÒ)"
|
||||||
|
|
||||||
#: cmdlnopts.c:71
|
#: cmdlnopts.c:72
|
||||||
msgid "make pause for N seconds between expositions"
|
msgid "make pause for N seconds between expositions"
|
||||||
msgstr "ÐÁÕÚÁ × N ÓÅËÕÎÄ ÍÅÖÄÕ ÜËÓÐÏÚÉÃÉÑÍÉ"
|
msgstr "ÐÁÕÚÁ × N ÓÅËÕÎÄ ÍÅÖÄÕ ÜËÓÐÏÚÉÃÉÑÍÉ"
|
||||||
|
|
||||||
#: cmdlnopts.c:70
|
#: cmdlnopts.c:71
|
||||||
msgid "make series of N frames"
|
msgid "make series of N frames"
|
||||||
msgstr "ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÉÚ N ËÁÄÒÏ×"
|
msgstr "ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÉÚ N ËÁÄÒÏ×"
|
||||||
|
|
||||||
#: cmdlnopts.c:89
|
#: cmdlnopts.c:90
|
||||||
msgid "move focuser to absolute position, mm"
|
msgid "move focuser to absolute position, mm"
|
||||||
msgstr "ÐÅÒÅÍÅÓÔÉÔØ ÆÏËÕÓÅÒ × ÁÂÓÏÌÀÔÎÏÅ ÐÏÌÏÖÅÎÉÅ, ÍÍ"
|
msgstr "ÐÅÒÅÍÅÓÔÉÔØ ÆÏËÕÓÅÒ × ÁÂÓÏÌÀÔÎÏÅ ÐÏÌÏÖÅÎÉÅ, ÍÍ"
|
||||||
|
|
||||||
#: cmdlnopts.c:90
|
#: cmdlnopts.c:91
|
||||||
msgid "move focuser to relative position, mm (only for standalone)"
|
msgid "move focuser to relative position, mm (only for standalone)"
|
||||||
msgstr "ÐÅÒÅÍÅÓÔÉÔØ ÆÏËÕÓÅÒ × ÏÔÎÏÓÉÔÅÌØÎÏÅ ÐÏÌÏÖÅÎÉÅ, ÍÍ (ÎÅ ÄÌÑ ÓÅÒ×ÅÒ/"
|
msgstr "ÐÅÒÅÍÅÓÔÉÔØ ÆÏËÕÓÅÒ × ÏÔÎÏÓÉÔÅÌØÎÏÅ ÐÏÌÏÖÅÎÉÅ, ÍÍ (ÎÅ ÄÌÑ ÓÅÒ×ÅÒ/"
|
||||||
"ËÌÉÅÎÔ)"
|
"ËÌÉÅÎÔ)"
|
||||||
|
|
||||||
#: cmdlnopts.c:84
|
#: cmdlnopts.c:85
|
||||||
msgid "move stepper motor asynchronous"
|
msgid "move stepper motor asynchronous"
|
||||||
msgstr "ÁÓÉÎÈÒÏÎÎÏÅ Ä×ÉÖÅÎÉÅ ÛÁÇÏ×ÏÇÏ Ä×ÉÇÁÔÅÌÑ"
|
msgstr "ÁÓÉÎÈÒÏÎÎÏÅ Ä×ÉÖÅÎÉÅ ÛÁÇÏ×ÏÇÏ Ä×ÉÇÁÔÅÌÑ"
|
||||||
|
|
||||||
#: cmdlnopts.c:51
|
#: cmdlnopts.c:52
|
||||||
msgid "not open shutter, when exposing (\"dark frames\")"
|
msgid "not open shutter, when exposing (\"dark frames\")"
|
||||||
msgstr "ÎÅ ÏÔËÒÙ×ÁÔØ ÚÁÔ×ÏÒ ÐÒÉ ÜËÓÐÏÚÉÃÉÉ (\"ÔÅÍÎÏ×ÙÅ\")"
|
msgstr "ÎÅ ÏÔËÒÙ×ÁÔØ ÚÁÔ×ÏÒ ÐÒÉ ÜËÓÐÏÚÉÃÉÉ (\"ÔÅÍÎÏ×ÙÅ\")"
|
||||||
|
|
||||||
#: cmdlnopts.c:60
|
#: cmdlnopts.c:61
|
||||||
msgid "object name"
|
msgid "object name"
|
||||||
msgstr "ÎÁÚ×ÁÎÉÅ ÏÂßÅËÔÁ"
|
msgstr "ÎÁÚ×ÁÎÉÅ ÏÂßÅËÔÁ"
|
||||||
|
|
||||||
#: cmdlnopts.c:58
|
#: cmdlnopts.c:59
|
||||||
msgid "object type (neon, object, flat etc)"
|
msgid "object type (neon, object, flat etc)"
|
||||||
msgstr "ÔÉÐ ÏÂßÅËÔÁ (neon, object, flat É Ô.Ä.)"
|
msgstr "ÔÉÐ ÏÂßÅËÔÁ (neon, object, flat É Ô.Ä.)"
|
||||||
|
|
||||||
#: cmdlnopts.c:61
|
#: cmdlnopts.c:62
|
||||||
msgid "observers' names"
|
msgid "observers' names"
|
||||||
msgstr "ÉÍÅÎÁ ÎÁÂÌÀÄÁÔÅÌÅÊ"
|
msgstr "ÉÍÅÎÁ ÎÁÂÌÀÄÁÔÅÌÅÊ"
|
||||||
|
|
||||||
#: cmdlnopts.c:62
|
#: cmdlnopts.c:63
|
||||||
msgid "observing program name"
|
msgid "observing program name"
|
||||||
msgstr "ÎÁÚ×ÁÎÉÅ ÐÒÏÇÒÁÍÍÙ"
|
msgstr "ÎÁÚ×ÁÎÉÅ ÐÒÏÇÒÁÍÍÙ"
|
||||||
|
|
||||||
#: imageview.c:682
|
#: imageview.c:731
|
||||||
msgid "off"
|
msgid "off"
|
||||||
msgstr "×ÙËÌ"
|
msgstr "×ÙËÌ"
|
||||||
|
|
||||||
#: imageview.c:682
|
#: imageview.c:731
|
||||||
msgid "on"
|
msgid "on"
|
||||||
msgstr "×ËÌ"
|
msgstr "×ËÌ"
|
||||||
|
|
||||||
#: cmdlnopts.c:79
|
#: cmdlnopts.c:80
|
||||||
msgid "open shutter"
|
msgid "open shutter"
|
||||||
msgstr "ÏÔËÒÙÔØ ÚÁÔ×ÏÒ"
|
msgstr "ÏÔËÒÙÔØ ÚÁÔ×ÏÒ"
|
||||||
|
|
||||||
#: cmdlnopts.c:64
|
#: cmdlnopts.c:65
|
||||||
msgid "output file name"
|
msgid "output file name"
|
||||||
msgstr "ÉÍÑ ÆÁÊÌÁ"
|
msgstr "ÉÍÑ ÆÁÊÌÁ"
|
||||||
|
|
||||||
#: cmdlnopts.c:102
|
#: cmdlnopts.c:103
|
||||||
msgid "passive viewer (only get last images)"
|
msgid "passive viewer (only get last images)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:57
|
#: cmdlnopts.c:58
|
||||||
msgid "program author"
|
msgid "program author"
|
||||||
msgstr "Á×ÔÏÒ ÐÒÏÇÒÁÍÍÙ"
|
msgstr "Á×ÔÏÒ ÐÒÏÇÒÁÍÍÙ"
|
||||||
|
|
||||||
#: cmdlnopts.c:103
|
#: cmdlnopts.c:104
|
||||||
msgid "restart image server"
|
msgid "restart image server"
|
||||||
msgstr "ÐÅÒÅÚÁÐÕÓË ÓÅÒ×ÅÒÁ"
|
msgstr "ÐÅÒÅÚÁÐÕÓË ÓÅÒ×ÅÒÁ"
|
||||||
|
|
||||||
#: cmdlnopts.c:49
|
#: cmdlnopts.c:50
|
||||||
msgid "rewrite output file if exists"
|
msgid "rewrite output file if exists"
|
||||||
msgstr "ÐÅÒÅÚÁÐÉÓØ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ"
|
msgstr "ÐÅÒÅÚÁÐÉÓØ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ"
|
||||||
|
|
||||||
#: cmdlnopts.c:101
|
#: cmdlnopts.c:102
|
||||||
msgid "run as client"
|
msgid "run as client"
|
||||||
msgstr "ÚÁÐÕÓÔÉÔØ ËÌÉÅÎÔ"
|
msgstr "ÚÁÐÕÓÔÉÔØ ËÌÉÅÎÔ"
|
||||||
|
|
||||||
#: cmdlnopts.c:82
|
#: cmdlnopts.c:83
|
||||||
msgid "run exposition on HIGH @ pin5 I/O port"
|
msgid "run exposition on HIGH @ pin5 I/O port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:81
|
#: cmdlnopts.c:82
|
||||||
msgid "run exposition on LOW @ pin5 I/O port"
|
msgid "run exposition on LOW @ pin5 I/O port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cmdlnopts.c:52
|
#: cmdlnopts.c:53
|
||||||
msgid "run in 8-bit mode"
|
msgid "run in 8-bit mode"
|
||||||
msgstr "8-ÂÉÔÎÙÊ ÒÅÖÉÍ"
|
msgstr "8-ÂÉÔÎÙÊ ÒÅÖÉÍ"
|
||||||
|
|
||||||
#: cmdlnopts.c:54
|
#: cmdlnopts.c:55
|
||||||
msgid "set CCD temperature to given value (degr C)"
|
msgid "set CCD temperature to given value (degr C)"
|
||||||
msgstr "ÕÓÔÁÎÏ×ÉÔØ ÔÅÍÐÅÒÁÔÕÒÕ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ (ÇÒÁÄã)"
|
msgstr "ÕÓÔÁÎÏ×ÉÔØ ÔÅÍÐÅÒÁÔÕÒÕ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ (ÇÒÁÄã)"
|
||||||
|
|
||||||
#: cmdlnopts.c:86
|
#: cmdlnopts.c:87
|
||||||
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:72
|
#: cmdlnopts.c:73
|
||||||
msgid "set exposure time to given value (seconds!)"
|
msgid "set exposure time to given value (seconds!)"
|
||||||
msgstr "ÕÓÔÁÎÏ×ÉÔØ ×ÒÅÍÑ ÜËÓÐÏÚÉÃÉÉ (ÓÅËÕÎÄÙ!)"
|
msgstr "ÕÓÔÁÎÏ×ÉÔØ ×ÒÅÍÑ ÜËÓÐÏÚÉÃÉÉ (ÓÅËÕÎÄÙ!)"
|
||||||
|
|
||||||
#: cmdlnopts.c:55
|
#: cmdlnopts.c:56
|
||||||
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:92
|
#: cmdlnopts.c:93
|
||||||
msgid "set wheel position"
|
msgid "set wheel position"
|
||||||
msgstr "ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ"
|
msgstr "ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ"
|
||||||
|
|
||||||
#: cmdlnopts.c:48
|
#: cmdlnopts.c:106
|
||||||
|
msgid "shared memory (with image data) key (default: 7777777"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cmdlnopts.c:49
|
||||||
msgid "show this help"
|
msgid "show this help"
|
||||||
msgstr "ÏÔÏÂÒÁÚÉÔØ ÜÔÕ ÓÐÒÁ×ËÕ"
|
msgstr "ÏÔÏÂÒÁÚÉÔØ ÜÔÕ ÓÐÒÁ×ËÕ"
|
||||||
|
|
||||||
#: cmdlnopts.c:50
|
#: cmdlnopts.c:51
|
||||||
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:69
|
#: cmdlnopts.c:70
|
||||||
msgid "vertical binning to N pixels"
|
msgid "vertical binning to N pixels"
|
||||||
msgstr "×ÅÒÔÉËÁÌØÎÙÊ ÂÉÎÎÉÎÇ × N ÐÉËÓÅÌÅÊ"
|
msgstr "×ÅÒÔÉËÁÌØÎÙÊ ÂÉÎÎÉÎÇ × N ÐÉËÓÅÌÅÊ"
|
||||||
|
|
||||||
#: cmdlnopts.c:65
|
#: cmdlnopts.c:66
|
||||||
msgid "wait while exposition ends"
|
msgid "wait while exposition ends"
|
||||||
msgstr "ÖÄÁÔØ, ÐÏËÁ ÎÅ ËÏÎÞÉÔÓÑ ÜËÓÐÏÚÉÃÉÑ"
|
msgstr "ÖÄÁÔØ, ÐÏËÁ ÎÅ ËÏÎÞÉÔÓÑ ÜËÓÐÏÚÉÃÉÑ"
|
||||||
|
|
||||||
#: cmdlnopts.c:43
|
#: cmdlnopts.c:44
|
||||||
msgid "wheel device plugin (e.g. devdummy.so)"
|
msgid "wheel device plugin (e.g. devdummy.so)"
|
||||||
msgstr "ÐÌÁÇÉÎ ÕÓÔÒÏÊÓÔ×Á ÔÕÒÅÌÉ (ÎÁÐÒÉÍÅÒ, devdummy.so)"
|
msgstr "ÐÌÁÇÉÎ ÕÓÔÒÏÊÓÔ×Á ÔÕÒÅÌÉ (ÎÁÐÒÉÍÅÒ, devdummy.so)"
|
||||||
|
|
||||||
|
|||||||
113
server.c
113
server.c
@ -22,6 +22,8 @@
|
|||||||
#include <poll.h>
|
#include <poll.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <sys/ipc.h>
|
||||||
|
#include <sys/shm.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <usefull_macros.h>
|
#include <usefull_macros.h>
|
||||||
|
|
||||||
@ -46,6 +48,9 @@ static float focmaxpos = 0., focminpos = 0.; // 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.; // time when capture done
|
||||||
|
|
||||||
|
// IPC key for shared memory
|
||||||
|
static key_t shmkey = IPC_PRIVATE;
|
||||||
|
|
||||||
typedef struct{
|
typedef struct{
|
||||||
const char *key;
|
const char *key;
|
||||||
const char *help;
|
const char *help;
|
||||||
@ -88,6 +93,7 @@ strpair allcommands[] = {
|
|||||||
{ CMD_PROGRAM, "FITS 'PROG-ID' field" },
|
{ CMD_PROGRAM, "FITS 'PROG-ID' field" },
|
||||||
{ CMD_RESTART, "restart server" },
|
{ CMD_RESTART, "restart server" },
|
||||||
{ CMD_REWRITE, "rewrite file (if give `filename`, not `filenameprefix`" },
|
{ CMD_REWRITE, "rewrite file (if give `filename`, not `filenameprefix`" },
|
||||||
|
{ CMD_SHMEMKEY, "get shared memory key" },
|
||||||
{ CMD_SHUTTER, "camera shutter's operations" },
|
{ CMD_SHUTTER, "camera shutter's operations" },
|
||||||
{ CMD_CAMTEMPER, "camera chip temperature" },
|
{ CMD_CAMTEMPER, "camera chip temperature" },
|
||||||
{ CMD_TREMAIN, "time (in seconds) of exposition remained" },
|
{ CMD_TREMAIN, "time (in seconds) of exposition remained" },
|
||||||
@ -112,16 +118,71 @@ static void unlock(){
|
|||||||
if(pthread_mutex_unlock(&locmutex)) ERR("Can't unlock mutex");
|
if(pthread_mutex_unlock(&locmutex)) ERR("Can't unlock mutex");
|
||||||
}
|
}
|
||||||
|
|
||||||
static IMG ima = {0};
|
static IMG *ima = NULL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief getshm - get shared memory segment for image
|
||||||
|
* @param imsize - size of image data (in bytes)
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
static IMG *getshm(key_t key, size_t imsize){
|
||||||
|
size_t shmsize = sizeof(IMG) + imsize;
|
||||||
|
shmsize = 1024 * (1 + shmsize / 1024);
|
||||||
|
DBG("Allocate %zd bytes in shared memory", shmsize);
|
||||||
|
int shmid = -1;
|
||||||
|
int flags = (imsize) ? IPC_CREAT | 0666 : 0;
|
||||||
|
shmid = shmget(key, 0, flags);
|
||||||
|
if(shmid < 0){
|
||||||
|
WARN("Can't get shared memory segment %d", key);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if(imsize){ // check if segment exists and its size equal to needs
|
||||||
|
struct shmid_ds buf;
|
||||||
|
if(shmctl(shmid, IPC_STAT, &buf) > -1 && shmsize != buf.shm_segsz){ // remove already existing segment
|
||||||
|
DBG("Need to remove already existing segment");
|
||||||
|
shmctl(shmid, IPC_RMID, NULL);
|
||||||
|
}
|
||||||
|
shmid = shmget(key, shmsize, flags);
|
||||||
|
if(shmid < 0){
|
||||||
|
WARN("Can't create shared memory segment %d", key);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
flags = (imsize) ? 0 : SHM_RDONLY; // client opens memory in readonly mode
|
||||||
|
IMG *ptr = shmat(shmid, NULL, flags);
|
||||||
|
if(ptr == (void*)-1){
|
||||||
|
WARN("Can't attach SHM segment %d", key);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if(!imsize){
|
||||||
|
if(ptr->MAGICK != SHM_MAGIC){
|
||||||
|
WARNX("Shared memory %d isn't belongs to image server", key);
|
||||||
|
shmdt(ptr);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
bzero(ptr, sizeof(IMG));
|
||||||
|
ptr->data = (void*)((uint8_t*)ptr + sizeof(IMG));
|
||||||
|
ptr->MAGICK = SHM_MAGIC;
|
||||||
|
shmkey = key;
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
static void fixima(){
|
static void fixima(){
|
||||||
FNAME();
|
FNAME();
|
||||||
if(!camera) return;
|
if(!camera) return;
|
||||||
int raw_width = curformat.w / GP->hbin, raw_height = curformat.h / GP->vbin;
|
int raw_width = curformat.w / GP->hbin, raw_height = curformat.h / GP->vbin;
|
||||||
if(!ima.data) ima.data = MALLOC(uint16_t, camera->array.h * camera->array.w);
|
// allocate memory for largest possible image
|
||||||
if(ima.data && raw_width == ima.w && raw_height == ima.h) return; // all OK
|
if(!ima) ima = getshm(GP->shmkey, camera->array.h * camera->array.w * 2);
|
||||||
|
if(!ima) ERRX("Can't allocate memory for image");
|
||||||
|
if(raw_width == ima->w && raw_height == ima->h) return; // all OK
|
||||||
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;
|
||||||
|
if(!camera->getbitpix(&ima->bitpix)) ima->bitpix = 16;
|
||||||
|
if(ima->bitpix < 8 || ima->bitpix > 16) ima->bitpix = 16; // use maximum in any strange cases
|
||||||
|
ima->bytelen = raw_height * raw_width * getNbytes(ima);
|
||||||
DBG("new image: %dx%d", raw_width, raw_height);
|
DBG("new image: %dx%d", raw_width, raw_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,19 +216,19 @@ static inline void cameracapturestate(){ // capturing - wait for exposition ends
|
|||||||
TIMESTAMP("Capture ready");
|
TIMESTAMP("Capture ready");
|
||||||
tremain = 0.;
|
tremain = 0.;
|
||||||
// now save frame
|
// now save frame
|
||||||
if(!ima.data) LOGERR("Can't save image: not initialized");
|
if(!ima->data) LOGERR("Can't save image: not initialized");
|
||||||
else{
|
else{
|
||||||
TIMESTAMP("start capture");
|
TIMESTAMP("start capture");
|
||||||
if(!camera->capture(&ima)){
|
if(!camera->capture(ima)){
|
||||||
LOGERR("Can't capture image");
|
LOGERR("Can't capture image");
|
||||||
camstate = CAMERA_ERROR;
|
camstate = CAMERA_ERROR;
|
||||||
return;
|
return;
|
||||||
}else{
|
}else{
|
||||||
if(lastfile){
|
if(lastfile){
|
||||||
TIMESTAMP("Calc stat");
|
TIMESTAMP("Calc stat");
|
||||||
calculate_stat(&ima);
|
calculate_stat(ima);
|
||||||
}
|
}
|
||||||
if(saveFITS(&ima, &lastfile)){
|
if(saveFITS(ima, &lastfile)){
|
||||||
DBG("LAST file name changed");
|
DBG("LAST file name changed");
|
||||||
}
|
}
|
||||||
TIMESTAMP("Image saved");
|
TIMESTAMP("Image saved");
|
||||||
@ -287,6 +348,15 @@ static hresult restarthandler(_U_ int fd, _U_ const char *key, _U_ const char *v
|
|||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*************************** CCD/CMOS handlers *********************************
|
*************************** CCD/CMOS handlers *********************************
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
// image size
|
||||||
|
static hresult imsizehandler(int fd, const char *key, _U_ const char *val){
|
||||||
|
char buf[64];
|
||||||
|
// send image width/height in pixels
|
||||||
|
if(0 == strcmp(key, CMD_IMHEIGHT)) snprintf(buf, 63, CMD_IMHEIGHT "=%d", ima->h);
|
||||||
|
else snprintf(buf, 63, CMD_IMWIDTH "=%d", ima->w);
|
||||||
|
if(!sendstrmessage(fd, buf)) return RESULT_DISCONNECTED;
|
||||||
|
return RESULT_SILENCE;
|
||||||
|
}
|
||||||
static hresult camlisthandler(int fd, _U_ const char *key, _U_ const char *val){
|
static hresult camlisthandler(int fd, _U_ const char *key, _U_ const char *val){
|
||||||
char buf[BUFSIZ], modname[256];
|
char buf[BUFSIZ], modname[256];
|
||||||
for(int i = 0; i < camera->Ndevices; ++i){
|
for(int i = 0; i < camera->Ndevices; ++i){
|
||||||
@ -910,11 +980,11 @@ static hresult helphandler(int fd, _U_ const char *key, _U_ const char *val){
|
|||||||
return RESULT_SILENCE;
|
return RESULT_SILENCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static hresult imsizehandler(int fd, const char *key, _U_ const char *val){
|
// shared memory key
|
||||||
|
static hresult shmemkeyhandler(int fd, _U_ const char *key, _U_ const char *val){
|
||||||
char buf[64];
|
char buf[64];
|
||||||
// send image width/height in pixels
|
if(shmkey == IPC_PRIVATE) return RESULT_FAIL;
|
||||||
if(0 == strcmp(key, CMD_IMHEIGHT)) snprintf(buf, 63, CMD_IMHEIGHT "=%d", ima.h);
|
snprintf(buf, 63, CMD_SHMEMKEY "=%d", shmkey);
|
||||||
else snprintf(buf, 63, CMD_IMWIDTH "=%d", ima.w);
|
|
||||||
if(!sendstrmessage(fd, buf)) return RESULT_DISCONNECTED;
|
if(!sendstrmessage(fd, buf)) return RESULT_DISCONNECTED;
|
||||||
return RESULT_SILENCE;
|
return RESULT_SILENCE;
|
||||||
}
|
}
|
||||||
@ -971,6 +1041,7 @@ static handleritem items[] = {
|
|||||||
{chkcc, formathandler, CMD_FRAMEMAX},
|
{chkcc, formathandler, CMD_FRAMEMAX},
|
||||||
{chkcc, nflusheshandler, CMD_NFLUSHES},
|
{chkcc, nflusheshandler, CMD_NFLUSHES},
|
||||||
{chkcam, expstatehandler, CMD_EXPSTATE},
|
{chkcam, expstatehandler, CMD_EXPSTATE},
|
||||||
|
{chktrue,shmemkeyhandler, CMD_SHMEMKEY},
|
||||||
{chktrue,imsizehandler, CMD_IMWIDTH},
|
{chktrue,imsizehandler, CMD_IMWIDTH},
|
||||||
{chktrue,imsizehandler, CMD_IMHEIGHT},
|
{chktrue,imsizehandler, CMD_IMHEIGHT},
|
||||||
{chkcc, nameprefixhandler, CMD_FILENAMEPREFIX},
|
{chkcc, nameprefixhandler, CMD_FILENAMEPREFIX},
|
||||||
@ -998,6 +1069,17 @@ static handleritem items[] = {
|
|||||||
|
|
||||||
#define CLBUFSZ BUFSIZ
|
#define CLBUFSZ BUFSIZ
|
||||||
|
|
||||||
|
// send image as raw data
|
||||||
|
static void sendimage(int client){
|
||||||
|
if(ima->h < 1 || ima->w < 1) return;
|
||||||
|
senddata(client, ima, sizeof(IMG));
|
||||||
|
senddata(client, ima->data, ima->bytelen);
|
||||||
|
/*void *mem = malloc(ima->bytelen);
|
||||||
|
memcpy(mem, ima->data, ima->bytelen);
|
||||||
|
senddata(client, mem, ima->bytelen);
|
||||||
|
FREE(mem);*/
|
||||||
|
}
|
||||||
|
|
||||||
void server(int sock, int imsock){
|
void server(int sock, int imsock){
|
||||||
DBG("sockfd=%d, imsockfd=%d", sock, imsock);
|
DBG("sockfd=%d, imsockfd=%d", sock, imsock);
|
||||||
if(sock < 0) ERRX("server(): need at least command socket fd");
|
if(sock < 0) ERRX("server(): need at least command socket fd");
|
||||||
@ -1046,9 +1128,7 @@ void server(int sock, int imsock){
|
|||||||
DBG("client=%d", client);
|
DBG("client=%d", client);
|
||||||
if(client > -1){
|
if(client > -1){
|
||||||
DBG("client fd: %d", client);
|
DBG("client fd: %d", client);
|
||||||
// send image as raw data w*h*2
|
sendimage(client);
|
||||||
if(ima.data && ima.h > 0 && ima.w > 0)
|
|
||||||
sendimage(client, ima.data, 2*ima.h*ima.w);
|
|
||||||
close(client);
|
close(client);
|
||||||
DBG("%d closed", client);
|
DBG("%d closed", client);
|
||||||
}else{WARN("accept()"); DBG("disconnected");}
|
}else{WARN("accept()"); DBG("disconnected");}
|
||||||
@ -1075,6 +1155,7 @@ 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 = time(NULL); // set timestamp
|
||||||
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);
|
||||||
|
|||||||
2
server.h
2
server.h
@ -40,6 +40,8 @@ char *makeabspath(const char *path, int shouldbe);
|
|||||||
// get image size in pixels
|
// get image size in pixels
|
||||||
#define CMD_IMWIDTH "imwidth"
|
#define CMD_IMWIDTH "imwidth"
|
||||||
#define CMD_IMHEIGHT "imheight"
|
#define CMD_IMHEIGHT "imheight"
|
||||||
|
// get shared memory key
|
||||||
|
#define CMD_SHMEMKEY "shmemkey"
|
||||||
|
|
||||||
// CCD/CMOS
|
// CCD/CMOS
|
||||||
#define CMD_CAMLIST "camlist"
|
#define CMD_CAMLIST "camlist"
|
||||||
|
|||||||
10
socket.c
10
socket.c
@ -161,13 +161,13 @@ int start_socket(int isserver){
|
|||||||
}
|
}
|
||||||
|
|
||||||
// send image data to client
|
// send image data to client
|
||||||
int sendimage(int fd, uint16_t *data, int l){
|
int senddata(int fd, void *data, size_t l){
|
||||||
DBG("fd=%d, l=%d", fd, l);
|
DBG("fd=%d, l=%zd", fd, l);
|
||||||
if(fd < 1 || !data || l < 1) return TRUE; // empty message
|
if(fd < 1 || !data || l < 1) return TRUE; // empty message
|
||||||
DBG("send new image (size=%d) to fd %d", l, fd);
|
DBG("send new data (size=%zd) to fd %d", l, fd);
|
||||||
//strncpy((char*)data, "TEST image data\n", 17);
|
//strncpy((char*)data, "TEST image data\n", 17);
|
||||||
//l = 16;
|
//l = 16;
|
||||||
if(l != send(fd, data, l, MSG_NOSIGNAL)){
|
if(l != (size_t)send(fd, data, l, MSG_NOSIGNAL)){
|
||||||
WARN("write()");
|
WARN("write()");
|
||||||
LOGWARN("write()");
|
LOGWARN("write()");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -183,7 +183,7 @@ int sendmessage(int fd, const char *msg, int l){
|
|||||||
static char *tmpbuf = NULL;
|
static char *tmpbuf = NULL;
|
||||||
static int buflen = 0;
|
static int buflen = 0;
|
||||||
if(l + 1 > buflen){
|
if(l + 1 > buflen){
|
||||||
buflen += 1024;
|
buflen = 1024 * (1 + l/1024);
|
||||||
tmpbuf = realloc(tmpbuf, buflen);
|
tmpbuf = realloc(tmpbuf, buflen);
|
||||||
}
|
}
|
||||||
DBG("send to fd %d: %s [%d]", fd, msg, l);
|
DBG("send to fd %d: %s [%d]", fd, msg, l);
|
||||||
|
|||||||
2
socket.h
2
socket.h
@ -71,7 +71,7 @@ typedef struct{
|
|||||||
|
|
||||||
int open_socket(int isserver, char *path, int isnet);
|
int open_socket(int isserver, char *path, int isnet);
|
||||||
int start_socket(int server);
|
int start_socket(int server);
|
||||||
int sendimage(int fd, uint16_t *data, int l);
|
int senddata(int fd, void *data, size_t l);
|
||||||
int sendmessage(int fd, const char *msg, int l);
|
int sendmessage(int fd, const char *msg, int l);
|
||||||
int sendstrmessage(int fd, const char *msg);
|
int sendstrmessage(int fd, const char *msg);
|
||||||
char *get_keyval(char *keyval);
|
char *get_keyval(char *keyval);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user