fixed small speed in standalone mode; searching for reasons of the same for network mode

This commit is contained in:
Edward Emelianov 2023-04-06 16:01:28 +03:00
parent 070df2be89
commit e9f1c67055
10 changed files with 268 additions and 213 deletions

View File

@ -24,6 +24,7 @@
#include "basestructs.h"
#include "omp.h"
//#include "socket.h" // timestamp
extern Camera camera;
@ -32,7 +33,7 @@ static int isopened = FALSE, is16bit = FALSE;
static char camname[BUFSIZ] = {0};
static size_t payloadsize = 0; // size of imgBuf
static unsigned char *imgBuf = NULL;
static uint32_t expostime = 0.; // current exposition time (in microseconds)
static uint32_t expostime = 0; // current exposition time (in microseconds)
static PYLON_DEVICECALLBACK_HANDLE hCb;
static int curhbin = 1, curvbin = 1;
@ -322,9 +323,11 @@ static int pollcapt(capture_status *st, float *remain){
static int capture(IMG *ima){
FNAME();
//double __t0 = dtime();
if(!ima || !ima->data || !imgBuf || !isopened) return FALSE;
static int toohot = FALSE;
float_values f;
//TIMESTAMP("start capt");
if(!getFloat("DeviceTemperature", &f)) WARNX("Can't get temperature");
else{
DBG("Temperature: %.1f", f.val);
@ -338,17 +341,20 @@ static int capture(IMG *ima){
}
PylonGrabResult_t grabResult;
_Bool bufferReady;
//TIMESTAMP("grab single frame");
GENAPIC_RESULT res = PylonDeviceGrabSingleFrame(hDev, 0, imgBuf, payloadsize,
&grabResult, &bufferReady, 500 + (uint32_t)expostime);
&grabResult, &bufferReady, 1000 + expostime);
//TIMESTAMP("end of grabbing");
if(res != GENAPI_E_OK || !bufferReady){
WARNX("res != GENAPI_E_OK || !bufferReady");
return FALSE;
}
if(grabResult.Status != Grabbed){
WARNX("grabResult.Status != Grabbed");
WARNX("grabResult.Status != Grabbed (%d)", grabResult.Status);
return FALSE;
}
int width = grabResult.SizeX, height = grabResult.SizeY, stride = grabResult.SizeX + grabResult.PaddingX;
//TIMESTAMP("start converting");
if(is16bit){
int s2 = stride<<1, w2 = width<<1;
OMP_FOR()
@ -367,6 +373,7 @@ static int capture(IMG *ima){
}
}
}
//TIMESTAMP("image ready");
ima->bitpix = (is16bit) ? 16 : 8;
return TRUE;
}

View File

@ -26,6 +26,7 @@
#include <usefull_macros.h>
#include "basestructs.h"
#include "omp.h"
extern Camera camera;
extern Focuser focuser;
@ -67,12 +68,14 @@ static int startexp(){
static int camcapt(IMG *ima){
static int n = 0;
if(!ima || !ima->data) return FALSE;
uint16_t *d = ima->data;
for(int y = 0; y < ima->h; ++y)
OMP_FOR()
for(int y = 0; y < ima->h; ++y){
uint16_t *d = &ima->data[y*ima->w];
for(int x = 0; x < ima->w; ++x){ // sinusoide 100x200
//*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.);
}
}
++n;
ima->bitpix = 16;
return TRUE;

View File

@ -28,6 +28,7 @@
#include "ccdfunc.h"
#include "cmdlnopts.h"
#include "socket.h"
#ifdef IMAGEVIEW
#include "imageview.h"
#endif
@ -774,24 +775,31 @@ DBG("w=%d, h=%d", raw_width, raw_height);
IMG ima = {.data = img, .w = raw_width, .h = raw_height};
if(GP->nframes < 1) GP->nframes = 1;
for(int j = 0; j < GP->nframes; ++j){
TIMESTAMP("Start next cycle");
TIMEINIT();
// úÁÈ×ÁÔ ËÁÄÒÁ %d\n
verbose(1, _("Capture frame %d"), j);
if(!camera->startexposition()){
WARNX(_("Can't start exposition"));
break;
}
TIMESTAMP("Check capture");
if(capt() != CAPTURE_READY){
WARNX(_("Can't capture image"));
break;
}
verbose(2, _("Read grabbed image"));
TIMESTAMP("Read grabbed");
//if(!camera) return;
if(!camera->capture(&ima)){
WARNX(_("Can't grab image"));
break;
}
TIMESTAMP("Calc stat");
calculate_stat(&ima);
TIMESTAMP("Save fits");
saveFITS(&ima, NULL);
TIMESTAMP("Ready");
if(GP->pause_len && j != (GP->nframes - 1)){
double delta, time1 = dtime() + GP->pause_len;
while((delta = time1 - dtime()) > 0.){
@ -821,30 +829,28 @@ void camstop(){
#ifdef IMAGEVIEW
static volatile int grabends = 1;
static volatile int grabno = 0, lastgrabno = 0, exitgrab = FALSE;
static void *grabnext(void *arg){
FNAME();
grabends = 0;
static int retval = FALSE;
IMG *ima = (IMG*) arg;
DBG("nxt");
if(!ima || !camera) goto eof;
if(!camera->startexposition()){ WARNX(_("Can't start exposition")); goto eof; }
do{
if(exitgrab) return NULL;
TIMESTAMP("Start next exp");
TIMEINIT();
if(!ima || !camera) return NULL;
if(!camera->startexposition()){ WARNX(_("Can't start exposition")); continue; }
capture_status cs;
DBG("Poll");
TIMESTAMP("Poll");
while(!camera->pollcapture(&cs, NULL)){
usleep(10000);
if(!camera) goto eof;
if(!camera) return NULL;
}
DBG("get");
if(!camera->capture(ima)){ WARNX(_("Can't grab image")); goto eof; }
calculate_stat(ima);
retval = TRUE;
DBG("OK");
eof:
grabends = 1;
pthread_exit((void*)&retval);
DBG("EXIT");
TIMESTAMP("get");
if(!camera->capture(ima)){ WARNX(_("Can't grab image")); continue; }
//calculate_stat(ima);
TIMESTAMP("OK");
++grabno;
}while(1);
}
@ -861,7 +867,8 @@ int ccdcaptured(IMG **imgptr){
if(imgptr == (void*)-1){ // kill `grabnext`
DBG("Wait for grabbing thread ends");
if(grabthread){
//pthread_cancel(grabthread); - this kills some cameras
exitgrab = TRUE;
//pthread_cancel(grabthread); // this kills some cameras
//pthread_timedjoin_np
pthread_join(grabthread, NULL);
grabthread = 0;
@ -884,26 +891,30 @@ int ccdcaptured(IMG **imgptr){
}else ima = *imgptr;
if(!grabthread){ // start new grab
DBG("\n\n\nStart new grab");
TIMESTAMP("Start new grab");
TIMEINIT();
if(pthread_create(&grabthread, NULL, &grabnext, (void*)ima)){
WARN("Can't create grabbing thread");
grabthread = 0;
}
tlast = dtime();
}else{ // grab in process
if(grabends){ // thread is dead
DBG("Grab ends");
void *vr;
pthread_join(grabthread, &vr);
int retcode = *(int*)vr;
DBG("retcode = %d", retcode);
grabthread = 0;
if(grabno != lastgrabno){ // done
lastgrabno = grabno;
TIMESTAMP("Grab ends");
//void *vr;
//pthread_join(grabthread, &vr);
//int retcode = *(int*)vr;
//DBG("retcode = %d", retcode);
//grabthread = 0;
if(GP->verbose > 1){
double t = dtime();
green("Framerate=%.2g\n", 1./(t-tlast));
green("Framerate=%.2g (%g seconds for exp)\n", 1./(t-tlast), t-tlast);
tlast = t;
}
if(retcode) return TRUE;
//TIMESTAMP("Framerate");
//if(retcode)
return TRUE;
}
}
return FALSE;

View File

@ -41,7 +41,7 @@ static int xc0,yc0,xc1,yc1; // current format
#ifdef IMAGEVIEW
static IMG ima = {0};
static volatile atomic_int grabends = 0;
static volatile atomic_int grabno = 0, oldgrabno = 0;
static int imdatalen = 0, imbufsz = 0;
#endif
@ -74,6 +74,7 @@ static char *readmsg(int fd){
// parser of CCD server messages; return TRUE to exit from polling cycle of `getans` (if receive 'FAIL', 'OK' or 'BUSY')
static int parseans(char *ans){
if(!ans) return FALSE;
TIMESTAMP("parseans() begin");
//DBG("Parsing of '%s'", ans);
if(0 == strcmp(hresult2str(RESULT_BUSY), ans)){
WARNX("Server busy");
@ -103,6 +104,7 @@ static int parseans(char *ans){
imdatalen = ima.w * ima.h * 2;
}
#endif
TIMESTAMP("parseans() end");
return FALSE;
}
@ -119,7 +121,7 @@ static int getans(int sock, const char *msg){
}
t0 = dtime();
ans = s;
DBG("Got from server: %s", ans);
TIMESTAMP("Got from server: %s", ans);
verbose(1, "\t%s", ans);
if(parseans(ans)){
if(msg && strncmp(ans, msg, strlen(msg))) continue;
@ -297,6 +299,7 @@ void init_grab_sock(int sock){
static void getimage(){
FNAME();
int sock = controlfd;
TIMESTAMP("Get image sizes");
SENDMSG(CMD_IMWIDTH);
SENDMSG(CMD_IMHEIGHT);
int imsock = open_socket(FALSE, GP->imageport, TRUE);
@ -310,6 +313,7 @@ static void getimage(){
int got = 0;
while(dtime() - t0 < CLIENT_TIMEOUT){
if(!canberead(imsock)) continue;
TIMESTAMP("Read data");
uint8_t *target = ((uint8_t*)ima.data)+got;
int rd = read(imsock, target, imdatalen - got);
if(rd <= 0){
@ -320,12 +324,12 @@ static void getimage(){
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){
DBG("Got image");
grabends = 1;
break;
}
}
if(dtime() - t0 > CLIENT_TIMEOUT) WARNX("Timeout, image didn't received");
TIMESTAMP("Got image");
++grabno;
close(imsock);
}
@ -334,10 +338,9 @@ static void *grabnext(void _U_ *arg){ // daemon grabbing images through the net
if(controlfd < 0) return NULL;
int sock = controlfd;
while(1){
DBG("WAIT");
while(grabends); // wait until image processed
expstate = CAMERA_CAPTURE;
DBG("CAPT");
TIMESTAMP("End of cycle, start new");
TIMEINIT();
SENDMSG(CMD_EXPSTATE "=%d", CAMERA_CAPTURE); // start capture
double timeout = GP->exptime + CLIENT_TIMEOUT, t0 = dtime();
useconds_t sleept = 500000; // 0.5s
@ -346,18 +349,18 @@ static void *grabnext(void _U_ *arg){ // daemon grabbing images through the net
if(sleept < 1000) sleept = 1000;
}
while(dtime() - t0 < timeout){
DBG("SLEEP!");
TIMESTAMP("Wait for exposition ends");
usleep(sleept);
//SENDMSG(CMD_EXPSTATE);
TIMESTAMP("check answer");
getans(sock, NULL);
DBG("EXPSTATE ===> %d", expstate);
TIMESTAMP("EXPSTATE ===> %d", expstate);
if(expstate != CAMERA_CAPTURE) break;
}
if(dtime() - t0 >= timeout || expstate != CAMERA_FRAMERDY){
WARNX("Image wasn't received");
continue;
}
DBG("Frame ready");
TIMESTAMP("Frame ready");
getimage();
}
return NULL;
@ -368,13 +371,13 @@ static void *waitimage(void _U_ *arg){ // passive waiting for next image
if(controlfd < 0) return NULL;
int sock = controlfd;
while(1){
while(grabends); // wait until image processed
getans(sock, NULL);
if(expstate != CAMERA_FRAMERDY){
usleep(1000);
continue;
}
DBG("Image can be downloaded");
TIMESTAMP("End of cycle, start new");
TIMEINIT();
getimage();
expstate = CAMERA_IDLE;
}
@ -398,12 +401,14 @@ int sockcaptured(IMG **imgptr){
}
if(!grabthread || pthread_kill(grabthread, 0)){ // start new grab
if(GP->viewer){
TIMEINIT();
DBG("\n\n\nStart new waiting");
if(pthread_create(&grabthread, NULL, &waitimage, NULL)){
WARN("Can't create waiting thread");
grabthread = 0;
}
}else{
TIMEINIT();
DBG("\n\n\nStart new grab");
if(pthread_create(&grabthread, NULL, &grabnext, NULL)){
WARN("Can't create grabbing thread");
@ -411,11 +416,11 @@ int sockcaptured(IMG **imgptr){
}
}
}else{ // grab in process
if(grabends){ // image is ready
DBG("Image ready");
if(grabno != oldgrabno){ // image is ready
TIMESTAMP("Image ready");
if(*imgptr && (*imgptr != &ima)) free(*imgptr);
*imgptr = &ima;
grabends = 0;
oldgrabno = grabno;
return TRUE;
}
}

View File

@ -28,6 +28,7 @@
#include "imageview.h"
#include "events.h"
#include "omp.h"
//#include "socket.h" // for timestamp
windowData *win = NULL; // main window (common variable for events.c)
static pthread_t GLUTthread = 0; // main GLUT thread
@ -557,8 +558,10 @@ int viewer(imagefunc newimage){
}
if((win->winevt & WINEVT_GETIMAGE) || !(win->winevt & WINEVT_PAUSE)){
if(newimage(&img)){
//TIMESTAMP("got image -> change");
win->winevt &= ~WINEVT_GETIMAGE;
change_displayed_image(img); // change image if refreshed
//TIMESTAMP("changed");
}
}
if(!win->winevt){

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-05 18:17+0300\n"
"POT-Creation-Date: 2023-04-06 15:51+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -253,346 +253,346 @@ msgstr ""
msgid "Display image in OpenGL window"
msgstr ""
#: ccdfunc.c:64
#: ccdfunc.c:65
#, c-format
msgid "Can't find plugin %s: %s"
msgstr ""
#: ccdfunc.c:76
#: ccdfunc.c:77
#, c-format
msgid "Can't find focuser in plugin %s: %s"
msgstr ""
#: ccdfunc.c:87
#: ccdfunc.c:88
#, c-format
msgid "Can't find camera in plugin %s: %s"
msgstr ""
#: ccdfunc.c:98
#: ccdfunc.c:99
#, c-format
msgid "Can't find wheel in plugin %s: %s"
msgstr ""
#: ccdfunc.c:184
#: ccdfunc.c:185
msgid "Camera device unknown"
msgstr ""
#. Не могу сохранить файл
#: ccdfunc.c:208
#: ccdfunc.c:209
#, c-format
msgid "Can't save file with prefix %s"
msgstr ""
#: ccdfunc.c:356
#: ccdfunc.c:357
#, c-format
msgid "File saved as '%s'"
msgstr ""
#: ccdfunc.c:365
#: ccdfunc.c:366
msgid "Error saving file"
msgstr ""
#: ccdfunc.c:405
#: ccdfunc.c:406
#, c-format
msgid "Image stat:\n"
msgstr ""
#: ccdfunc.c:413
#: ccdfunc.c:414
msgid "Focuser device not pointed"
msgstr ""
#: ccdfunc.c:420
#: ccdfunc.c:421
msgid "No focusers found"
msgstr ""
#: ccdfunc.c:451
#: ccdfunc.c:452
#, c-format
msgid "Found %d focusers, you point number %d"
msgstr ""
#: ccdfunc.c:455
#: ccdfunc.c:456
msgid "Can't set active focuser number"
msgstr ""
#: ccdfunc.c:469
#: ccdfunc.c:470
msgid "Can't get focuser limit positions"
msgstr ""
#: ccdfunc.c:476
#: ccdfunc.c:477
msgid "Can't get current focuser position"
msgstr ""
#: ccdfunc.c:490
#: ccdfunc.c:491
#, c-format
msgid "Can't set position %g: out of limits [%g, %g]"
msgstr ""
#: ccdfunc.c:494
#: ccdfunc.c:495
msgid "Can't home focuser"
msgstr ""
#: ccdfunc.c:496
#: ccdfunc.c:497
#, c-format
msgid "Can't set position %g"
msgstr ""
#: ccdfunc.c:504
#: ccdfunc.c:505
msgid "Wheel device not pointed"
msgstr ""
#: ccdfunc.c:511
#: ccdfunc.c:512
msgid "No wheels found"
msgstr ""
#: ccdfunc.c:542
#: ccdfunc.c:543
#, c-format
msgid "Found %d wheels, you point number %d"
msgstr ""
#: ccdfunc.c:546
#: ccdfunc.c:547
msgid "Can't set active wheel number"
msgstr ""
#: ccdfunc.c:562
#: ccdfunc.c:563
msgid "Can't get max wheel position"
msgstr ""
#: ccdfunc.c:569
#: ccdfunc.c:570
#, c-format
msgid "Wheel position should be from 0 to %d"
msgstr ""
#: ccdfunc.c:573
#: ccdfunc.c:574
#, c-format
msgid "Can't set wheel position %d"
msgstr ""
#: ccdfunc.c:590
#: ccdfunc.c:591
#, c-format
msgid "%.1f seconds till exposition ends"
msgstr ""
#: ccdfunc.c:605
#: ccdfunc.c:606
msgid "Camera device not pointed"
msgstr ""
#: ccdfunc.c:612 ccdfunc.c:613
#: ccdfunc.c:613 ccdfunc.c:614
msgid "No cameras found"
msgstr ""
#: ccdfunc.c:643
#: ccdfunc.c:644
#, c-format
msgid "Found %d cameras, you point number %d"
msgstr ""
#: ccdfunc.c:647
#: ccdfunc.c:648
msgid "Can't set active camera number"
msgstr ""
#: ccdfunc.c:653
#: ccdfunc.c:654
msgid "Can't set fan speed"
msgstr ""
#: ccdfunc.c:654
#: ccdfunc.c:655
#, c-format
msgid "Set fan speed to %d"
msgstr ""
#: ccdfunc.c:659
#: ccdfunc.c:660
#, c-format
msgid "Camera model: %s"
msgstr ""
#: ccdfunc.c:660
#: ccdfunc.c:661
#, c-format
msgid "Pixel size: %g x %g"
msgstr ""
#: ccdfunc.c:666
#: ccdfunc.c:667
#, c-format
msgid "Full array: %s"
msgstr ""
#: ccdfunc.c:669
#: ccdfunc.c:670
#, c-format
msgid "Field of view: %s"
msgstr ""
#: ccdfunc.c:672
#: ccdfunc.c:673
#, c-format
msgid "Current format: %s"
msgstr ""
#: ccdfunc.c:675
#: ccdfunc.c:676
#, c-format
msgid "Can't set T to %g degC"
msgstr ""
#: ccdfunc.c:683
#: ccdfunc.c:684
#, c-format
msgid "Shutter command: %s\n"
msgstr ""
#: ccdfunc.c:685
#: ccdfunc.c:686
#, c-format
msgid "Can't run shutter command %s (unsupported?)"
msgstr ""
#. "Попытка сконфигурировать порт I/O как %d\n"
#: ccdfunc.c:689
#: ccdfunc.c:690
#, c-format
msgid "Try to configure I/O port as %d"
msgstr ""
#: ccdfunc.c:691
#: ccdfunc.c:692
msgid "Can't configure (unsupported?)"
msgstr ""
#: ccdfunc.c:698
#: ccdfunc.c:699
msgid "Can't get IOport state (unsupported?)"
msgstr ""
#. "Попытка записи %d в порт I/O\n"
#: ccdfunc.c:702
#: ccdfunc.c:703
#, c-format
msgid "Try to write %d to I/O port"
msgstr ""
#: ccdfunc.c:704
#: ccdfunc.c:705
msgid "Can't set IOport"
msgstr ""
#: ccdfunc.c:711
#, c-format
msgid "Set gain to %g"
msgstr ""
#: ccdfunc.c:712
#, c-format
msgid "Can't set gain to %g"
msgid "Set gain to %g"
msgstr ""
#: ccdfunc.c:717
#: ccdfunc.c:713
#, c-format
msgid "Set brightness to %g"
msgid "Can't set gain to %g"
msgstr ""
#: ccdfunc.c:718
#, c-format
msgid "Set brightness to %g"
msgstr ""
#: ccdfunc.c:719
#, c-format
msgid "Can't set brightness to %g"
msgstr ""
#: ccdfunc.c:724 server.c:227
#: ccdfunc.c:725 server.c:234
#, c-format
msgid "Can't set binning %dx%d"
msgstr ""
#: ccdfunc.c:736 server.c:228
#: ccdfunc.c:737 server.c:235
msgid "Can't set given geometry"
msgstr ""
#: ccdfunc.c:740
#: ccdfunc.c:741
#, c-format
msgid "Can't set %d flushes"
msgstr ""
#: ccdfunc.c:744
#: ccdfunc.c:745
#, c-format
msgid "Can't set exposure time to %f seconds"
msgstr ""
#: ccdfunc.c:747
#: ccdfunc.c:748
msgid "Can't change frame type"
msgstr ""
#: ccdfunc.c:750
#: ccdfunc.c:751
msgid "Can't set bit depth"
msgstr ""
#: ccdfunc.c:752
#: ccdfunc.c:753
msgid "Can't set readout speed"
msgstr ""
#: ccdfunc.c:753
#: ccdfunc.c:754
#, c-format
msgid "Readout mode: %s"
msgstr ""
#: ccdfunc.c:754
#: ccdfunc.c:755
msgid "Only show statistics"
msgstr ""
#. GET binning should be AFTER setgeometry!
#: ccdfunc.c:756
#: ccdfunc.c:757
msgid "Can't get current binning"
msgstr ""
#. Захват кадра %d\n
#: ccdfunc.c:778
#: ccdfunc.c:781
#, c-format
msgid "Capture frame %d"
msgstr ""
#: ccdfunc.c:780 ccdfunc.c:832 server.c:122
#: ccdfunc.c:783 ccdfunc.c:841 server.c:122
msgid "Can't start exposition"
msgstr ""
#: ccdfunc.c:784
#: ccdfunc.c:788
msgid "Can't capture image"
msgstr ""
#: ccdfunc.c:787
#: ccdfunc.c:791
msgid "Read grabbed image"
msgstr ""
#: ccdfunc.c:790 ccdfunc.c:840
#: ccdfunc.c:795 ccdfunc.c:849
msgid "Can't grab image"
msgstr ""
#. %d секунд до окончания паузы\n
#: ccdfunc.c:799 client.c:269
#: ccdfunc.c:807 client.c:271
#, c-format
msgid "%d seconds till pause ends\n"
msgstr ""
#: server.c:165
#: server.c:170
msgid "No camera device"
msgstr ""
#: client.c:256
#: client.c:258
msgid "Can't make exposition"
msgstr ""
#: client.c:285
#: client.c:287
msgid "Server timeout"
msgstr ""
#: imageview.c:50
#: imageview.c:51
msgid "Already initialized!"
msgstr ""
#: imageview.c:286
#: imageview.c:287
msgid "Can't init mutex!"
msgstr ""
#: imageview.c:388
#: imageview.c:389
#, c-format
msgid "Histogram conversion: %s"
msgstr ""
#: imageview.c:508 imageview.c:581
#: imageview.c:509 imageview.c:584
#, c-format
msgid "Equalization of histogram: %s"
msgstr ""
#: imageview.c:508 imageview.c:581
#: imageview.c:509 imageview.c:584
msgid "on"
msgstr ""
#: imageview.c:508 imageview.c:581
#: imageview.c:509 imageview.c:584
msgid "off"
msgstr ""
#: imageview.c:547
#: imageview.c:548
msgid "Can't open OpenGL window, image preview will be inaccessible"
msgstr ""

View File

@ -7,7 +7,7 @@
msgid ""
msgstr "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-05 18:17+0300\n"
"POT-Creation-Date: 2023-04-06 15:49+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -16,18 +16,18 @@ msgstr "Project-Id-Version: PACKAGE VERSION\n"
"Content-Type: text/plain; charset=koi8-r\n"
"Content-Transfer-Encoding: 8bit\n"
#: ccdfunc.c:590
#: ccdfunc.c:591
#, c-format
msgid "%.1f seconds till exposition ends"
msgstr "%.1f ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÜËÓÐÏÚÉÃÉÉ"
#. %d Ñ<>екунд до окончаниÑ<C2B8> паузы\n
#: ccdfunc.c:799 client.c:269
#: ccdfunc.c:807 client.c:271
#, c-format
msgid "%d seconds till pause ends\n"
msgstr "%d ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÐÁÕÚÙ\n"
#: imageview.c:50
#: imageview.c:51
msgid "Already initialized!"
msgstr "õÖÅ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎÏ!"
@ -39,191 +39,191 @@ msgstr "
msgid "CMOS gain level"
msgstr "ÕÒÏ×ÅÎØ Gain CMOS"
#: ccdfunc.c:605
#: ccdfunc.c:606
msgid "Camera device not pointed"
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÐÏÄËÌÀÞÅÎÏ"
#: ccdfunc.c:184
#: ccdfunc.c:185
msgid "Camera device unknown"
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÏÐÏÚÎÁÎÏ"
#: ccdfunc.c:659
#: ccdfunc.c:660
#, c-format
msgid "Camera model: %s"
msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s"
#: ccdfunc.c:784
#: ccdfunc.c:788
msgid "Can't capture image"
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
#: ccdfunc.c:747
#: ccdfunc.c:748
msgid "Can't change frame type"
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÔÉÐ ËÁÄÒÁ"
#: ccdfunc.c:691
#: ccdfunc.c:692
msgid "Can't configure (unsupported?)"
msgstr "îÅ ÍÏÇÕ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ (ÏÐÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
#: ccdfunc.c:87
#: ccdfunc.c:88
#, c-format
msgid "Can't find camera in plugin %s: %s"
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÐÌÁÇÉÎ ËÁÍÅÒÙ %s: %s"
#: ccdfunc.c:76
#: ccdfunc.c:77
#, c-format
msgid "Can't find focuser in plugin %s: %s"
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÐÌÁÇÉÎ ÆÏËÕÓÅÒÁ %s: %s"
#: ccdfunc.c:64
#: ccdfunc.c:65
#, c-format
msgid "Can't find plugin %s: %s"
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÐÌÁÇÉÎ %s: %s"
#: ccdfunc.c:98
#: ccdfunc.c:99
#, c-format
msgid "Can't find wheel in plugin %s: %s"
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÐÌÁÇÉÎ ÔÕÒÅÌÉ %s: %s"
#: ccdfunc.c:698
#: ccdfunc.c:699
msgid "Can't get IOport state (unsupported?)"
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÓÏÓÔÏÑÎÉÅ ÐÏÒÔÁ I/O (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
#. GET binning should be AFTER setgeometry!
#: ccdfunc.c:756
#: ccdfunc.c:757
msgid "Can't get current binning"
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ ÂÉÎÎÉÎÇÁ"
#: ccdfunc.c:476
#: ccdfunc.c:477
msgid "Can't get current focuser position"
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÔÅËÕÝÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
#: ccdfunc.c:469
#: ccdfunc.c:470
msgid "Can't get focuser limit positions"
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
#: ccdfunc.c:562
#: ccdfunc.c:563
msgid "Can't get max wheel position"
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ËÏÌÅÓÁ"
#: ccdfunc.c:790 ccdfunc.c:840
#: ccdfunc.c:795 ccdfunc.c:849
msgid "Can't grab image"
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
#: ccdfunc.c:494
#: ccdfunc.c:495
msgid "Can't home focuser"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÆÏËÕÓÅÒ × ÎÕÌØ"
#: imageview.c:286
#: imageview.c:287
msgid "Can't init mutex!"
msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!"
#: client.c:256
#: client.c:258
msgid "Can't make exposition"
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ÜËÓÐÏÚÉÃÉÀ"
#: imageview.c:547
#: imageview.c:548
msgid "Can't open OpenGL window, image preview will be inaccessible"
msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÏËÎÏ OpenGL, ÏÔÏÂÒÁÖÅÎÉÅ ÂÕÄÅÔ ÎÅÄÏÓÔÕÐÎÏ"
#: ccdfunc.c:685
#: ccdfunc.c:686
#, c-format
msgid "Can't run shutter command %s (unsupported?)"
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ ÚÁÔ×ÏÒÁ %s (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
#. Ð<>е могу Ñ<>охраниÑÑŒ файл
#: ccdfunc.c:208
#: ccdfunc.c:209
#, c-format
msgid "Can't save file with prefix %s"
msgstr "îÅ ÍÏÇÕ ÓÏÈÒÁÎÉÔØ ÆÁÊÌ Ó ÐÒÅÆÉËÓÏÍ %s"
#: ccdfunc.c:740
#: ccdfunc.c:741
#, c-format
msgid "Can't set %d flushes"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ %d ÓÂÒÏÓÏ×"
#: ccdfunc.c:704
#: ccdfunc.c:705
msgid "Can't set IOport"
msgstr "îÅ ÍÏÇÕ ÐÏÍÅÎÑÔØ ÚÎÁÞÅÎÉÑ ÐÏÒÔÁ I/O"
#: ccdfunc.c:675
#: ccdfunc.c:676
#, c-format
msgid "Can't set T to %g degC"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÔÅÍÐÅÒÁÔÕÒÕ × %g ÇÒÁÄã"
#: ccdfunc.c:647
#: ccdfunc.c:648
msgid "Can't set active camera number"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÊ ËÁÍÅÒÙ"
#: ccdfunc.c:455
#: ccdfunc.c:456
msgid "Can't set active focuser number"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ÆÏËÕÓÅÒÁ"
#: ccdfunc.c:546
#: ccdfunc.c:547
msgid "Can't set active wheel number"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ËÏÌÅÓÁ"
#: ccdfunc.c:724 server.c:227
#: ccdfunc.c:725 server.c:234
#, c-format
msgid "Can't set binning %dx%d"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÂÉÎÎÉÎÇ %dx%d"
#: ccdfunc.c:750
#: ccdfunc.c:751
msgid "Can't set bit depth"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÒÁÚÒÑÄÎÏÓÔØ áãð"
#: ccdfunc.c:718
#: ccdfunc.c:719
#, c-format
msgid "Can't set brightness to %g"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
#: ccdfunc.c:744
#: ccdfunc.c:745
#, c-format
msgid "Can't set exposure time to %f seconds"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÜËÓÐÏÚÉÃÉÀ × %f ÓÅËÕÎÄ"
#: ccdfunc.c:653
#: ccdfunc.c:654
msgid "Can't set fan speed"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ×"
#: ccdfunc.c:712
#: ccdfunc.c:713
#, c-format
msgid "Can't set gain to %g"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ Gain × %g"
#: ccdfunc.c:736 server.c:228
#: ccdfunc.c:737 server.c:235
msgid "Can't set given geometry"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÇÅÏÍÅÔÒÉÀ"
#: ccdfunc.c:496
#: ccdfunc.c:497
#, c-format
msgid "Can't set position %g"
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÐÏÚÉÃÉÀ ÎÁ %g"
#: ccdfunc.c:490
#: ccdfunc.c:491
#, c-format
msgid "Can't set position %g: out of limits [%g, %g]"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÚÉÃÉÀ %g: ×ÎÅ ÐÒÅÄÅÌÏ× [%g, %g]"
#: ccdfunc.c:752
#: ccdfunc.c:753
msgid "Can't set readout speed"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ÓÞÉÔÙ×ÁÎÉÑ"
#: ccdfunc.c:573
#: ccdfunc.c:574
#, c-format
msgid "Can't set wheel position %d"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ %d"
#: ccdfunc.c:780 ccdfunc.c:832 server.c:122
#: ccdfunc.c:783 ccdfunc.c:841 server.c:122
msgid "Can't start exposition"
msgstr "îÅ ÍÏÇÕ ÎÁÞÁÔØ ÜËÓÐÏÚÉÃÉÀ"
#. Захват кадра %d\n
#: ccdfunc.c:778
#: ccdfunc.c:781
#, c-format
msgid "Capture frame %d"
msgstr "úÁÈ×ÁÔ ËÁÄÒÁ %d"
#: ccdfunc.c:672
#: ccdfunc.c:673
#, c-format
msgid "Current format: %s"
msgstr ""
@ -232,55 +232,55 @@ msgstr ""
msgid "Display image in OpenGL window"
msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ × ÏËÎÅ OpenGL"
#: imageview.c:508 imageview.c:581
#: imageview.c:509 imageview.c:584
#, c-format
msgid "Equalization of histogram: %s"
msgstr "üË×ÁÌÉÚÁÃÉÑ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
#: ccdfunc.c:365
#: ccdfunc.c:366
msgid "Error saving file"
msgstr "ïÛÉÂËÁ ÓÏÈÒÁÎÅÎÉÑ ÆÁÊÌÁ"
#: ccdfunc.c:669
#: ccdfunc.c:670
#, c-format
msgid "Field of view: %s"
msgstr "ðÏÌÅ ÚÒÅÎÉÑ: %s"
#: ccdfunc.c:356
#: ccdfunc.c:357
#, c-format
msgid "File saved as '%s'"
msgstr "æÁÊÌ ÓÏÈÒÁÎÅÎ ËÁË '%s'"
#: ccdfunc.c:413
#: ccdfunc.c:414
msgid "Focuser device not pointed"
msgstr "õÓÔÒÏÊÓÔ×Ï ÆÏËÕÓÅÒÁ ÎÅ ÕËÁÚÁÎÏ"
#: ccdfunc.c:643
#: ccdfunc.c:644
#, c-format
msgid "Found %d cameras, you point number %d"
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ËÁÍÅÒ, ×Ù ÕËÁÚÁÌÉ %d"
#: ccdfunc.c:451
#: ccdfunc.c:452
#, c-format
msgid "Found %d focusers, you point number %d"
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ÆÏËÕÓÅÒÏ×, ×Ù ÕËÁÚÁÌÉ %d"
#: ccdfunc.c:542
#: ccdfunc.c:543
#, c-format
msgid "Found %d wheels, you point number %d"
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ËÏÌÅÓ, ×Ù ÕËÁÚÁÌÉ %d"
#: ccdfunc.c:666
#: ccdfunc.c:667
#, c-format
msgid "Full array: %s"
msgstr "ðÏÌÎÙÊ ÆÏÒÍÁÔ: %s"
#: imageview.c:388
#: imageview.c:389
#, c-format
msgid "Histogram conversion: %s"
msgstr "ðÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
#: ccdfunc.c:405
#: ccdfunc.c:406
#, c-format
msgid "Image stat:\n"
msgstr "óÔÁÔÉÓÔÉËÁ ÐÏ ÉÚÏÂÒÁÖÅÎÉÀ: \n"
@ -289,23 +289,23 @@ msgstr "
msgid "N flushes before exposing (default: 1)"
msgstr "N ÚÁÓ×ÅÞÉ×ÁÎÉÊ ÐÅÒÅÄ ÜËÓÐÏÚÉÃÉÅÊ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 1)"
#: server.c:165
#: server.c:170
msgid "No camera device"
msgstr "îÅ ÕËÁÚÁÎÏ ÕÓÔÒÏÊÓÔ×Ï ËÁÍÅÒÙ"
#: ccdfunc.c:612 ccdfunc.c:613
#: ccdfunc.c:613 ccdfunc.c:614
msgid "No cameras found"
msgstr "ëÁÍÅÒ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
#: ccdfunc.c:420
#: ccdfunc.c:421
msgid "No focusers found"
msgstr "æÏËÕÓÅÒÏ× ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
#: ccdfunc.c:511
#: ccdfunc.c:512
msgid "No wheels found"
msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
#: ccdfunc.c:754
#: ccdfunc.c:755
msgid "Only show statistics"
msgstr "ôÏÌØËÏ ÏÔÏÂÒÁÚÉÔØ ÓÔÁÔÉÓÔÉËÕ"
@ -313,52 +313,52 @@ msgstr "
msgid "PID file (default: "
msgstr "PID-ÆÁÊÌ (ÐÏ ÕÍÏÌÞÁÎÉÀ: "
#: ccdfunc.c:660
#: ccdfunc.c:661
#, c-format
msgid "Pixel size: %g x %g"
msgstr "òÁÚÍÅÒ ÐÉËÓÅÌÑ: %g x %g"
#: ccdfunc.c:787
#: ccdfunc.c:791
msgid "Read grabbed image"
msgstr "óÞÉÔÙ×ÁÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ"
#: ccdfunc.c:753
#: ccdfunc.c:754
#, c-format
msgid "Readout mode: %s"
msgstr "òÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ: %s"
#: client.c:285
#: client.c:287
msgid "Server timeout"
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
#: ccdfunc.c:717
#: ccdfunc.c:718
#, c-format
msgid "Set brightness to %g"
msgstr "õÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
#: ccdfunc.c:654
#: ccdfunc.c:655
#, c-format
msgid "Set fan speed to %d"
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ× × %d"
#: ccdfunc.c:711
#: ccdfunc.c:712
#, c-format
msgid "Set gain to %g"
msgstr "õÓÔÁÎÏ×ÉÔØ Gain × %g"
#: ccdfunc.c:683
#: ccdfunc.c:684
#, c-format
msgid "Shutter command: %s\n"
msgstr "ëÏÍÁÎÄÁ ÚÁÔ×ÏÒÁ: %s\n"
#. "Попытка Ñ<>конфигурироваÑÑŒ порт I/O как %d\n"
#: ccdfunc.c:689
#: ccdfunc.c:690
#, c-format
msgid "Try to configure I/O port as %d"
msgstr "ðÏÐÙÔËÁ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ ÐÏÒÔ I/O ËÁË %d"
#. "Попытка запиÑ<C2B8>и %d в порт I/O\n"
#: ccdfunc.c:702
#: ccdfunc.c:703
#, c-format
msgid "Try to write %d to I/O port"
msgstr "ðÏÐÙÔËÁ ÚÁÐÉÓÉ %d × ÐÏÒÔ I/O"
@ -367,11 +367,11 @@ msgstr "
msgid "UNIX socket name"
msgstr "éÍÑ UNIX-ÓÏËÅÔÁ"
#: ccdfunc.c:504
#: ccdfunc.c:505
msgid "Wheel device not pointed"
msgstr "õÓÔÒÏÊÓÔ×Ï ÔÕÒÅÌÉ ÎÅ ÕËÁÚÁÎÏ"
#: ccdfunc.c:569
#: ccdfunc.c:570
#, c-format
msgid "Wheel position should be from 0 to %d"
msgstr "ðÏÚÉÃÉÑ ËÏÌÅÓÁ ÄÏÌÖÎÁ ÂÙÔØ ÏÔ 0 ÄÏ %d"
@ -510,11 +510,11 @@ msgstr "
msgid "observing program name"
msgstr "ÎÁÚ×ÁÎÉÅ ÐÒÏÇÒÁÍÍÙ"
#: imageview.c:508 imageview.c:581
#: imageview.c:509 imageview.c:584
msgid "off"
msgstr "×ÙËÌ"
#: imageview.c:508 imageview.c:581
#: imageview.c:509 imageview.c:584
msgid "on"
msgstr "×ËÌ"

View File

@ -113,7 +113,7 @@ static void fixima(){
// functions for processCAM finite state machine
static inline void cameraidlestate(){ // idle - wait for capture commands
if(camflags & FLAG_STARTCAPTURE){ // start capturing
DBG("Start exposition");
TIMESTAMP("Start exposition");
camflags &= ~(FLAG_STARTCAPTURE | FLAG_CANCEL);
camstate = CAMERA_CAPTURE;
fixima();
@ -137,20 +137,25 @@ static inline void cameracapturestate(){ // capturing - wait for exposition ends
capture_status cs;
if(camera->pollcapture(&cs, &tremain)){
if(cs != CAPTURE_PROCESS){
DBG("Capture ready");
TIMESTAMP("Capture ready");
tremain = 0.;
// now save frame
if(!ima.data) LOGERR("Can't save image: not initialized");
else{
TIMESTAMP("start capture");
if(!camera->capture(&ima)){
LOGERR("Can't capture image");
camstate = CAMERA_ERROR;
return;
}else{
if(lastfile){
TIMESTAMP("Calc stat");
calculate_stat(&ima);
}
if(saveFITS(&ima, &lastfile)){
DBG("LAST file name changed");
}
TIMESTAMP("Image saved");
}
}
camstate = CAMERA_FRAMERDY;
@ -221,6 +226,8 @@ static int camdevini(int n){
curformat = frmformatmax;
DBG("\n\nGeometry format (offx/offy) w/h: (%d/%d) %d/%d", curformat.xoff, curformat.yoff,
curformat.w, curformat.h);
curformat.xoff = 0;
curformat.yoff = 0;
if(GP->hbin < 1) GP->hbin = 1;
if(GP->vbin < 1) GP->vbin = 1;
fixima();
@ -560,6 +567,8 @@ static hresult expstatehandler(_U_ int fd, _U_ const char *key, _U_ const char *
return RESULT_OK;
}
else if(n == CAMERA_CAPTURE){ // start exposition
TIMESTAMP("End of cycle - start new");
TIMEINIT();
camflags |= FLAG_STARTCAPTURE;
return RESULT_OK;
}
@ -1028,6 +1037,7 @@ void server(int sock, int imsock){
close(client);
DBG("%d closed", client);
}else{WARN("accept()"); DBG("disconnected");}
TIMESTAMP("Image sent");
}
if(poll_set[0].revents & POLLIN){ // check main for accept()
struct sockaddr_in addr;
@ -1053,8 +1063,10 @@ void server(int sock, int imsock){
char buff[PATH_MAX+32];
snprintf(buff, PATH_MAX, CMD_EXPSTATE "=%d", camstate);
DBG("Send %s to %d clients", buff, nfd - 2);
for(int i = 2; i < nfd; ++i)
for(int i = 2; i < nfd; ++i){
TIMESTAMP("Send message that all ready");
sendstrmessage(poll_set[i].fd, buff);
}
if(camstate == CAMERA_FRAMERDY){ // send to all last file name
snprintf(buff, PATH_MAX+31, CMD_LASTFNAME "=%s", lastfile);
for(int i = 2; i < nfd; ++i)

View File

@ -34,6 +34,10 @@
#include "server.h"
#include "socket.h"
#ifdef EBUG
double __t0 = 0.;
#endif
pthread_mutex_t locmutex = PTHREAD_MUTEX_INITIALIZER; // mutex for wheel/camera/focuser functions
/**

View File

@ -19,6 +19,7 @@
#pragma once
#include <pthread.h>
#include <stdint.h>
#include <usefull_macros.h>
// max & min TCP socket port number
#define PORTN_MAX (65535)
@ -37,6 +38,15 @@
// client will disconnect after this time from last server message
#define CLIENT_TIMEOUT (3.0)
#ifdef EBUG
extern double __t0;
#define TIMEINIT() do{__t0 = dtime();}while(0)
#define TIMESTAMP(...) do{DBG(__VA_ARGS__); fprintf(stderr, COLOR_GREEN "%g" COLOR_OLD "\n", dtime()-__t0);}while(0)
#else
#define TIMEINIT()
#define TIMESTAMP()
#endif
extern pthread_mutex_t locmutex;
typedef enum{