mirror of
https://github.com/eddyem/CCD_Capture.git
synced 2025-12-06 02:35:13 +03:00
add network image transporting (pre-alpha yet: many bugs)
This commit is contained in:
parent
764aa50ccc
commit
644de638ca
@ -212,8 +212,8 @@ static int geometrylimits(frameformat *max, frameformat *step){
|
||||
if(!isopened || !max || !step) return FALSE;
|
||||
fc2Format7Info f = {.mode = FC2_MODE_0};
|
||||
BOOL b;
|
||||
fc2Format7Info i = {0};
|
||||
FC2FN(fc2GetFormat7Info, &i, &b);
|
||||
//fc2Format7Info i = {0};
|
||||
FC2FN(fc2GetFormat7Info, &f, &b);
|
||||
if(!b) return FALSE;
|
||||
max->h = f.maxHeight; max->w = f.maxWidth;
|
||||
max->xoff = f.maxWidth - f.offsetHStepSize;
|
||||
@ -222,6 +222,7 @@ static int geometrylimits(frameformat *max, frameformat *step){
|
||||
step->h = f.imageVStepSize;
|
||||
step->xoff = f.offsetHStepSize;
|
||||
step->yoff = f.offsetVStepSize;
|
||||
DBG("Got max w/h: %d/%d", f.maxWidth, f.maxHeight);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -320,6 +321,7 @@ static int capture(IMG *ima){
|
||||
uint16_t *Out = &ima->data[y*width];
|
||||
const uint8_t *In = &convertedImage.pData[y*stride];
|
||||
memcpy(Out, In, w2);
|
||||
//DBG("Row %d copied. First byte: %d", y, *((uint16_t*)In));
|
||||
}
|
||||
}else{
|
||||
OMP_FOR()
|
||||
@ -329,6 +331,7 @@ static int capture(IMG *ima){
|
||||
for(int x = 0; x < width; ++x){
|
||||
*Out++ = *In++;
|
||||
}
|
||||
//DBG("Row %d copied. Last byte: %d", y, *((uint16_t*)In));
|
||||
}
|
||||
}
|
||||
ima->bitpix = is16bit ? 16 : 8;
|
||||
|
||||
@ -17,9 +17,6 @@
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#ifndef BASESTRUCTS_H__
|
||||
#define BASESTRUCTS_H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct{
|
||||
@ -136,4 +133,3 @@ typedef struct{
|
||||
int (*getMaxPos)(int *p); // amount of positions
|
||||
} Wheel;
|
||||
|
||||
#endif // BASESTRUCTS_H__
|
||||
|
||||
@ -186,8 +186,7 @@ int saveFITS(IMG *img, char **outp){
|
||||
}
|
||||
char buff[PATH_MAX+1], fnam[PATH_MAX+1];
|
||||
if(!GP->outfile && !GP->outfileprefix){
|
||||
LOGERR("Can't save image: neither filename nor filename prefix pointed");
|
||||
WARNX(_("Neither filename nor filename prefix pointed!"));
|
||||
LOGWARN("Image not saved: neither filename nor filename prefix pointed");
|
||||
return FALSE;
|
||||
}
|
||||
if(GP->outfile){ // pointed specific output file name like "file.fits", check it
|
||||
@ -819,6 +818,8 @@ void cancel(){
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifdef IMAGEVIEW
|
||||
static volatile int grabends = 1;
|
||||
static void *grabnext(void *arg){
|
||||
FNAME();
|
||||
@ -845,6 +846,8 @@ eof:
|
||||
DBG("EXIT");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief ccdcaptured - get new image data for viewer
|
||||
* @param img - pointer to IMG* (if IMG* is NULL, will be allocated here)
|
||||
@ -894,3 +897,4 @@ int ccdcaptured(IMG **imgptr){
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -17,9 +17,6 @@
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#ifndef CCDFUNC_H__
|
||||
#define CCDFUNC_H__
|
||||
|
||||
#include "basestructs.h"
|
||||
|
||||
extern Camera *camera;
|
||||
@ -40,6 +37,7 @@ int startFocuser(void **dlh);
|
||||
void focclose();
|
||||
void closewheel();
|
||||
void closecam();
|
||||
#ifdef IMAGEVIEW
|
||||
int ccdcaptured(IMG **img);
|
||||
#endif
|
||||
|
||||
#endif // CCDFUNC_H__
|
||||
|
||||
124
client.c
124
client.c
@ -17,6 +17,7 @@
|
||||
*/
|
||||
|
||||
// client-side functions
|
||||
#include <stdatomic.h>
|
||||
#include <math.h> // isnan
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
@ -30,9 +31,15 @@
|
||||
|
||||
static char sendbuf[BUFSIZ];
|
||||
#define SENDMSG(...) do{snprintf(sendbuf, BUFSIZ-1, __VA_ARGS__); verbose(2, "\t> %s", sendbuf); sendstrmessage(sock, sendbuf); getans(sock);}while(0)
|
||||
static int expstate = CAMERA_CAPTURE;
|
||||
static volatile atomic_int expstate = CAMERA_CAPTURE;
|
||||
static int xm0,ym0,xm1,ym1; // max format
|
||||
|
||||
#ifdef IMAGEVIEW
|
||||
static IMG ima = {0};
|
||||
static volatile atomic_int grabends = 0;
|
||||
static int imdatalen = 0, imbufsz = 0;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* check data from fd (polling function for client)
|
||||
* @param fd - file descriptor
|
||||
@ -104,6 +111,17 @@ static int parseans(char *ans){
|
||||
sscanf(val, "%d,%d,%d,%d", &xm0, &ym0, &xm1, &ym1);
|
||||
DBG("Got maxformat: %d,%d,%d,%d", xm0, ym0, xm1, ym1);
|
||||
}
|
||||
#ifdef IMAGEVIEW
|
||||
else if(0 == strcmp(CMD_IMWIDTH, ans)){
|
||||
ima.w = atoi(val);
|
||||
DBG("Get width: %d", ima.w);
|
||||
imdatalen = ima.w * ima.h * 2;
|
||||
}else if(0 == strcmp(CMD_IMHEIGHT, ans)){
|
||||
ima.h = atoi(val);
|
||||
DBG("Get height: %d", ima.h);
|
||||
imdatalen = ima.w * ima.h * 2;
|
||||
}
|
||||
#endif
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -130,7 +148,7 @@ static int getans(int sock){
|
||||
/**
|
||||
* @brief processData - process here some actions and make messages for server
|
||||
*/
|
||||
static void process_data(int sock){
|
||||
static void send_headers(int sock){
|
||||
// common information
|
||||
SENDMSG(CMD_INFO);
|
||||
// focuser
|
||||
@ -178,11 +196,15 @@ static void process_data(int sock){
|
||||
else SENDMSG(CMD_DARK "=0");
|
||||
}
|
||||
if(GP->outfile){
|
||||
SENDMSG(CMD_FILENAME "=%s", makeabspath(GP->outfile, FALSE));
|
||||
if(!*GP->outfile) SENDMSG(CMD_FILENAME "=");
|
||||
else SENDMSG(CMD_FILENAME "=%s", makeabspath(GP->outfile, FALSE));
|
||||
if(GP->rewrite) SENDMSG(CMD_REWRITE "=1");
|
||||
else SENDMSG(CMD_REWRITE "=0");
|
||||
}
|
||||
if(GP->outfileprefix) SENDMSG(CMD_FILENAMEPREFIX "=%s", makeabspath(GP->outfileprefix, FALSE));
|
||||
if(GP->outfileprefix){
|
||||
if(!*GP->outfileprefix) SENDMSG(CMD_FILENAMEPREFIX "=");
|
||||
else SENDMSG(CMD_FILENAMEPREFIX "=%s", makeabspath(GP->outfileprefix, FALSE));
|
||||
}
|
||||
if(GP->exptime > -DBL_EPSILON) SENDMSG(CMD_EXPOSITION "=%g", GP->exptime);
|
||||
// FITS header keywords:
|
||||
#define CHKHDR(x, cmd) do{if(x) SENDMSG(cmd "=%s", x);}while(0)
|
||||
@ -213,11 +235,11 @@ void client(int sock){
|
||||
SENDMSG(CMD_RESTART);
|
||||
return;
|
||||
}
|
||||
process_data(sock);
|
||||
send_headers(sock);
|
||||
double t0 = dtime(), tw = t0;
|
||||
int Nremain = 0, nframe = 1;
|
||||
// if client gives filename/prefix or Nframes, make exposition
|
||||
if(GP->outfile || GP->outfileprefix || GP->nframes > 0){
|
||||
if((GP->outfile && *GP->outfile) || (GP->outfileprefix && *GP->outfileprefix) || GP->nframes > 0){
|
||||
Nremain = GP->nframes - 1;
|
||||
if(Nremain < 1) Nremain = 0;
|
||||
else GP->waitexpend = TRUE; // N>1 - wait for exp ends
|
||||
@ -276,3 +298,93 @@ void client(int sock){
|
||||
if(GP->waitexpend) WARNX(_("Server timeout"));
|
||||
DBG("Timeout");
|
||||
}
|
||||
|
||||
#ifdef IMAGEVIEW
|
||||
static int grabsockfd = -1;
|
||||
void init_grab_sock(int sock){
|
||||
grabsockfd = sock;
|
||||
send_headers(sock);
|
||||
}
|
||||
|
||||
static void *grabnext(void _U_ *arg){ // daemon grabbing images through the net
|
||||
FNAME();
|
||||
if(grabsockfd < 0) return NULL;
|
||||
int sock = grabsockfd;
|
||||
while(1){
|
||||
while(grabends); // wait until image processed
|
||||
SENDMSG(CMD_IMWIDTH);
|
||||
SENDMSG(CMD_IMHEIGHT);
|
||||
expstate = CAMERA_CAPTURE;
|
||||
SENDMSG(CMD_EXPSTATE "=%d", CAMERA_CAPTURE); // start capture
|
||||
double timeout = GP->exptime + CLIENT_TIMEOUT, t0 = dtime();
|
||||
while(dtime() - t0 < timeout){
|
||||
SENDMSG(CMD_EXPSTATE);
|
||||
if(expstate != CAMERA_CAPTURE) break;
|
||||
}
|
||||
if(dtime() - t0 >= timeout || expstate != CAMERA_FRAMERDY){
|
||||
WARNX("Image wasn't received");
|
||||
continue;
|
||||
}
|
||||
DBG("Frame ready");
|
||||
sendstrmessage(sock, CMD_GETIMAGE);
|
||||
if(imbufsz < imdatalen){
|
||||
DBG("Reallocate memory from %d to %d", imbufsz, imdatalen);
|
||||
ima.data = realloc(ima.data, imdatalen);
|
||||
imbufsz = imdatalen;
|
||||
}
|
||||
t0 = dtime();
|
||||
int got = 0;
|
||||
while(dtime() - t0 < CLIENT_TIMEOUT){
|
||||
if(!canberead(sock)) continue;
|
||||
int rd = read(sock, ((uint8_t*)ima.data)+got, imdatalen - got);
|
||||
if(rd <= 0){
|
||||
WARNX("Server disconnected");
|
||||
signals(1);
|
||||
}
|
||||
got += rd;
|
||||
DBG("Read %d bytes; total read %d from %d", rd, got, imdatalen);
|
||||
if(got == imdatalen){
|
||||
DBG("Got image");
|
||||
grabends = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(dtime() - t0 > CLIENT_TIMEOUT) WARNX("Timeout, image didn't received");
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// try to capture images through socket
|
||||
int sockcaptured(IMG **imgptr){
|
||||
if(!imgptr) return FALSE;
|
||||
static pthread_t grabthread = 0;
|
||||
if(grabsockfd < 0) return FALSE;
|
||||
if(imgptr == (void*)-1){ // kill `grabnext`
|
||||
DBG("Kill grabbing thread");
|
||||
if(grabthread){
|
||||
pthread_cancel(grabthread);
|
||||
pthread_join(grabthread, NULL);
|
||||
grabthread = 0;
|
||||
}
|
||||
DBG("Killed");
|
||||
return FALSE;
|
||||
}
|
||||
if(!grabthread){ // start new grab
|
||||
DBG("\n\n\nStart new grab");
|
||||
if(pthread_create(&grabthread, NULL, &grabnext, NULL)){
|
||||
WARN("Can't create grabbing thread");
|
||||
grabthread = 0;
|
||||
}
|
||||
}else{ // grab in process
|
||||
if(grabends){ // image is ready
|
||||
DBG("Image ready");
|
||||
if(*imgptr && (*imgptr != &ima)) free(*imgptr);
|
||||
*imgptr = &ima;
|
||||
grabends = 0;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
// IMAGEVIEW
|
||||
#endif
|
||||
|
||||
10
client.h
10
client.h
@ -17,10 +17,12 @@
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#ifndef CLIENT_H__
|
||||
#define CLIENT_H__
|
||||
|
||||
#include "basestructs.h"
|
||||
|
||||
// client-side functions
|
||||
void client(int fd);
|
||||
|
||||
#endif // CLIENT_H__
|
||||
#ifdef IMAGEVIEW
|
||||
void init_grab_sock(int sock);
|
||||
int sockcaptured(IMG **img);
|
||||
#endif
|
||||
|
||||
@ -17,9 +17,6 @@
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#ifndef CMDLNOPTS_H__
|
||||
#define CMDLNOPTS_H__
|
||||
|
||||
#include <usefull_macros.h>
|
||||
|
||||
/*
|
||||
@ -86,4 +83,4 @@ extern glob_pars *GP;
|
||||
|
||||
glob_pars *parse_args(int argc, char **argv);
|
||||
void verbose(int levl, const char *fmt, ...);
|
||||
#endif // CMDLNOPTS_H__
|
||||
|
||||
|
||||
7
events.c
7
events.c
@ -90,11 +90,6 @@ void keyPressed(unsigned char key, int x, int y){
|
||||
DBG("Key pressed. mod=%d, keycode=%d (%c), point=(%d,%d)\n", mod, key, key, x,y);
|
||||
processKeybrd(key, mod, x, y);
|
||||
}
|
||||
/*
|
||||
void keySpPressed(_U_ int key, _U_ int x, _U_ int y){
|
||||
// int mod = glutGetModifiers();
|
||||
DBG("Sp. key pressed. mod=%d, keycode=%d, point=(%d,%d)\n", glutGetModifiers(), key, x,y);
|
||||
}*/
|
||||
|
||||
static int oldx, oldy; // coordinates when mouse was pressed
|
||||
static int movingwin = 0; // ==1 when user moves image by middle button
|
||||
@ -153,7 +148,7 @@ void menuEvents(int opt){
|
||||
DBG("opt: %d, key: %d (%c), mod: %d", opt, opt&0xff, opt&0xff, opt>>8);
|
||||
// just work as shortcut pressed
|
||||
processKeybrd((unsigned char)(opt&0xff), opt>>8, 0, 0);
|
||||
} // GLUT_ACTIVE_CTRL
|
||||
}
|
||||
|
||||
typedef struct{
|
||||
char *name; // menu entry name
|
||||
|
||||
8
events.h
8
events.h
@ -17,8 +17,6 @@
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#ifndef EVENTS_H__
|
||||
#define EVENTS_H__
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
@ -26,14 +24,10 @@
|
||||
#include <GL/glext.h>
|
||||
#include <GL/freeglut.h>
|
||||
|
||||
extern float Z; // ËÏÏÒÄÉÎÁÔÁ Z (zoom)
|
||||
extern float Z; // Z coordinate (zoom)
|
||||
|
||||
void keyPressed(unsigned char key, int x, int y);
|
||||
//void keySpPressed(int key, int x, int y);
|
||||
void mousePressed(int key, int state, int x, int y);
|
||||
void mouseMove(int x, int y);
|
||||
void createMenu();
|
||||
void menuEvents(int opt);
|
||||
//void mouseWheel(int button, int dir, int x, int y);
|
||||
|
||||
#endif // EVENTS_H__
|
||||
|
||||
@ -26,6 +26,7 @@
|
||||
#include "ccdfunc.h"
|
||||
#include "cmdlnopts.h"
|
||||
#include "imageview.h"
|
||||
#include "events.h"
|
||||
#include "omp.h"
|
||||
|
||||
windowData *win = NULL; // main window (common variable for events.c)
|
||||
@ -531,6 +532,7 @@ void closeGL(){
|
||||
/**
|
||||
* @brief viewer - main viewer process
|
||||
* @param newimage - image refresh function
|
||||
* it shouldn't `free` it's argument!!!
|
||||
* @return 0 if all OK
|
||||
*/
|
||||
int viewer(imagefunc newimage){
|
||||
|
||||
@ -17,16 +17,14 @@
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#ifndef IMAGEVIEW_H__
|
||||
#define IMAGEVIEW_H__
|
||||
|
||||
#include <GL/gl.h>
|
||||
#include <math.h>
|
||||
#include <pthread.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "ccdfunc.h"
|
||||
#include "events.h"
|
||||
|
||||
// events from menu:
|
||||
// temporaly stop capture of regular sequence
|
||||
@ -87,5 +85,3 @@ windowData* getWin();
|
||||
typedef int (*imagefunc)(IMG**);
|
||||
|
||||
int viewer(imagefunc);
|
||||
|
||||
#endif // IMAGEVIEW_H__
|
||||
|
||||
Binary file not shown.
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-02-07 16:55+0300\n"
|
||||
"POT-Creation-Date: 2023-02-28 17:05+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"
|
||||
@ -269,326 +269,322 @@ msgstr ""
|
||||
msgid "Camera device unknown"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:190
|
||||
msgid "Neither filename nor filename prefix pointed!"
|
||||
msgstr ""
|
||||
|
||||
#. Не могу сохранить файл
|
||||
#: ccdfunc.c:209
|
||||
#: ccdfunc.c:208
|
||||
#, c-format
|
||||
msgid "Can't save file with prefix %s"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:357
|
||||
#: ccdfunc.c:356
|
||||
#, c-format
|
||||
msgid "File saved as '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:366
|
||||
#: ccdfunc.c:365
|
||||
msgid "Error saving file"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:406
|
||||
#: ccdfunc.c:405
|
||||
#, c-format
|
||||
msgid "Image stat:\n"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:414
|
||||
#: ccdfunc.c:413
|
||||
msgid "Focuser device not pointed"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:421
|
||||
#: ccdfunc.c:420
|
||||
msgid "No focusers found"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:452
|
||||
#: ccdfunc.c:451
|
||||
#, c-format
|
||||
msgid "Found %d focusers, you point number %d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:456
|
||||
#: ccdfunc.c:455
|
||||
msgid "Can't set active focuser number"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:470
|
||||
#: ccdfunc.c:469
|
||||
msgid "Can't get focuser limit positions"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:477
|
||||
#: ccdfunc.c:476
|
||||
msgid "Can't get current focuser position"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:491
|
||||
#: ccdfunc.c:490
|
||||
#, c-format
|
||||
msgid "Can't set position %g: out of limits [%g, %g]"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:495
|
||||
#: ccdfunc.c:494
|
||||
msgid "Can't home focuser"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:497
|
||||
#: ccdfunc.c:496
|
||||
#, c-format
|
||||
msgid "Can't set position %g"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:505
|
||||
#: ccdfunc.c:504
|
||||
msgid "Wheel device not pointed"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:512
|
||||
#: ccdfunc.c:511
|
||||
msgid "No wheels found"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:543
|
||||
#: ccdfunc.c:542
|
||||
#, c-format
|
||||
msgid "Found %d wheels, you point number %d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:547
|
||||
#: ccdfunc.c:546
|
||||
msgid "Can't set active wheel number"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:563
|
||||
#: ccdfunc.c:562
|
||||
msgid "Can't get max wheel position"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:570
|
||||
#: ccdfunc.c:569
|
||||
#, c-format
|
||||
msgid "Wheel position should be from 0 to %d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:574
|
||||
#: ccdfunc.c:573
|
||||
#, c-format
|
||||
msgid "Can't set wheel position %d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:591
|
||||
#: ccdfunc.c:590
|
||||
#, c-format
|
||||
msgid "%.1f seconds till exposition ends"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:605
|
||||
#: ccdfunc.c:604
|
||||
msgid "Camera device not pointed"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:612 ccdfunc.c:613
|
||||
#: ccdfunc.c:611 ccdfunc.c:612
|
||||
msgid "No cameras found"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:643
|
||||
#: ccdfunc.c:642
|
||||
#, c-format
|
||||
msgid "Found %d cameras, you point number %d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:647
|
||||
#: ccdfunc.c:646
|
||||
msgid "Can't set active camera number"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:653
|
||||
#: ccdfunc.c:652
|
||||
msgid "Can't set fan speed"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:654
|
||||
#: ccdfunc.c:653
|
||||
#, c-format
|
||||
msgid "Set fan speed to %d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:659
|
||||
#: ccdfunc.c:658
|
||||
#, c-format
|
||||
msgid "Camera model: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:660
|
||||
#: ccdfunc.c:659
|
||||
#, c-format
|
||||
msgid "Pixel size: %g x %g"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:666
|
||||
#: ccdfunc.c:665
|
||||
#, c-format
|
||||
msgid "Full array: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:669
|
||||
#: ccdfunc.c:668
|
||||
#, c-format
|
||||
msgid "Field of view: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:672
|
||||
#: ccdfunc.c:671
|
||||
#, c-format
|
||||
msgid "Current format: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:675
|
||||
#: ccdfunc.c:674
|
||||
#, c-format
|
||||
msgid "Can't set T to %g degC"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:683
|
||||
#: ccdfunc.c:682
|
||||
#, c-format
|
||||
msgid "Shutter command: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:685
|
||||
#: ccdfunc.c:684
|
||||
#, c-format
|
||||
msgid "Can't run shutter command %s (unsupported?)"
|
||||
msgstr ""
|
||||
|
||||
#. "Попытка сконфигурировать порт I/O как %d\n"
|
||||
#: ccdfunc.c:689
|
||||
#: ccdfunc.c:688
|
||||
#, c-format
|
||||
msgid "Try to configure I/O port as %d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:691
|
||||
#: ccdfunc.c:690
|
||||
msgid "Can't configure (unsupported?)"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:698
|
||||
#: ccdfunc.c:697
|
||||
msgid "Can't get IOport state (unsupported?)"
|
||||
msgstr ""
|
||||
|
||||
#. "Попытка записи %d в порт I/O\n"
|
||||
#: ccdfunc.c:702
|
||||
#: ccdfunc.c:701
|
||||
#, c-format
|
||||
msgid "Try to write %d to I/O port"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:704
|
||||
#: ccdfunc.c:703
|
||||
msgid "Can't set IOport"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:711
|
||||
#: ccdfunc.c:710
|
||||
#, c-format
|
||||
msgid "Set gain to %g"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:712
|
||||
#: ccdfunc.c:711
|
||||
#, c-format
|
||||
msgid "Can't set gain to %g"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:717
|
||||
#: ccdfunc.c:716
|
||||
#, c-format
|
||||
msgid "Set brightness to %g"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:718
|
||||
#: ccdfunc.c:717
|
||||
#, c-format
|
||||
msgid "Can't set brightness to %g"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:726 server.c:223
|
||||
#: ccdfunc.c:725 server.c:230
|
||||
#, c-format
|
||||
msgid "Can't set binning %dx%d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:738 server.c:224
|
||||
#: ccdfunc.c:737 server.c:231
|
||||
msgid "Can't set given geometry"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:742
|
||||
#: ccdfunc.c:741
|
||||
#, c-format
|
||||
msgid "Can't set %d flushes"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:746
|
||||
#: ccdfunc.c:745
|
||||
#, c-format
|
||||
msgid "Can't set exposure time to %f seconds"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:749
|
||||
#: ccdfunc.c:748
|
||||
msgid "Can't change frame type"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:752
|
||||
#: ccdfunc.c:751
|
||||
msgid "Can't set bit depth"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:754
|
||||
#: ccdfunc.c:753
|
||||
msgid "Can't set readout speed"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:755
|
||||
#: ccdfunc.c:754
|
||||
#, c-format
|
||||
msgid "Readout mode: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:756
|
||||
#: ccdfunc.c:755
|
||||
msgid "Only show statistics"
|
||||
msgstr ""
|
||||
|
||||
#. GET binning should be AFTER setgeometry!
|
||||
#: ccdfunc.c:758
|
||||
#: ccdfunc.c:757
|
||||
msgid "Can't get current binning"
|
||||
msgstr ""
|
||||
|
||||
#. Захват кадра %d\n
|
||||
#: ccdfunc.c:780
|
||||
#: ccdfunc.c:779
|
||||
#, c-format
|
||||
msgid "Capture frame %d"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:782 ccdfunc.c:830 server.c:121
|
||||
#: ccdfunc.c:781 ccdfunc.c:831 server.c:125
|
||||
msgid "Can't start exposition"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:786
|
||||
#: ccdfunc.c:785
|
||||
msgid "Can't capture image"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:789
|
||||
#: ccdfunc.c:788
|
||||
msgid "Read grabbed image"
|
||||
msgstr ""
|
||||
|
||||
#: ccdfunc.c:792 ccdfunc.c:838
|
||||
#: ccdfunc.c:791 ccdfunc.c:839
|
||||
msgid "Can't grab image"
|
||||
msgstr ""
|
||||
|
||||
#. %d секунд до окончания паузы\n
|
||||
#: ccdfunc.c:801 client.c:260
|
||||
#: ccdfunc.c:800 client.c:282
|
||||
#, c-format
|
||||
msgid "%d seconds till pause ends\n"
|
||||
msgstr ""
|
||||
|
||||
#: server.c:163
|
||||
#: server.c:168
|
||||
msgid "No camera device"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:247
|
||||
#: client.c:269
|
||||
msgid "Can't make exposition"
|
||||
msgstr ""
|
||||
|
||||
#: client.c:276
|
||||
#: client.c:298
|
||||
msgid "Server timeout"
|
||||
msgstr ""
|
||||
|
||||
#: imageview.c:49
|
||||
#: imageview.c:50
|
||||
msgid "Already initialized!"
|
||||
msgstr ""
|
||||
|
||||
#: imageview.c:285
|
||||
#: imageview.c:286
|
||||
msgid "Can't init mutex!"
|
||||
msgstr ""
|
||||
|
||||
#: imageview.c:387
|
||||
#: imageview.c:388
|
||||
#, c-format
|
||||
msgid "Histogram conversion: %s"
|
||||
msgstr ""
|
||||
|
||||
#: imageview.c:507 imageview.c:579
|
||||
#: imageview.c:508 imageview.c:581
|
||||
#, c-format
|
||||
msgid "Equalization of histogram: %s"
|
||||
msgstr ""
|
||||
|
||||
#: imageview.c:507 imageview.c:579
|
||||
#: imageview.c:508 imageview.c:581
|
||||
msgid "on"
|
||||
msgstr ""
|
||||
|
||||
#: imageview.c:507 imageview.c:579
|
||||
#: imageview.c:508 imageview.c:581
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: imageview.c:545
|
||||
#: imageview.c:547
|
||||
msgid "Can't open OpenGL window, image preview will be inaccessible"
|
||||
msgstr ""
|
||||
|
||||
149
locale/ru/ru.po
149
locale/ru/ru.po
@ -7,7 +7,7 @@
|
||||
msgid ""
|
||||
msgstr "Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-02-07 16:54+0300\n"
|
||||
"POT-Creation-Date: 2023-02-28 17:05+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:591
|
||||
#: ccdfunc.c:590
|
||||
#, c-format
|
||||
msgid "%.1f seconds till exposition ends"
|
||||
msgstr "%.1f ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÜËÓÐÏÚÉÃÉÉ"
|
||||
|
||||
#. %d Ñ<>екунд до окончаниÑ<C2B8> паузы\n
|
||||
#: ccdfunc.c:801 client.c:260
|
||||
#: ccdfunc.c:800 client.c:282
|
||||
#, c-format
|
||||
msgid "%d seconds till pause ends\n"
|
||||
msgstr "%d ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÐÁÕÚÙ\n"
|
||||
|
||||
#: imageview.c:49
|
||||
#: imageview.c:50
|
||||
msgid "Already initialized!"
|
||||
msgstr "õÖÅ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎÏ!"
|
||||
|
||||
@ -39,7 +39,7 @@ msgstr "
|
||||
msgid "CMOS gain level"
|
||||
msgstr "ÕÒÏ×ÅÎØ Gain CMOS"
|
||||
|
||||
#: ccdfunc.c:605
|
||||
#: ccdfunc.c:604
|
||||
msgid "Camera device not pointed"
|
||||
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÐÏÄËÌÀÞÅÎÏ"
|
||||
|
||||
@ -47,20 +47,20 @@ msgstr "
|
||||
msgid "Camera device unknown"
|
||||
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÏÐÏÚÎÁÎÏ"
|
||||
|
||||
#: ccdfunc.c:659
|
||||
#: ccdfunc.c:658
|
||||
#, c-format
|
||||
msgid "Camera model: %s"
|
||||
msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s"
|
||||
|
||||
#: ccdfunc.c:786
|
||||
#: ccdfunc.c:785
|
||||
msgid "Can't capture image"
|
||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
||||
|
||||
#: ccdfunc.c:749
|
||||
#: ccdfunc.c:748
|
||||
msgid "Can't change frame type"
|
||||
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÔÉÐ ËÁÄÒÁ"
|
||||
|
||||
#: ccdfunc.c:691
|
||||
#: ccdfunc.c:690
|
||||
msgid "Can't configure (unsupported?)"
|
||||
msgstr "îÅ ÍÏÇÕ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ (ÏÐÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
||||
|
||||
@ -84,146 +84,146 @@ msgstr "
|
||||
msgid "Can't find wheel in plugin %s: %s"
|
||||
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÐÌÁÇÉÎ ÔÕÒÅÌÉ %s: %s"
|
||||
|
||||
#: ccdfunc.c:698
|
||||
#: ccdfunc.c:697
|
||||
msgid "Can't get IOport state (unsupported?)"
|
||||
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÓÏÓÔÏÑÎÉÅ ÐÏÒÔÁ I/O (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
||||
|
||||
#. GET binning should be AFTER setgeometry!
|
||||
#: ccdfunc.c:758
|
||||
#: ccdfunc.c:757
|
||||
msgid "Can't get current binning"
|
||||
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ ÂÉÎÎÉÎÇÁ"
|
||||
|
||||
#: ccdfunc.c:477
|
||||
#: ccdfunc.c:476
|
||||
msgid "Can't get current focuser position"
|
||||
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÔÅËÕÝÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
|
||||
|
||||
#: ccdfunc.c:470
|
||||
#: ccdfunc.c:469
|
||||
msgid "Can't get focuser limit positions"
|
||||
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
|
||||
|
||||
#: ccdfunc.c:563
|
||||
#: ccdfunc.c:562
|
||||
msgid "Can't get max wheel position"
|
||||
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ËÏÌÅÓÁ"
|
||||
|
||||
#: ccdfunc.c:792 ccdfunc.c:838
|
||||
#: ccdfunc.c:791 ccdfunc.c:839
|
||||
msgid "Can't grab image"
|
||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
||||
|
||||
#: ccdfunc.c:495
|
||||
#: ccdfunc.c:494
|
||||
msgid "Can't home focuser"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÆÏËÕÓÅÒ × ÎÕÌØ"
|
||||
|
||||
#: imageview.c:285
|
||||
#: imageview.c:286
|
||||
msgid "Can't init mutex!"
|
||||
msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!"
|
||||
|
||||
#: client.c:247
|
||||
#: client.c:269
|
||||
msgid "Can't make exposition"
|
||||
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ÜËÓÐÏÚÉÃÉÀ"
|
||||
|
||||
#: imageview.c:545
|
||||
#: imageview.c:547
|
||||
msgid "Can't open OpenGL window, image preview will be inaccessible"
|
||||
msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÏËÎÏ OpenGL, ÏÔÏÂÒÁÖÅÎÉÅ ÂÕÄÅÔ ÎÅÄÏÓÔÕÐÎÏ"
|
||||
|
||||
#: ccdfunc.c:685
|
||||
#: ccdfunc.c:684
|
||||
#, c-format
|
||||
msgid "Can't run shutter command %s (unsupported?)"
|
||||
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ ÚÁÔ×ÏÒÁ %s (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
||||
|
||||
#. Ð<>е могу Ñ<>охранить файл
|
||||
#: ccdfunc.c:209
|
||||
#: ccdfunc.c:208
|
||||
#, c-format
|
||||
msgid "Can't save file with prefix %s"
|
||||
msgstr "îÅ ÍÏÇÕ ÓÏÈÒÁÎÉÔØ ÆÁÊÌ Ó ÐÒÅÆÉËÓÏÍ %s"
|
||||
|
||||
#: ccdfunc.c:742
|
||||
#: ccdfunc.c:741
|
||||
#, c-format
|
||||
msgid "Can't set %d flushes"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ %d ÓÂÒÏÓÏ×"
|
||||
|
||||
#: ccdfunc.c:704
|
||||
#: ccdfunc.c:703
|
||||
msgid "Can't set IOport"
|
||||
msgstr "îÅ ÍÏÇÕ ÐÏÍÅÎÑÔØ ÚÎÁÞÅÎÉÑ ÐÏÒÔÁ I/O"
|
||||
|
||||
#: ccdfunc.c:675
|
||||
#: ccdfunc.c:674
|
||||
#, c-format
|
||||
msgid "Can't set T to %g degC"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÔÅÍÐÅÒÁÔÕÒÕ × %g ÇÒÁÄã"
|
||||
|
||||
#: ccdfunc.c:647
|
||||
#: ccdfunc.c:646
|
||||
msgid "Can't set active camera number"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÊ ËÁÍÅÒÙ"
|
||||
|
||||
#: ccdfunc.c:456
|
||||
#: ccdfunc.c:455
|
||||
msgid "Can't set active focuser number"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ÆÏËÕÓÅÒÁ"
|
||||
|
||||
#: ccdfunc.c:547
|
||||
#: ccdfunc.c:546
|
||||
msgid "Can't set active wheel number"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ËÏÌÅÓÁ"
|
||||
|
||||
#: ccdfunc.c:726 server.c:223
|
||||
#: ccdfunc.c:725 server.c:230
|
||||
#, c-format
|
||||
msgid "Can't set binning %dx%d"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÂÉÎÎÉÎÇ %dx%d"
|
||||
|
||||
#: ccdfunc.c:752
|
||||
#: ccdfunc.c:751
|
||||
msgid "Can't set bit depth"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÒÁÚÒÑÄÎÏÓÔØ áãð"
|
||||
|
||||
#: ccdfunc.c:718
|
||||
#: ccdfunc.c:717
|
||||
#, c-format
|
||||
msgid "Can't set brightness to %g"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
||||
|
||||
#: ccdfunc.c:746
|
||||
#: ccdfunc.c:745
|
||||
#, c-format
|
||||
msgid "Can't set exposure time to %f seconds"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÜËÓÐÏÚÉÃÉÀ × %f ÓÅËÕÎÄ"
|
||||
|
||||
#: ccdfunc.c:653
|
||||
#: ccdfunc.c:652
|
||||
msgid "Can't set fan speed"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ×"
|
||||
|
||||
#: ccdfunc.c:712
|
||||
#: ccdfunc.c:711
|
||||
#, c-format
|
||||
msgid "Can't set gain to %g"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ Gain × %g"
|
||||
|
||||
#: ccdfunc.c:738 server.c:224
|
||||
#: ccdfunc.c:737 server.c:231
|
||||
msgid "Can't set given geometry"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÇÅÏÍÅÔÒÉÀ"
|
||||
|
||||
#: ccdfunc.c:497
|
||||
#: ccdfunc.c:496
|
||||
#, c-format
|
||||
msgid "Can't set position %g"
|
||||
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÐÏÚÉÃÉÀ ÎÁ %g"
|
||||
|
||||
#: ccdfunc.c:491
|
||||
#: ccdfunc.c:490
|
||||
#, c-format
|
||||
msgid "Can't set position %g: out of limits [%g, %g]"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÚÉÃÉÀ %g: ×ÎÅ ÐÒÅÄÅÌÏ× [%g, %g]"
|
||||
|
||||
#: ccdfunc.c:754
|
||||
#: ccdfunc.c:753
|
||||
msgid "Can't set readout speed"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ÓÞÉÔÙ×ÁÎÉÑ"
|
||||
|
||||
#: ccdfunc.c:574
|
||||
#: ccdfunc.c:573
|
||||
#, c-format
|
||||
msgid "Can't set wheel position %d"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ %d"
|
||||
|
||||
#: ccdfunc.c:782 ccdfunc.c:830 server.c:121
|
||||
#: ccdfunc.c:781 ccdfunc.c:831 server.c:125
|
||||
msgid "Can't start exposition"
|
||||
msgstr "îÅ ÍÏÇÕ ÎÁÞÁÔØ ÜËÓÐÏÚÉÃÉÀ"
|
||||
|
||||
#. Захват кадра %d\n
|
||||
#: ccdfunc.c:780
|
||||
#: ccdfunc.c:779
|
||||
#, c-format
|
||||
msgid "Capture frame %d"
|
||||
msgstr "úÁÈ×ÁÔ ËÁÄÒÁ %d"
|
||||
|
||||
#: ccdfunc.c:672
|
||||
#: ccdfunc.c:671
|
||||
#, c-format
|
||||
msgid "Current format: %s"
|
||||
msgstr ""
|
||||
@ -232,55 +232,55 @@ msgstr ""
|
||||
msgid "Display image in OpenGL window"
|
||||
msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ × ÏËÎÅ OpenGL"
|
||||
|
||||
#: imageview.c:507 imageview.c:579
|
||||
#: imageview.c:508 imageview.c:581
|
||||
#, c-format
|
||||
msgid "Equalization of histogram: %s"
|
||||
msgstr "üË×ÁÌÉÚÁÃÉÑ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
|
||||
|
||||
#: ccdfunc.c:366
|
||||
#: ccdfunc.c:365
|
||||
msgid "Error saving file"
|
||||
msgstr "ïÛÉÂËÁ ÓÏÈÒÁÎÅÎÉÑ ÆÁÊÌÁ"
|
||||
|
||||
#: ccdfunc.c:669
|
||||
#: ccdfunc.c:668
|
||||
#, c-format
|
||||
msgid "Field of view: %s"
|
||||
msgstr "ðÏÌÅ ÚÒÅÎÉÑ: %s"
|
||||
|
||||
#: ccdfunc.c:357
|
||||
#: ccdfunc.c:356
|
||||
#, c-format
|
||||
msgid "File saved as '%s'"
|
||||
msgstr "æÁÊÌ ÓÏÈÒÁÎÅÎ ËÁË '%s'"
|
||||
|
||||
#: ccdfunc.c:414
|
||||
#: ccdfunc.c:413
|
||||
msgid "Focuser device not pointed"
|
||||
msgstr "õÓÔÒÏÊÓÔ×Ï ÆÏËÕÓÅÒÁ ÎÅ ÕËÁÚÁÎÏ"
|
||||
|
||||
#: ccdfunc.c:643
|
||||
#: ccdfunc.c:642
|
||||
#, c-format
|
||||
msgid "Found %d cameras, you point number %d"
|
||||
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ËÁÍÅÒ, ×Ù ÕËÁÚÁÌÉ %d"
|
||||
|
||||
#: ccdfunc.c:452
|
||||
#: ccdfunc.c:451
|
||||
#, c-format
|
||||
msgid "Found %d focusers, you point number %d"
|
||||
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ÆÏËÕÓÅÒÏ×, ×Ù ÕËÁÚÁÌÉ %d"
|
||||
|
||||
#: ccdfunc.c:543
|
||||
#: ccdfunc.c:542
|
||||
#, c-format
|
||||
msgid "Found %d wheels, you point number %d"
|
||||
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ËÏÌÅÓ, ×Ù ÕËÁÚÁÌÉ %d"
|
||||
|
||||
#: ccdfunc.c:666
|
||||
#: ccdfunc.c:665
|
||||
#, c-format
|
||||
msgid "Full array: %s"
|
||||
msgstr "ðÏÌÎÙÊ ÆÏÒÍÁÔ: %s"
|
||||
|
||||
#: imageview.c:387
|
||||
#: imageview.c:388
|
||||
#, c-format
|
||||
msgid "Histogram conversion: %s"
|
||||
msgstr "ðÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
|
||||
|
||||
#: ccdfunc.c:406
|
||||
#: ccdfunc.c:405
|
||||
#, c-format
|
||||
msgid "Image stat:\n"
|
||||
msgstr "óÔÁÔÉÓÔÉËÁ ÐÏ ÉÚÏÂÒÁÖÅÎÉÀ: \n"
|
||||
@ -289,27 +289,23 @@ msgstr "
|
||||
msgid "N flushes before exposing (default: 1)"
|
||||
msgstr "N ÚÁÓ×ÅÞÉ×ÁÎÉÊ ÐÅÒÅÄ ÜËÓÐÏÚÉÃÉÅÊ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 1)"
|
||||
|
||||
#: ccdfunc.c:190
|
||||
msgid "Neither filename nor filename prefix pointed!"
|
||||
msgstr "鐱 ノヘム ニチハフチ, ホノ ミメナニノヒモ ホナ ユヒチレチホル!"
|
||||
|
||||
#: server.c:163
|
||||
#: server.c:168
|
||||
msgid "No camera device"
|
||||
msgstr "îÅ ÕËÁÚÁÎÏ ÕÓÔÒÏÊÓÔ×Ï ËÁÍÅÒÙ"
|
||||
|
||||
#: ccdfunc.c:612 ccdfunc.c:613
|
||||
#: ccdfunc.c:611 ccdfunc.c:612
|
||||
msgid "No cameras found"
|
||||
msgstr "ëÁÍÅÒ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||
|
||||
#: ccdfunc.c:421
|
||||
#: ccdfunc.c:420
|
||||
msgid "No focusers found"
|
||||
msgstr "æÏËÕÓÅÒÏ× ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||
|
||||
#: ccdfunc.c:512
|
||||
#: ccdfunc.c:511
|
||||
msgid "No wheels found"
|
||||
msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||
|
||||
#: ccdfunc.c:756
|
||||
#: ccdfunc.c:755
|
||||
msgid "Only show statistics"
|
||||
msgstr "ôÏÌØËÏ ÏÔÏÂÒÁÚÉÔØ ÓÔÁÔÉÓÔÉËÕ"
|
||||
|
||||
@ -317,52 +313,52 @@ msgstr "
|
||||
msgid "PID file (default: "
|
||||
msgstr "PID-ÆÁÊÌ (ÐÏ ÕÍÏÌÞÁÎÉÀ: "
|
||||
|
||||
#: ccdfunc.c:660
|
||||
#: ccdfunc.c:659
|
||||
#, c-format
|
||||
msgid "Pixel size: %g x %g"
|
||||
msgstr "òÁÚÍÅÒ ÐÉËÓÅÌÑ: %g x %g"
|
||||
|
||||
#: ccdfunc.c:789
|
||||
#: ccdfunc.c:788
|
||||
msgid "Read grabbed image"
|
||||
msgstr "óÞÉÔÙ×ÁÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ"
|
||||
|
||||
#: ccdfunc.c:755
|
||||
#: ccdfunc.c:754
|
||||
#, c-format
|
||||
msgid "Readout mode: %s"
|
||||
msgstr "òÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ: %s"
|
||||
|
||||
#: client.c:276
|
||||
#: client.c:298
|
||||
msgid "Server timeout"
|
||||
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
|
||||
|
||||
#: ccdfunc.c:717
|
||||
#: ccdfunc.c:716
|
||||
#, c-format
|
||||
msgid "Set brightness to %g"
|
||||
msgstr "õÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
||||
|
||||
#: ccdfunc.c:654
|
||||
#: ccdfunc.c:653
|
||||
#, c-format
|
||||
msgid "Set fan speed to %d"
|
||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ× × %d"
|
||||
|
||||
#: ccdfunc.c:711
|
||||
#: ccdfunc.c:710
|
||||
#, c-format
|
||||
msgid "Set gain to %g"
|
||||
msgstr "õÓÔÁÎÏ×ÉÔØ Gain × %g"
|
||||
|
||||
#: ccdfunc.c:683
|
||||
#: ccdfunc.c:682
|
||||
#, c-format
|
||||
msgid "Shutter command: %s\n"
|
||||
msgstr "ëÏÍÁÎÄÁ ÚÁÔ×ÏÒÁ: %s\n"
|
||||
|
||||
#. "Попытка Ñ<>конфигурировать порт I/O как %d\n"
|
||||
#: ccdfunc.c:689
|
||||
#: ccdfunc.c:688
|
||||
#, 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:701
|
||||
#, c-format
|
||||
msgid "Try to write %d to I/O port"
|
||||
msgstr "ðÏÐÙÔËÁ ÚÁÐÉÓÉ %d × ÐÏÒÔ I/O"
|
||||
@ -371,11 +367,11 @@ msgstr "
|
||||
msgid "UNIX socket name"
|
||||
msgstr "éÍÑ UNIX-ÓÏËÅÔÁ"
|
||||
|
||||
#: ccdfunc.c:505
|
||||
#: ccdfunc.c:504
|
||||
msgid "Wheel device not pointed"
|
||||
msgstr "õÓÔÒÏÊÓÔ×Ï ÔÕÒÅÌÉ ÎÅ ÕËÁÚÁÎÏ"
|
||||
|
||||
#: ccdfunc.c:570
|
||||
#: ccdfunc.c:569
|
||||
#, c-format
|
||||
msgid "Wheel position should be from 0 to %d"
|
||||
msgstr "ðÏÚÉÃÉÑ ËÏÌÅÓÁ ÄÏÌÖÎÁ ÂÙÔØ ÏÔ 0 ÄÏ %d"
|
||||
@ -509,11 +505,11 @@ msgstr "
|
||||
msgid "observing program name"
|
||||
msgstr "ÎÁÚ×ÁÎÉÅ ÐÒÏÇÒÁÍÍÙ"
|
||||
|
||||
#: imageview.c:507 imageview.c:579
|
||||
#: imageview.c:508 imageview.c:581
|
||||
msgid "off"
|
||||
msgstr "×ÙËÌ"
|
||||
|
||||
#: imageview.c:507 imageview.c:579
|
||||
#: imageview.c:508 imageview.c:581
|
||||
msgid "on"
|
||||
msgstr "×ËÌ"
|
||||
|
||||
@ -592,3 +588,6 @@ msgstr "
|
||||
#: cmdlnopts.c:46
|
||||
msgid "wheel device plugin (e.g. devdummy.so)"
|
||||
msgstr "ÐÌÁÇÉÎ ÕÓÔÒÏÊÓÔ×Á ÔÕÒÅÌÉ (ÎÁÐÒÉÍÅÒ, devdummy.so)"
|
||||
|
||||
#~ msgid "Neither filename nor filename prefix pointed!"
|
||||
#~ msgstr "鐱 ノヘム ニチハフチ, ホノ ミメナニノヒモ ホナ ユヒチレチホル!"
|
||||
|
||||
4
main.c
4
main.c
@ -131,12 +131,8 @@ int main(int argc, char **argv){
|
||||
wheels();
|
||||
camerainit = prepare_ccds();
|
||||
}else{ // client mode
|
||||
#ifdef IMAGEVIEW
|
||||
if(GP->showimage) return viewer(NULL); // TODO
|
||||
#endif
|
||||
if(GP->path) return start_socket(isserver, GP->path, FALSE);
|
||||
if(GP->port) return start_socket(isserver, GP->port, TRUE);
|
||||
|
||||
}
|
||||
#ifdef IMAGEVIEW
|
||||
if(GP->showimage){ // activate image vindow in capture or simple viewer mode
|
||||
|
||||
3
omp.h
3
omp.h
@ -17,8 +17,6 @@
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#ifndef OMP_H__
|
||||
#define OMP_H__
|
||||
|
||||
#ifdef OMP_FOUND
|
||||
#include <omp.h>
|
||||
@ -34,4 +32,3 @@
|
||||
|
||||
#endif
|
||||
|
||||
#endif // OMP_H__
|
||||
|
||||
63
server.c
63
server.c
@ -70,9 +70,12 @@ strpair allcommands[] = {
|
||||
{ CMD_FGOTO, "focuser position" },
|
||||
{ CMD_FRAMEFORMAT, "camera frame format (X0,Y0,X1,Y1)" },
|
||||
{ CMD_GAIN, "camera gain" },
|
||||
{ CMD_GETIMAGE, "get image (binary data 2*w*h bytes)" },
|
||||
{ CMD_HBIN, "horizontal binning" },
|
||||
{ CMD_HEADERFILES, "add FITS records from these files (comma-separated list)" },
|
||||
{ CMD_HELP, "show this help" },
|
||||
{ CMD_IMHEIGHT, "last image height" },
|
||||
{ CMD_IMWIDTH, "last image width" },
|
||||
{ CMD_INFO, "connected devices state" },
|
||||
{ CMD_INSTRUMENT, "FITS 'INSTRUME' field" },
|
||||
{ CMD_IO, "get/set camera IO" },
|
||||
@ -141,17 +144,18 @@ static inline void cameracapturestate(){ // capturing - wait for exposition ends
|
||||
// now save frame
|
||||
if(!ima.data) LOGERR("Can't save image: not initialized");
|
||||
else{
|
||||
if(!camera->capture(&ima)) LOGERR("Can't capture image");
|
||||
else{
|
||||
if(!camera->capture(&ima)){
|
||||
LOGERR("Can't capture image");
|
||||
camstate = CAMERA_ERROR;
|
||||
return;
|
||||
}else{
|
||||
calculate_stat(&ima);
|
||||
if(saveFITS(&ima, &lastfile)){
|
||||
DBG("LAST file name changed");
|
||||
}
|
||||
}
|
||||
}
|
||||
camstate = CAMERA_FRAMERDY;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
camstate = CAMERA_ERROR;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -217,6 +221,8 @@ static int camdevini(int n){
|
||||
frameformat step;
|
||||
camera->getgeomlimits(&frmformatmax, &step);
|
||||
curformat = frmformatmax;
|
||||
DBG("\n\nGeometry format (offx/offy) w/h: (%d/%d) %d/%d", curformat.xoff, curformat.yoff,
|
||||
curformat.w, curformat.h);
|
||||
if(GP->hbin < 1) GP->hbin = 1;
|
||||
if(GP->vbin < 1) GP->vbin = 1;
|
||||
fixima();
|
||||
@ -302,14 +308,17 @@ static hresult exphandler(int fd, _U_ const char *key, const char *val){
|
||||
// show last filename of saved FITS
|
||||
static hresult lastfnamehandler(int fd, _U_ const char *key, _U_ const char *val){
|
||||
char buf[PATH_MAX+32];
|
||||
snprintf(buf, PATH_MAX+31, CMD_LASTFNAME "=%s", lastfile);
|
||||
if(lastfile && *lastfile) snprintf(buf, PATH_MAX+31, CMD_LASTFNAME "=%s", lastfile);
|
||||
else snprintf(buf, PATH_MAX+31, CMD_LASTFNAME "=");
|
||||
if(!sendstrmessage(fd, buf)) return RESULT_DISCONNECTED;
|
||||
return RESULT_SILENCE;
|
||||
}
|
||||
// filename setter/getter
|
||||
static hresult namehandler(int fd, _U_ const char *key, const char *val){
|
||||
char buf[PATH_MAX+32];
|
||||
if(val){
|
||||
DBG("filename=%s", val);
|
||||
if(val && *val){
|
||||
DBG("Make abs path");
|
||||
char *path = makeabspath(val, FALSE);
|
||||
if(!path){
|
||||
LOGERR("Can't create file '%s'", val);
|
||||
@ -319,6 +328,11 @@ static hresult namehandler(int fd, _U_ const char *key, const char *val){
|
||||
outfile = strdup(path);
|
||||
GP->outfile = outfile;
|
||||
GP->outfileprefix = NULL;
|
||||
}else{ // clear names
|
||||
DBG("Clear names");
|
||||
GP->outfileprefix = NULL;
|
||||
GP->outfile = NULL;
|
||||
return RESULT_OK;
|
||||
}
|
||||
if(!GP->outfile) return RESULT_FAIL;
|
||||
snprintf(buf, PATH_MAX+31, CMD_FILENAME "=%s", GP->outfile);
|
||||
@ -328,6 +342,7 @@ static hresult namehandler(int fd, _U_ const char *key, const char *val){
|
||||
// filename prefix
|
||||
static hresult nameprefixhandler(_U_ int fd, _U_ const char *key, const char *val){
|
||||
char buf[PATH_MAX+32];
|
||||
DBG("filename prefix=%s", val);
|
||||
if(val){
|
||||
char *path = makeabspath(val, FALSE);
|
||||
if(!path){
|
||||
@ -339,6 +354,10 @@ static hresult nameprefixhandler(_U_ int fd, _U_ const char *key, const char *va
|
||||
outfile = strdup(path);
|
||||
GP->outfileprefix = outfile;
|
||||
GP->outfile = NULL;
|
||||
}else{ // clear names
|
||||
GP->outfileprefix = NULL;
|
||||
GP->outfile = NULL;
|
||||
return RESULT_OK;
|
||||
}
|
||||
if(!GP->outfileprefix) return RESULT_FAIL;
|
||||
snprintf(buf, PATH_MAX+31, CMD_FILENAMEPREFIX "=%s", GP->outfileprefix);
|
||||
@ -378,7 +397,7 @@ static hresult binhandler(_U_ int fd, const char *key, const char *val){
|
||||
}
|
||||
return RESULT_FAIL;
|
||||
}
|
||||
static hresult temphandler(_U_ int fd, _U_ const char *key, const char *val){
|
||||
static hresult temphandler(int fd, _U_ const char *key, const char *val){
|
||||
float f;
|
||||
char buf[64];
|
||||
int r;
|
||||
@ -408,7 +427,7 @@ static hresult temphandler(_U_ int fd, _U_ const char *key, const char *val){
|
||||
return RESULT_SILENCE;
|
||||
}else return RESULT_FAIL;
|
||||
}
|
||||
static hresult camfanhandler(_U_ int fd, _U_ const char *key, _U_ const char *val){
|
||||
static hresult camfanhandler(int fd, _U_ const char *key, _U_ const char *val){
|
||||
char buf[64];
|
||||
if(val){
|
||||
int spd = atoi(val);
|
||||
@ -497,7 +516,7 @@ static hresult formathandler(int fd, const char *key, const char *val){
|
||||
char buf[64];
|
||||
frameformat fmt;
|
||||
if(val){
|
||||
if(strcmp(key, CMD_FRAMEFORMAT)) return RESULT_BADKEY; // can't set maxformat
|
||||
if(strcmp(key, CMD_FRAMEMAX)) return RESULT_BADKEY; // can't set maxformat
|
||||
if(4 != sscanf(val, "%d,%d,%d,%d", &fmt.xoff, &fmt.yoff, &fmt.w, &fmt.h)) return RESULT_BADVAL;
|
||||
fmt.w -= fmt.xoff; fmt.h -= fmt.yoff;
|
||||
int r = camera->setgeometry(&fmt);
|
||||
@ -861,6 +880,23 @@ static hresult helphandler(int fd, _U_ const char *key, _U_ const char *val){
|
||||
return RESULT_SILENCE;
|
||||
}
|
||||
|
||||
// sent to client last image
|
||||
static hresult imsendhandler(int fd, _U_ const char *key, _U_ const char *val){
|
||||
if(!ima.data || !ima.h || !ima.w) return RESULT_FAIL;
|
||||
// send image as raw data w*h*2
|
||||
if(!sendimage(fd, ima.data, 2*ima.h*ima.w)) return RESULT_DISCONNECTED;
|
||||
return RESULT_OK;
|
||||
}
|
||||
|
||||
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_OK;
|
||||
}
|
||||
|
||||
// for setters: do nothing when camera not in idle state
|
||||
static int CAMbusy(){
|
||||
if(camera && camstate != CAMERA_IDLE){
|
||||
@ -909,6 +945,9 @@ static handleritem items[] = {
|
||||
{chkcam, formathandler, CMD_FRAMEMAX},
|
||||
{chkcam, nflusheshandler, CMD_NFLUSHES},
|
||||
{NULL, expstatehandler, CMD_EXPSTATE},
|
||||
{NULL, imsendhandler, CMD_GETIMAGE},
|
||||
{NULL, imsizehandler, CMD_IMWIDTH},
|
||||
{NULL, imsizehandler, CMD_IMHEIGHT},
|
||||
{chkcam, nameprefixhandler, CMD_FILENAMEPREFIX},
|
||||
{chkcam, rewritefilehandler, CMD_REWRITE},
|
||||
{chkcam, _8bithandler, CMD_8BIT},
|
||||
|
||||
9
server.h
9
server.h
@ -17,8 +17,6 @@
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#ifndef SERVER_H__
|
||||
#define SERVER_H__
|
||||
|
||||
typedef enum{
|
||||
CAMERA_IDLE, // idle state, client send this to cancel capture
|
||||
@ -39,6 +37,11 @@ char *makeabspath(const char *path, int shouldbe);
|
||||
#define CMD_HELP "help"
|
||||
// restart server
|
||||
#define CMD_RESTART "restartTheServer"
|
||||
// get last exposed image
|
||||
#define CMD_GETIMAGE "getimage"
|
||||
// get image size in pixels
|
||||
#define CMD_IMWIDTH "imheight"
|
||||
#define CMD_IMHEIGHT "imwidth"
|
||||
|
||||
// CCD/CMOS
|
||||
#define CMD_CAMLIST "camlist"
|
||||
@ -85,5 +88,3 @@ char *makeabspath(const char *path, int shouldbe);
|
||||
#define CMD_WLIST "wlist"
|
||||
#define CMD_WDEVNO "wdevno"
|
||||
#define CMD_WPOS "wpos"
|
||||
|
||||
#endif // SERVER_H__
|
||||
|
||||
31
socket.c
31
socket.c
@ -24,8 +24,11 @@
|
||||
#include <sys/un.h> // unix socket
|
||||
#include <usefull_macros.h>
|
||||
|
||||
#include "cmdlnopts.h"
|
||||
#include "client.h"
|
||||
#include "cmdlnopts.h"
|
||||
#ifdef IMAGEVIEW
|
||||
#include "imageview.h"
|
||||
#endif
|
||||
#include "server.h"
|
||||
#include "socket.h"
|
||||
|
||||
@ -114,13 +117,34 @@ int start_socket(int isserver, char *path, int isnet){
|
||||
}
|
||||
if(isnet) freeaddrinfo(res);
|
||||
if(isserver) server(sock);
|
||||
else client(sock);
|
||||
else{
|
||||
#ifdef IMAGEVIEW
|
||||
if(GP->showimage){
|
||||
init_grab_sock(sock);
|
||||
viewer(sockcaptured); // start viewer with socket client parser
|
||||
}else
|
||||
#endif
|
||||
client(sock);
|
||||
}
|
||||
DBG("Close socket");
|
||||
close(sock);
|
||||
if(isserver) signals(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sendimage(int fd, uint16_t *data, int l){
|
||||
if(fd < 1 || !data || l < 1) return TRUE; // empty message
|
||||
DBG("send new image (size=%d) to fd %d", l, fd);
|
||||
if(l != send(fd, data, l, MSG_NOSIGNAL)){
|
||||
WARN("write()");
|
||||
LOGWARN("write()");
|
||||
return FALSE;
|
||||
}
|
||||
DBG("success");
|
||||
if(globlog) LOGDBG("SEND image (size=%d) to fd %d", l, fd);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// simple wrapper over write: add missed newline and log data
|
||||
int sendmessage(int fd, const char *msg, int l){
|
||||
if(fd < 1 || !msg || l < 1) return TRUE; // empty message
|
||||
@ -173,7 +197,7 @@ const char *hresult2str(hresult r){
|
||||
* @return `val`
|
||||
*/
|
||||
char *get_keyval(char *keyval){
|
||||
//DBG("Got string %s", keyval);
|
||||
DBG("Got string %s", keyval);
|
||||
// remove starting spaces in key
|
||||
while(isspace(*keyval)) ++keyval;
|
||||
char *val = strchr(keyval, '=');
|
||||
@ -181,6 +205,7 @@ char *get_keyval(char *keyval){
|
||||
*val++ = 0;
|
||||
while(isspace(*val)) ++val;
|
||||
}
|
||||
DBG("val = %s (%zd bytes)", val, (val)?strlen(val):0);
|
||||
// remove trailing spaces in key
|
||||
char *e = keyval + strlen(keyval) - 1; // last key symbol
|
||||
while(isspace(*e) && e > keyval) --e;
|
||||
|
||||
7
socket.h
7
socket.h
@ -17,10 +17,8 @@
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#ifndef SERSOCK_H__
|
||||
#define SERSOCK_H__
|
||||
|
||||
#include <pthread.h>
|
||||
#include <stdint.h>
|
||||
|
||||
// max & min TCP socket port number
|
||||
#define PORTN_MAX (65535)
|
||||
@ -64,10 +62,9 @@ typedef struct{
|
||||
} handleritem;
|
||||
|
||||
int start_socket(int server, char *path, int isnet);
|
||||
int sendimage(int fd, uint16_t *data, int l);
|
||||
int sendmessage(int fd, const char *msg, int l);
|
||||
int sendstrmessage(int fd, const char *msg);
|
||||
char *get_keyval(char *keyval);
|
||||
|
||||
int processData(int fd, handleritem *handlers, char *buf, int buflen);
|
||||
|
||||
#endif // SERSOCK_H__
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user